PDA

View Full Version : سوال: آیا بردن یک دکمه به برنامه دیگه خطرناکه؟



mbshareat
دوشنبه 13 خرداد 1398, 03:18 صبح
سلام
من با کد زیر و فشار Ctrl+Q میتونم یه دکمه رو به پنجره زیر مکان نما منتقل کنم.
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
Procedure WMHotkey( Var msg: TWMHotkey ) ;message WM_HOTKEY;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotkey (Handle, 1, MOD_Control, Ord('Q'));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotkey( Handle, 1) ;
end;
Procedure TForm1.WMHotkey( Var msg: TWMHotkey ) ;
Begin
If msg.hotkey = 1 Then
Windows.SetParent(Button1.Handle,WindowFromPoint(M ouse.CursorPos))
End;


تا اینجا فهمیدم بعد از این کار نمیشه با فشار دکمه بستن پنجره برنامه برنامه رو ببندم و باید قبلش اون برنامه که دکمه رو بهش منتقل کردم ببندم.اما اصلا این تغییر والد دکمه کار خطرناکی نیست؟باعث نمیشه ویندوز قاطی کنه، کامپیوتر اسم خودش رو یادش بره یا بیدار شه ببینه مرده؟
برای دلیلی انجام این کار برام مفیده.به خاطر همین واقعا جواب رو میخوام.

mbshareat
دوشنبه 13 خرداد 1398, 08:53 صبح
فکر کنم سوالم بی مورد شد.من میخواستم دکمه رو به برنامه دیگه منتقل کنم که کاربر یادش نره کاری رو انجام بده.میخواستم برنامه اجرایی با دکمه اجرا کنم.کد رو اینطور تغییر دادم دیدم دکمه بی بخاره!
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotkey (Handle, 1, MOD_Control, Ord('Q'));
Button1.Hint:=ExtractFileDir(Application.exeName);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Button1.handle,'Open',PChar(Button1.H int+'\EasyTree.exe'),'',PChar(Button1.Hint),SW_Sho wNormal);
ShowMessage(Button1.Hint);
end;


WinExec هم کار نکرد!
اگر کسی می تونه راهنمایی کنه آیا راهی هست با چنین دکمه ای برنامه اجرایی اجرا کنم؟

mbshareat
پنج شنبه 16 خرداد 1398, 15:16 عصر
فکر کنم خیلی خطرناکه.ویندوز خطاهای جدید می گیره و ...