Trova l’ID del processo tramite l’handle della finestra

Ho un problema con l’ottenimento di un PID specifico di un processo, il problema con questo processo è che si tratta di un processo nascosto, che non viene mostrato su Task Manager / PowerShell, completamente nascosto.

quello che ho fatto è l’handle della finestra principale di questo processo, la domanda è, come posso ottenere il pid di esso.

quello che sto cercando di fare è leggere la memoria di questo processo e modificarlo, ma non posso farlo senza il PID credo (dal momento che ho bisogno di ottenere il suo indirizzo di base in memoria).

Quindi, se qualcuno ha qualche soluzione o qualcosa per me, sarà fantastico.

PS: questo processo non viene mostrato in Process.GetProcesses ().

ty!

È ansible utilizzare la seguente API di Windows:

[DllImport("user32.dll", SetLastError=true)] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId); 

Si passa in HWND e si utilizza il parametro out per restituire il PID.

Puoi leggere di più su questa funzione qui su MSDN – http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx

Dovrai usare P / invocare con l’API di Windows.

Dichiara una funzione nella tua class come

  [DllImport("User32.dll")] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); 

e poi chiamalo nella tua class.

Vedi PInvoke .