Quelqu'un peut-il me dire comment je peux capturer un processus de course en C # en utilisant la classe de processus si je connais déjà la poignée? P>
ID ne dispose pas d'énumérer la méthode des processus de getRunning non plus. Pinvoke est correct si possible. P>
4 Réponses :
Dans la plaine C #, on dirait que vous devez la boucler tous:
[DllImport("kernel32.dll")] static extern int GetProcessId(IntPtr handle);
J'ai accès à un message refusé (Exception Win32)?
Correction, mais vous devriez peut-être utiliser le Winapi à la place. C'est ce que vous avez préféré en premier lieu :)
processus.Handle donne accès refusé mais. processus.MainWindowhandle b> fonctionne sans erreur
Bad -1 ... Mainwindowhandle est pour quelque chose de complètement différent.
using System.Diagnostics; class ProcessHandler { public static Process FindProcess( IntPtr yourHandle ) { foreach (Process p in Process.GetProcesses()) { if (p.Handle == yourHandle) { return p; } } return null; } }
Il semble y avoir un moyen simple de le faire par l'API .NET. La question est de savoir où vous avez eu cette poignée? Si de la même manière, vous pouvez avoir accès à l'ID de processus, vous pouvez utiliser: p>
processus.getProcessByID (int ID) code> p>
L'obtenir par ID serait certainement meilleur / plus facile, mais il est possible par la poignée. Voir les autres réponses.
une API expose le HWND mais pas l'ID
La question demeure, où vient le manche. Si une API Win32 est utilisée, un autre appel d'API doit peut-être être émis pour obtenir l'ID de processus de la poignée. Un autre problème est que les poignées ne sont valables que dans le même processus, IDS sont larges du système
Ouais, je suis d'accord que d'avoir une poignée, mais pas une pièce d'identité n'est très étrange.
Vous pouvez utiliser l'appel Winapi GetWindowThreadProcessID Winapi P>
http://www.pinvoke.net/default.aspx/user32 /KetwindowthreadProcessid.html p>
Pour obtenir l'ID de processus - puis obtenir un objet de processus en utilisant celui-ci ..... p>
Mais pourquoi ne voulez-vous pas énumérer les ID des processus de course? P>
Celui-ci prend une poignée de fenêtre. Il a un processus de processus. Le Winapi getProcessid code> est ce dont il a besoin.