本文整理自网络,侵删。
unit SysFocus;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs;
type
TSysFocus=class(TComponent)
public
function GetSysFocus:integer;
function SetSysFocus(hwnd:integer):integer;
end;
implementation
function TSysFoucs.GetSysFocus;//取当前活动窗口
var
hOtherWin,OtherThreadID,hFocusWin:integer;
begin
hOtherWin:=GetForegroundWindow;
OtherThreadID:=GetWindowThreadProcessID(hOtherWin,nil);
if AttachThreadInput(GetcurrentThreadID,OtherThreadID,True) then
begin
hFocusWin:=GetFocus;
result:=GetFocus;
if HFocusWin<>0 then
try
//SendMessage(GetFocus,WM_COPY,0,0);//书上是这么写的
finally
AttachThreadInput(GetcurrentThreadID,OtherThreadID,False);
end;
end
else result:=GetFocus;
end;
function TSysFocus.SetSysFocus(hwnd:integer):integer;//设置某窗口为活动窗口
var
hOtherWin,OtherTHreadID,hFocusWin:integer;
begin
hOtherWin:=GetForegroundWindow;
OtherThreadID:=GetWindowThreadProcessID(hOtherWin,nil);
if AttachThreadInput(GetcurrentThreadID,OtherThreadID,True) then
begin
hFocusWin:=GetFocus;
SetFocus(hwnd);
//SendMessage(hwnd,WM_COPY,0,0);
if hFocusWin<>0 then
try
//SendMessage(GetFocus,WM_COPY,0,0);
finally
AttachThreadInput(GetCurrentTHreadID,OtherTHreadID,False);
end;
end
else result:=SetFocus(hwnd);
end;
end.
相关阅读 >>
Delphi 2009 中 tstrings 与 tstream 的增强
Delphi qr /条形码扫描仪应用示例代码(使用zxing,tframestand)
Delphi dbgrideh 的分组统计 datagrouping
更多相关阅读请进入《Delphi》频道 >>