gpt4 book ai didi

c++ - 在屏幕上定位程序位置

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:41 25 4
gpt4 key购买 nike

如果我使用 CreateProcess() 从 C++ 程序中打开 notepad.exe,是否可以找到已启动的记事本窗口的位置?我想在屏幕上找到它的 X 和 Y 位置。

代码:(根据建议改进)//有效

    Procces = CreateProcess(
"C:\\Windows\\System32\\notepad.exe",
"-l D:\\Testing.txt",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi);

WaitForSingleObject(pi.hProcess, 1000);

HWND hwndNotePad = FindWindow(NULL, "Testing.txt - Notepad");
RECT r;
if (INVALID_HANDLE_VALUE != hwndNotePad) {

GetWindowRect(hwndNotePad, &r);

cout << r.bottom << endl;
}

最佳答案

像这样:

HWND hwndNotePad = FindWindow(NULL, "Untitled - Notepad");
RECT r;
if (NULL != hwndNotePad) {
GetWindowRect(hwndNotePad, &r);
}

如果您不知道确切的名称,可以使用EnumWindows。这是我的头脑,所以可能有错误:

main()
{
//// .....
HWND hwndNotePad = NULL; // Store the result here
EnumWindows(enumProc, (LPARAM)(&hwndNotePad); // Check all windows
if (NULL != hwndNotePad) {
// Window found
RECT r;
GetWindowRect(hwndNotePad, &r);
}
//// ......
}

BOOL CALLBACK enumProc(HWND hwnd, LPARAM lParam)
{
// Get title bar text
char winTitle[256];
GetWindowText(hwnd, winTitle, 256);
if (NULL != strstr(winTitle, "Notepad")) { // Check for match
HWND *match = (HWND *)lParam;
*match = hwnd; // Save result
return FALSE; // No need to keep checking
}
else {
return TRUE; // No match. Keep checking
}
}

关于c++ - 在屏幕上定位程序位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21535140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com