###質問内容
VBA(Access)
Shellで起動したアプリケーションを終了させるサンプルソースを作成したのですが上手く動作しません。
Shellでの起動までは動作するのですが、終了ができずメモ帳が開いたままになります。
質問1.「btnCloseHandle_Click」「btnSendMessage_Click」それぞれの関数で、開いたアプリケーションを終了できるようにしたいです。
###サンプルのソースコード
Option Compare Database
Option Explicit
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwAccess As Long, ByVal fInherit As Integer, ByVal hObject As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Const WM_CLOSE = &H10
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_TERMINATE = &H1
Private lngPid As Long
Private lngWid As Long
Private Sub btnCloseHandle_Click()
lngPid = Shell("notepad.exe", vbNormalFocus)
Call CloseHandle(lngPid)
End Sub
Private Sub btnSendMessage_Click()
lngPid = Shell("notepad.exe", vbNormalFocus)
lngWid = OpenProcess(SYNCHRONIZE, True, lngPid)
Call SendMessage(lngWid, WM_CLOSE, 0&, 0&)
End Sub
' 2016/06/01 16:58 追記
Private Sub btnTerminateProcess_Click()
lngPid = Shell("notepad.exe", vbNormalFocus)
lngWid = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, True, lngPid)
Call TerminateProcess(lngWid, 0&)
End Sub
###環境
Windows7 x64
Access2010 x84(OS 64bit環境にOffice32bit版をインストールしています)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/01 04:10
2016/06/01 04:23 編集
2016/06/01 08:04
2016/08/16 08:09