2013-08-12 28 views
19

Bir işlemin belirli bir PID alma ile ilgili bir sorunum var, bu işlemin bir sorun, bu gizli bir işlem olduğunu, tamamen gizli, görev yöneticisi/powershell üzerinde görünmüyor olmasıdır. i kadar bunu nePencere tanıtıcısı tarafından işlem kimliğini bulun

soru i pid almak nasıl olduğunu, bu sürecin ana pencere kolu olduğunu. i yapmaya çalışıyorum neyi

bu sürecin bellek okumak ve düzenlemek için, ama (ben bellekte baz adresim almak gerekir beri) sanırım PID olmadan yapamaz. Herkes benim için herhangi bir geçici çözüm veya bir şey varsa

Yani, harika olacak.

P.S: Bu işlem Process.GetProcesses() içinde görünmez.

ty!

+0

İşlem kimliğine ihtiyacınız var mı? – Aravind

cevap

34

Aşağıdaki Windows API kullanabilirsiniz:

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

Sen HWND geçmek ve PID dönmek için dışarı parametresini kullanın.

MSDN'de burada bu fonksiyon hakkında daha fazla bilgi edinebilirsiniz - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx

+0

teşekkürler alot dostum, bir çekicilik gibi çalışıyor :) –

7

Windows API ile çağırmak/P kullanmanız gerekecektir.

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

gibi sınıfta bir fonksiyonu bildirmek ve daha sonra sınıfta diyoruz.

Bkz. PInvoke.

+0

Pinvoke.net 'i buldum, ama haklısın! –

+0

Bu aslında 0 döndürür, benim için çalışmıyor ama yanıt verdiğin için teşekkürler. –

İlgili konular