|
var cn: array[0..255] of Char; HD: HWND; T1,T2: DWORD; begin (*获得焦点所在窗口句柄,可以是除本身外的所有其他应用程序。 如果焦点所在子窗体中,则获得的是父窗口句柄。*) HD := GetForegroundWindow; if HD > 0 then begin //通过焦点所在窗口的句柄,获得其线程的标识符 T1 := GetWindowThreadProcessId(HD); //通过本身的句柄,获得本身的线程的标识符 T2 := GetWindowThreadProcessId(Application.Handle); //共享焦点 AttachThreadInput(T2,T1,True); HD := GetFocus; if (HD > 0) then begin GetClassName(HD,cn,Length(cn)); if Trim(cn) = 'Edit' then //类名 begin SendMessage(HD,WM_SETTEXT,1,LongInt(PChar(str))); PostMessage(HD,WM_KEYDOWN,VK_RETURN,0); //发回车命令 end; end; //撤销连接 AttachThreadInput(T2,T1,False); end; //HD := GetFocus; //如果单独用,只能获得当前应用程序的焦点所在控件的句柄。 end; |