【问题标题】:Delphi - Get current monitor of running process's focused window (external)Delphi - 获取正在运行的进程的焦点窗口的当前监视器(外部)
【发布时间】: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


【解决方案1】:

是的!

@Sertac Akyuz 在评论中说的是我错过的,很可能不知道如何找到。

Screen.MonitorFromWindow(FindWindowExtd('AppPartialName')).MonitorNum 就是答案!

感谢您的快速帮助!

【讨论】:

    猜你喜欢
    • 2011-09-23
    • 2018-11-14
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多