如何从进程ID 获取主窗口句柄?
我想把这个窗口带到前面.
它在"Process Explorer"中运行良好.
你能帮我找到ID过程给定的主(唯一)线程ID吗?
任务上下文:正在运行的进程(目前)没有窗口,只有(某些)线程.
通缉:WM_QUIT
仅在主线上发布.
不需要:在非主线程上使用TerminateProcess
或发布WM_QUIT
.
我想将wm_close发送到另一个进程,并希望通过该进程安全地结束该进程。
int _tmain(int argc, _TCHAR* argv[])
{
DWORD SetOfPID;
SetOfPID = GetProcId(_T("abc.exe")); //this will return pid
HANDLE h = OpenProcess(PROCESS_ALL_ACCESS,false, SetOfPID);
HWND hwnd = ::GetTopWindow(NULL);
while(hwnd)
{
DWORD pid;
DWORD dwThreadId = ::GetWindowThreadProcessId(hwnd, &pid);
if(pid == SetOfPID)
{
break;
}
hwnd = ::GetNextWindow(hwnd, GW_HWNDNEXT);
}
//DestroyWindow(hwnd);
bool temp = IsWindow(hwnd); **//this gives true**
LRESULT res = ::SendMessage(hwnd, WM_CLOSE, NULL, NULL);
DWORD err = GetLastError(); **//this gives 6**
CloseHandle(hwnd);
CloseHandle(h);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码看起来不错,但是目标进程没有终止,有人可以帮我吗?