如何將 Keydown 事件送到指定 Form 中的 ActiveControl |
答題得分者是:hagar
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
若 Form2 是另一支獨立的 exe 檔
以下從 Form1 送一按鍵到 Form2
但似乎只能從 Form2 的 FormKeyDown 收到事件
而 Form2 上的 ActiveContrl (如 edit1)
收不到 OnKeyDown 事件 ... procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var DestHandle:HWND;
begin
DestHandle := FindWindow(nil, 'Form2');
BringWindowToTop(DestHandle) ; PostMessage(DestHandle,WM_KEYDOWN,Key,Key);
end;
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var DestHandle:HWnd; DestHandle2:HWnd; begin DestHandle := FindWindow(nil, 'Form2'); Memo1.Lines.Add(IntToStr(DestHandle)); BringWindowToTop(DestHandle) ; //使用 GetFocussedWindow 的方法 (要先取得父視窗) //DestHandle2:=GetFocussedWindow(DestHandle); //PostMessage(DestHandle2,WM_KEYDOWN,Key,Key); //使用 GetSysFocus 的方法 PostMessage(GetSysFocus,WM_KEYDOWN,Key,Key); end; //------------------------------------------------------------------------- function TForm1.GetFocussedWindow(ParentWnd:HWnd):HWnd; var OtherThreadID,Buffer : DWord; begin OtherThreadID:=GetWindowThreadProcessID(ParentWnd, @Buffer); if AttachThreadInput(GetCurrentThreadID, OtherThreadID, true) then begin Result:=GetFocus; AttachThreadInput(GetCurrentThreadID, OtherThreadID, false); end else Result:=0; end; //------------------------------------------------------------------------- function TForm1.GetSysFocus : HWnd; Var hOtherWin,OtherThreadID,hFocusWin : HWnd; begin hOtherWin := GetForegroundWindow; OtherThreadID := GetWindowThreadProcessID( hOtherWin, nil); if AttachThreadInput( GetCurrentThreadID, OtherThreadID, true ) Then begin hFocusWin := GetFocus; result := GetFocus; AttachThreadInput( GetCurrentThreadID, OtherThreadID, False ); end else result := getFocus; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |