pubs.h 793 B

123456789101112131415161718192021222324252627282930313233
  1. #if defined(IS_WINDOWS)
  2. BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
  3. uint32_t *count = (uint32_t*)dwData;
  4. (*count)++;
  5. return TRUE;
  6. }
  7. typedef struct{
  8. HWND hWnd;
  9. DWORD dwPid;
  10. }WNDINFO;
  11. BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
  12. WNDINFO* pInfo = (WNDINFO*)lParam;
  13. DWORD dwProcessId = 0;
  14. GetWindowThreadProcessId(hWnd, &dwProcessId);
  15. if (dwProcessId == pInfo->dwPid) {
  16. pInfo->hWnd = hWnd;
  17. return FALSE;
  18. }
  19. return TRUE;
  20. }
  21. HWND GetHwndByPid(DWORD dwProcessId) {
  22. WNDINFO info = {0};
  23. info.hWnd = NULL;
  24. info.dwPid = dwProcessId;
  25. EnumWindows(EnumWindowsProc, (LPARAM)&info);
  26. return info.hWnd;
  27. }
  28. #endif