windows - Opsporing til hvilken proces en MessageBox tilhører

Indlæg af Hanne Mølgaard Plasc

Problem



Er det muligt at finde ud af, hvilken proces en MessageBox tilhører? Hvis ja, hvordan?

Bedste reference


Du vil bruge GetWindowThreadProcessId. Her er et eksempel.


#include <windows.h>

static const TCHAR g\_cszClass = TEXT("#32770"); // dialog box class

// returned handle must be closed with CloseHandle() when no longer used
HANDLE GetMessageBoxProcess(\_\_in\_z LPCTSTR lpcszTitle, \_\_in DWORD dwAccess)
{
  HWND    hWnd;
  DWORD   dwProcessId = 0;
  HANDLE  hRET;

  hWnd = FindWindow(g\_cszClass, lpcszTitle);
  if (hWnd != NULL)
  {
    GetWindowThreadProcessId(hWnd, &dwProcessId);
    if (dwProcessId != 0)
      hRET = OpenProcess(dwAccess, FALSE, dwProcessId);
  }
  return hRET;
}


Ikke sikker på hvorfor du vil have processen selv. Grunde jeg kan tænke på:



  • afslutter meddelelsesboksen helt

  • opdage en proces

  • opdage en bestemt meddelelsesboks



som alle har overlegen & mere optimale alternative løsninger.

Andre referencer 1


Et andet svar giver den programmatiske løsning. Hvis dette er en engangs ting til fejlfinding, kan du vælge vinduet med Spy ++, få proces-id'et fra egenskabsvinduet, og derefter se processen op i Task Manager.