نحوه اجرای دستورات MsPaint از طریق خط فرمان
سلام بدوستان
آیا در MsPaint میتونیم Save و Save As و بقیه ی دستورات رو از طریق خط فرمان اجرا کنیم؟
اجرای دستورات پینت از طریق خط فرمان رو جستجو کردم ولی چیزی پیدا نکردم
من این کار رو از طریق دلفی میخوام انجام بدم مثلا: Winexe(d:\MsPaint.exe c:\1.jpg d:\2.jpg /Save as)
لطفا راهنمایی کنید. متشکرم
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
سلام. چه نیازی اصلا به MsPaint هست؟ مستقیم کپی کنید بره دیگه.
در ضمن اون دستور WinExec رو دیگه استفاده نکنید، ممکنه دیگه ساپورت نشه
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
برای باز کردن با MsPaint میتونید این رو به کار ببرید
Uses
ShellApi;
...
ShellExecute(Handle, 'open', PChar('mspaint'), PChar('c:\A.bmp'), nil,
SW_SHOW);
اما برای ذخیره CopyFile('c:\A.bmp','c:\B.bmp',False)
; کافیه
کار با هندل برنامه ها هم ممکنه براتون جالب باشه که زیاد وارد نیستم.یه مثال کار با نوت پد این هست(بعد از باز کردن نوت پد این کد رو اجرا کنید:
var
notepad, edit: HWND;
begin
notepad := FindWindow('notepad', nil);
edit := FindWindowEx(notepad, FindWindow('Edit', nil), nil, nil);
SendMessage(edit, WM_CHAR, dword('H'), 0);
SendMessage(edit, WM_CHAR, dword('e'), 0);
SendMessage(edit, WM_CHAR, dword('y'), 0);
end;
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
function FindWindowByTitle(WindowTitle: string): THandle;
Function WindowClassName(H:THandle):String;
Var
aName:array [0..255] of char;
begin
GetClassName(H,aName, 256);
Result:=aName;
end;
var
NextHandle: THandle;
NextTitle: array[0..260] of char;
begin
NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
while NextHandle > 0 do
begin
GetWindowText(NextHandle, NextTitle, 255);
if (Pos(WindowTitle, StrPas(NextTitle)) <> 0)
And (WindowClassName(NextHandle)<>'CabinetWClass') then
begin
Result := NextHandle;
Exit;
end
else
NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
end;
Result := 0;
end;
procedure ClickXY(X,Y:Word;LeftButton:Boolean=True);
var
Pnt : TPoint;
begin
Application.ProcessMessages;
Pnt.x := Round(X * (65535 / Screen.Width)) ;
Pnt.y := Round(Y * (65535 / Screen.Height)) ;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pnt.x, Pnt.y, 0, 0) ;
If LeftButton=True then
Begin
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LeftDOWN, Pnt.x, Pnt.y, 0, 0) ;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LeftUP, Pnt.x, Pnt.y, 0, 0) ;
End
Else
Begin
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RightDOWN, Pnt.x, Pnt.y, 0, 0) ;
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RightUP, Pnt.x, Pnt.y, 0, 0) ;
End;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
WindowRect, WindowClientRect: TRect;
Origin: TPoint;
Ofs: TPoint;
Handle:THandle;
begin
Handle:= FindWindowByTitle('Paint');
If Handle=0 then
Begin
ShowMessage('MsPaint is not Running!')
Exit;
End;
ForceForegroundWindow(Handle);
GetWindowRect(Handle,WindowRect);
ClickXY(WindowRect.Left+10,WindowRect.Top+50,True) ;
end;
وقتی MsPaint باز بود میتونید اجرا کنید.
کد باز کردن برنامه هم نوشتم خوب کار نکرد:بامزه:
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
ضمن تشکر از راهنمایی مدیر محترم و بقیه دوستان
ببینید من یک فایل عکس دارم از نوع bmp که این فایل باید:
1- باز بشه
2- ادیت بشه
3- در یک فایل با نام جدید save as بشه
این کار باید حدود 200 یا 300 بار انجام بشه (یعنی فایل عکس اصلی 300 بار ویرایش شده و ذخیره میشه یعنی 300 فایل bmp جدید در کنار فایل اصلی ساخته میشه)
این کار برای یک فایل bmp انجام میشه تعداد فایلهای bmp حدود 500 تا هست یعنی اگه بخوام دستی این کار رو در برنامه paint انجام بدم 150000 بار باید save as کنم :ناراحت:
منظور من اینه که برای راحتی کار در محیط دلفی با کد نویسی این کار رو انجام بدم
متشکرم
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
سلام. فایل رو با دلفی با شی TBitMap باز کنید، ادیت کنید، سیو کنید. به همین راحتی. پینت و شل هم نیازی ندارید.
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
ممنون از لطف شما واقعا امیدوارم به همین راحتی که گفتید باشه
برای open کردن فایل عکس و save as کردنش میشه از:
bitmap.LoadFromFile
bitmap.SaveToFile
استفاده کرد ولی برای ویرایش عکس مثل محیط MsPaint باید چکار کنم؟
امکانش هست یه مثال بزنید لطفا
متشکرم
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
ویرایش از قبل مشخصه؟ چه کاری روش می خواهید انجام بدید؟ واترمارک؟
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
نقل قول:
نوشته شده توسط
یوسف زالی
ویرایش از قبل مشخصه؟ چه کاری روش می خواهید انجام بدید؟ واترمارک؟
ممنون از شما که وقت میگذارید امیدوارم این برنامه اونطور که میخوام به نتیجه برسه
منظورم از ویرایش فایل دقیقاْ همون کارهایی هست که در برنامه ی MsPaint بر روی یک فایل عکس(BMP) میشه انجام داد مثل: Cut, Paste, Copy, Select, Select All, Zoom in, Zoom Out
توضیح اینکه ویرایش روی فایل BMP اصلی باید کاملا دستی انجام بشه چون تمام فایلهای BMP اصلی (حدود۵۰۰ فایل) با هم فرق دارن و ویرایش اونهارو نمیشه با کد نویسی انجام داد
فقط Open و Save As کردن فایل اصلی بوسیله ی کد نویسی انجام میشه.
مثلا یه فرم داریم که دوتا Button داره یکی Open و یکی Save As با زدن کلید Open فایل عکس مورد نظر (یعنی فایل اصلی) باز میشه
و من بصورت دستی ویرایش های لازم مثل (...-cut-paste-select) رو انجام میدم
و بعد با زدن کلید Save As فایل اصلی ویرایش شده با اسم جدید (که این اسم بوسیله برنامه ایجاد شده) ذخیره میشه.
نقل قول: نحوه اجرای دستورات MsPaint از طریق خط فرمان
اگر اوتاماتیک نمی شه کرد به نظر تنها راه همین بود که دوستمون براتون توضیح داد.