如何实现我在主题中所写的内容?我可以访问我的节点应用程序中的win32api,并且我知道我想要更改的窗口processID。我知道函数EnumWindows()
和GetWindowThreadProcessId()
在这方面会很有用,但我甚至不知道将什么作为参数传递给EnumWindows()
,以及这个函数将返回什么。
使用EnumWindows
时,首先需要确保您的窗口是顶级的。
该功能有两个参数:
lpEnumFunc
类型:WNDENUMPROC
指向应用程序定义的回调函数的指针。了解更多信息信息,请参见
EnumWindowsProc
。lParam
类型:LPARAM
要传递给回调函数的应用程序定义的值。(您可以将进程id传递给它(
您可以在回调EnumWindowsProc
中调用GetWindowThreadProcessId
,并与找到的每个窗口的进程id进行比较。
这是C++中的示例:
#include <windows.h>
#include <iostream>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD *pid = (DWORD*)(lParam);
DWORD processId;
if (GetWindowThreadProcessId(hwnd, &processId) && processId == *pid)
{
WCHAR Title[MAX_PATH] = { 0 };
GetWindowTextW(hwnd,Title, MAX_PATH);
wprintf(L"Title : %sn", Title);
SetWindowTextW(hwnd, L"TestTitle");
return FALSE; //end enumerating;
}
// Continue enumerating
return TRUE;
}
int wmain(int argc, wchar_t* argv[])
{
DWORD pid = 11244;//set the process id you have.
BOOL bResult = EnumWindows(EnumWindowsProc,(LPARAM)&pid);
return 0;
}
关于在node.js中使用EnumWindowsProc
回调,您可以参考此示例。