答えて
処理していないそのプロセスの名前を持っているために他の実行中のプロセス
に近いMessgeを送信したいです.NETを指定する)、次のコードできます。基本的にはどのようなこのコードはありませんが、あなたが欲しいものを見つけるために現在実行中のすべてのプロセスを列挙する
''#Module-level WinAPI Declarations
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Const TH32CS_SNAPPROCESS As Long = 2&
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szexeFile As String * 260
End Type
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
''#Public function to actually kill a process, given its name
Public Sub KillProcess(ByVal ProcessName As String)
Dim uProcess As PROCESSENTRY32
Dim RProcessFound As Long
Dim hSnapshot As Long
Dim SzExeName As String
Dim ExitCode As Long
Dim MyProcess As Long
Dim AppKill As Boolean
Dim AppCount As Integer
Dim i As Integer
If LenB(ProcessName) <> 0 Then
AppCount = 0
uProcess.dwSize = Len(uProcess)
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
RProcessFound = ProcessFirst(hSnapshot, uProcess)
Do
i = InStr(1, uProcess.szexeFile, Chr(0))
SzExeName = LCase$(Left$(uProcess.szexeFile, i - 1))
If Right$(SzExeName, Len(ProcessName)) = LCase$(ProcessName) Then
AppCount = AppCount + 1
MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
AppKill = TerminateProcess(MyProcess, ExitCode)
Call CloseHandle(MyProcess)
End If
RProcessFound = ProcessNext(hSnapshot, uProcess)
Loop While RProcessFound
Call CloseHandle(hSnapshot)
End If
End Sub
です殺すため。 CreateToolHelpSnapshot
API functionはプロセスのスナップショットを返し、次にProcess32First
とProcess32Next
の関数でこのスナップショットをループします。指定した名前と一致するものが見つかると、TerminateProcess
functionを使用してそのプロセスとそのスレッドをすべて終了します。 これは、Windows XP以降のバージョンではテストされていないことに注意してください。
あなたが流暢にWin32のを話す場合は、次のMSDNの記事を参照してください。Taking a Snapshot and Viewing Processes
あなたがインターネット上で見つけるの例の多く(すなわち、option one、option two)に関連付けられたウィンドウにWM_CLOSE
messageを送信するためにEnumWindows
を使用特定のプロセス。これは、WM_CLOSE
メッセージを送信すると、データを保存して正常に終了することができます。上記の例で使用されているTerminateProcess
はあまりいいことではありません。それは即座にbuzz-killです。しかし、それはは、ウィンドウを所有していないプロセスを終了することができます。これが質問の要件であるかどうかは言及していません。
(正直なところ、この質問にお答えしようとしているの企業には質問がありませんが、私は遅れています。私に知らせるためにコメントを追加してください...)
- 1. Golandで実行中のプロセスを強制終了するカスタム信号を送信するには?
- 2. 実行中のPythonプロセスを強制終了するには?
- 3. 実行中のすべてのプロセスをPythonで終了する
- 4. Pycharm:実行中のすべてのプロセスを終了する
- 5. アプリケーションの実行中にExcelプロセスが終了しない理由
- 6. 実行中のプロセスにsslsocketを送信する方法
- 7. メインのUWPプロセスからUWPアプリケーションのwin32プロセスを終了するか、それにメッセージを送信します。
- 8. 長時間実行中のFastcgiプロセスを強制終了する
- 9. プロセスから実行中のプログラムを終了する
- 10. 実行中のLinuxプロセスにCtrl-Breakを送信するにはどうすればよいですか?
- 11. 実行中のプロセスを強制的に強制終了するには?
- 12. valgrind内で実行中のプロセスを終了します
- 13. 実行中のプロセスの終了時にkivyポップアップが表示される
- 14. ターミナルコマンド:実行中のプロセスの開始または終了
- 15. 実行時に実行中のwhileループを終了する
- 16. 実行中のサブプロセスコールを終了する
- 17. アプリが実行中の状態でspark-submitプロセスを強制終了するかどうかを知るには?
- 18. 実行時に子プロセスの終了シグナルを変更する
- 19. スクリプトの実行後にPowerShellプロセスを終了する
- 20. Win32:他のアプリケーションの終了/終了の通知メッセージを取得
- 21. コマンドプロンプトの終了時に実行するプロセス
- 22. 終了時にプロセスを終了する
- 23. メッセージの送受信にどのようにアプローチするか
- 24. C#:プロセスの終了時にプロセスが終了する(タスクマンで)
- 25. 別のプロセスからメッセージを終了するには?
- 26. VBでいくつかのプロセスを終了しますか?
- 27. 実行中のLinuxプロセスを中断して終了すると、どのようなクリーンアップルーチンが実行されますか?
- 28. プロセスを終了するときにlogout()を実行するにはどうすればよいですか?
- 29. Pythonプロセスが終了したときにatexit()を実行する
- 30. Java:他のプロセスを実行中にソケットからリスンする
vb6または.netはクエストオンですか? – rerun