タイトル | : 外部のアプリを起動して終了させてもタスクバーのアイコンが消えない |
記事No | : 15659 |
投稿日 | : 2013/04/04(Thu) 15:51 |
投稿者 | : e=mc2 |
マウスを制御する外部アプリーケーションを起動して、プログラム終了時に強制終了させていますが、このアプリケーションがタスクバーに常駐型で、終了はするのですが、アイコンが残ったままとなってしまいます。マウスをタスクバーに持っていくとアイコンが消えますが、そのままにしていると起動するたびにアイコンが増えていきます。タスクバーのアイコンを消す方法をお教えいただけないでしょうか。
使用しているサンプルソースです。
------------------------------------------------------------------------------- '標準モジュール
Option Explicit
' OpenProcess 関数 Public Declare Function OpenProcess Lib "KERNEL32.DLL" ( _ ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long _ ) As Long
' CloseHandle 関数 Public Declare Function CloseHandle Lib "KERNEL32.DLL" ( _ ByVal hObject As Long _ ) As Long
' TerminateProcess 関数 Public Declare Function TerminateProcess Lib "KERNEL32.DLL" ( _ ByVal hProcess As Long, _ ByVal uExitCode As Long _ ) As Long
' 定数の定義 Public Const SYNCHRONIZE As Long = &H100000 Public Const PROCESS_TERMINATE As Long = &H1
------------------------------------------------------------------------------- アプリ起動:
'test.exeを起動して、プロセス ID を取得する Dim lProcessId As Long lProcessId = CLng(Shell("test.exe", vbNormalFocus))
' プロセスのハンドルを取得する Dim hProcessHandle As Long hProcessHandle = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, 0&, lProcessId)
------------------------------------------------------------------------------- プログラム終了時:
'test.exeを強制終了する Call TerminateProcess(hProcessHandle, 0&)
'プロセスのハンドルを閉じる Call CloseHandle(hProcessHandle)
-------------------------------------------------------------------------------
以上です。 どうぞよろしくお願いいたします。
|