【发布时间】:2015-09-20 19:03:10
【问题描述】:
所以,正如标题中提到的,我在确定哪个监视器(在多屏情况下)是运行的外部进程(应用程序)。
我知道我的表单可以通过TForm.Monitor.MonitorNum属性来识别,目前我可以通过网上得到的FindWindowExtd函数获取到外部进程的句柄。
稍后我会检查GetForegroundWindow = FindWindowExtd('App Partial Title'),所以我只在外部应用程序有焦点时才执行我的程序。
由于我正在使用鼠标模拟器,因此识别屏幕 ID 也很重要,因为该应用程序具有焦点。
我怎么能这样做?网络今天也让我对此感到厌烦......
这里是 FindWindowExtd 的代码:
function FindWindowExtd(partialTitle: string): HWND;
var
hWndTemp: hWnd;
iLenText: Integer;
cTitletemp: array [0..254] of Char;
sTitleTemp: string;
begin
hWndTemp := FindWindow(nil, nil);
while hWndTemp <> 0 do begin
iLenText := GetWindowText(hWndTemp, cTitletemp, 255);
sTitleTemp := cTitletemp;
sTitleTemp := UpperCase(copy( sTitleTemp, 1, iLenText));
partialTitle := UpperCase(partialTitle);
if pos( partialTitle, sTitleTemp ) <> 0 then
Break;
hWndTemp := GetWindow(hWndTemp, GW_HWNDNEXT);
end;
result := hWndTemp;
end;
我可以从手柄中获得一些帮助吗?
谢谢!
【问题讨论】:
-
查看 MonitorFromWindow。
-
@SertacAkyuz 正是我想要的!感谢您的即时帮助!!!
标签: delphi screen monitor hwnd window-handles