私はデータベース内のそのアプリケーションのファンタム加入者を得ることができるようにアプリケーションを大雑把に殺す必要があります(これはアプリケーションを閉じることによっては生成できません)。手動で、タスクマネージャからアプリケーションを終了すると、ファントム加入者が存在します。今私はVB 6のコードでそれを自動的に行う必要があります。助けて!ありがとう。VB6コードを使用したタスクマネージャからの終了プロセス
答えて
2つの方法があります。 1. WM_CLOSEにウィンドウがある場合は非表示/非表示のWM_CLOSEを送信します。タスクマネージャの「タスクの終了」は、このメソッドを使用します。ほとんどのアプリケーションはWM_CLOSEを処理し、正常終了します。 2. TerminateProcess APiを使用して強制的に強制終了 - タスクマネージャの「プロセスの終了」では、この方法が使用されます。このAPIは強制的にプロセスを終了させます。
例は、ここで見つけることができる: http://www.vb-helper.com/howto_terminate_process.html
TaskKillコマンドでコールShellExecute
TASKKILL [/ Sシステム[/ Uユーザー名[/ P [パスワード]]]] { [/ FIフィルタ] [/ PIDのprocessid |このツールは、プロセスID(PID)またはイメージ の名前でタスクを終了するために使用されます。 VB6のコードの
Option Explicit
Private Declare Function IsWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Target As String
'---------------------------------------------------------------------------------------
' Creation Date : 24/10/2005 09:03
' Created By : Jason Bruwer
' Purpose : Returns the windows handle of a window if you know the name
' : E.g.
' Microsoft Word
' Microsoft Excel
' Microsoft PowerPoint
' Adobe Reader
' Updated By : [Initials] - [Date] - [Changes]
'---------------------------------------------------------------------------------------
Public Function GetWindowsHandle(WindowName As String, hWindow As Long) As Boolean
On Error GoTo Errors
' Get the target's window handle.
hWindow = FindWindow(vbNullString, WindowName)
If hWindow = 0 Then GoTo Cheers
GetWindowsHandle = True
Cheers:
Exit Function
Errors:
frmMain.LogErrorAcrossUsingRBT ("GetWindowsHandle")
GoTo Cheers
End Function
'---------------------------------------------------------------------------------------
' Creation Date : 24/10/2005 09:03
' Created By : Jason Bruwer
' Purpose : Enumerates all the currently open windows and searches for an application
' with the specified name.
' Updated By : [Initials] - [Date] - [Changes]
'---------------------------------------------------------------------------------------
Public Function TerminateTask(app_name As String) As Boolean
On Error GoTo Errors
Target = UCase(app_name)
EnumWindows AddressOf EnumCallback, 0
TerminateTask = True
Cheers:
Exit Function
Errors:
frmMain.LogErrorAcrossUsingRBT ("TerminateTask")
GoTo Cheers
End Function
'---------------------------------------------------------------------------------------
' Creation Date : 24/10/2005 09:04
' Created By : Jason Bruwer
' Purpose : Checks to see if this is the window we are looking for and then trys
' to kill the application
' Updated By : [Initials] - [Date] - [Changes]
'---------------------------------------------------------------------------------------
Public Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long
Dim buf As String * 256
Dim title As String
Dim length As Long
' Get the window's title.
length = GetWindowText(app_hWnd, buf, Len(buf))
title = Left$(buf, length)
'If title <> "" Then Debug.Print title
' See if this is the target window.
If InStr(UCase(title), Target) <> 0 Then
' Kill the window.
If Not KillProcess(app_hWnd) Then Exit Function
End If
' Continue searching.
EnumCallback = 1
End Function
'---------------------------------------------------------------------------------------
' Creation Date : 24/10/2005 09:06
' Created By : Jason Bruwer
' Purpose : Trys to kill an application by using its windows handle
' Updated By : [Initials] - [Date] - [Changes]
'---------------------------------------------------------------------------------------
Public Function KillProcess(hWindow As Long) As Boolean
Dim RetrunValue As Long
Dim ProcessValue As Long
Dim ProcessValueID As Long
Dim ThreadID As Long
On Error GoTo Errors
If (IsWindow(hWindow) <> 0) Then
ThreadID = GetWindowThreadProcessId(hWindow, ProcessValueID)
If (ProcessValueID <> 0) Then
App.LogEvent "Warning...killing orphan process..."
ProcessValue = OpenProcess(PROCESS_ALL_ACCESS, CLng(0), ProcessValueID)
RetrunValue = TerminateProcess(ProcessValue, CLng(0))
CloseHandle ProcessValueID
End If
End If
KillProcess = True
Cheers:
Exit Function
Errors:
frmMain.LogErrorAcrossUsingRBT ("KillProcess")
GoTo Cheers
End Function
カール・ピーターソンの優れたアーカイブには、WM_CLOSEとのTerminateProcessの両方を使用して、高品質sample code and full explanationsを持っています。代用品を受け入れないでください!
WM_CLOSEをに送信すると、たくさんのコードが表示される可能性があります。単一のウィンドウハンドルでは不十分です。ほとんどのアプリケーションは、多数のウィンドウで構成されています。カールのコードで実行される答え:このアプリケーションに属するすべてのトップレベルのウィンドウを見つけて、それぞれにメッセージを送信します。
Shell "taskkill.exe /f /t /im processname.exe"
この力(/f
)processname.exeのイメージ名(/im
)、およびそれによって開始されたすべての子プロセス(/t
)とプロセスのterminatation。これらのスイッチはすべて必要ではないかもしれません。 (コマンドラインで次のように入力します)詳細については、taskkill
コマンドのヘルプを参照してください:
taskkill/?
使用VB6.0 TaskKill
Private Sub Command1_Click()
Shell "taskkill.exe /f /t /im Application.exe"
End Sub
- 1. CのProcess.Kill()で終了したプロセスの終了コード
- 2. PHPStorm - 終了コード255で終了したプロセス
- 3. IntelliJプロセスは、スプリングブート実行時に終了コード0で終了しました。
- 4. Perlを使用してプロセスを終了するためのポーリング
- 5. タスクマネージャでプロセスを終了すると、GCはまだクリーンアップされますか?
- 6. セレンテストケースが返されます終了コード0で終了したプロセス
- 7. sudo実行プロセスから終了コードを取得する
- 8. プロセスが強制的に強制終了された場合の終了コード
- 9. iPhone:マルチタスクからプロセスを終了する
- 10. Qt:gdbプロセスが突然終了しました(コード127)
- 11. TeamCityビルド "コード128でプロセスが終了しました"
- 12. 奇妙なSSISエラー(プロセス終了コード255)
- 13. 終了時にプロセスを終了する
- 14. pythonプロセスが終了したときにサブプロセスを終了しますか?
- 15. Yawsプロセスが終了しました
- 16. ActivityManagerプロセスが終了しました
- 17. VB6コードを使用したASP.NET
- 18. プロセス終了コード1181どういう:「ジャーナルエントリがジャーナルから削除されたが、」
- 19. 起動プロセスおよびタスクマネージャから
- 20. C#:プロセスの終了時にプロセスが終了する(タスクマンで)
- 21. 通常ProcessBuilderを使用してプロセスを終了する方法
- 22. Ruby:Chromeのプロセスを終了
- 23. spawnvを使って作成したプロセスを終了する
- 24. Javaを使用したプログラムの終了
- 25. C#が、私は次のコードしているプロセスの終了
- 26. 成功した終了コードでJobExecutionDeciderを終了する方法
- 27. シミュレーションが終了コードで終了しました:132
- 28. 終了コード(PM_ASSERT_ERROR)でプロセスタスクが異常終了しました
- 29. 失敗したコマンドから終了コード0を返す方法
- 30. プロセスを終了してからmysqlを再起動
それは動作しますが、ありがとうございます! – oliverwood