Код
int pid = (ProcessID != 0)? ProcessID : int(GetCurrentProcessId());
HANDLE hss = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (int(hss) == (-1)) return false;
THREADENTRY32 thr;
thr.dwSize = sizeof(thr);
bool ret;
try {
for (bool loop = Thread32First(hss, &thr); loop; loop = Thread32Next(hss, &thr))
{ if ( int(thr.th32OwnerProcessID) != pid) continue;
...
HWND mhwnd = 0;
EnumThreadWindows(thr.th32ThreadID, (WNDENUMPROC)My1_EnumThreadWndProc, long(&mhwnd));
tnp->Code3 = long(mhwnd);
...
}
ret = true;
} // try
catch (...) { ... ret = false; }
CloseHandle(hss);
return ret;
}
BOOL CALLBACK My1_EnumThreadWndProc
(HWND hwnd // handle to window
,LPARAM lParam // application-defined value
)
{
*((HWND*)lParam) = hwnd;
return false;
}
Может ли кто-нибудь переложить это на Делфи, оформить в виде функции, принимающей дескриптор процесса, и возвращающий дескриптор окна?
Буду благодарен!