■62027 / inTopicNo.3) |
Re[1]: 関連ファイルを開いて閉じる |
□投稿者/ 魔界の仮面弁士 (2355回)-(2011/09/15(Thu) 23:35:44)
|
■No62007 (TEPPEN さん) に返信
> 関連ファイルを開いて閉じる
ここでいう「関連ファイル」というのは、何の事でしょうか?
> ファイルを開いて閉じる事もやりたいのですが、可能でしょうか?
VB6 であれば、有名なのはこの方法ですね。
文書番号: 129797 - [VB] Win32 アプリケーションを起動させ、終了させる方法
http://support.microsoft.com/kb/129797/ja
これ以外の手法としては、WM_CLOSE を PostMessage する方法が知られています。
また、API を使いたくないのであればこんな方法もあります。
Option Explicit
Private mProcesses As Collection
'メモ帳を起動する
Private Sub Command1_Click()
Set mProcesses = New Collection
mProcesses.Add Shell("notepad.exe C:\a.txt", vbNormalFocus)
mProcesses.Add Shell("notepad.exe C:\b.txt", vbNormalFocus)
End Sub
'TaskKill コマンドを使って閉じる
Private Sub Command2_Click()
If mProcesses Is Nothing Then Exit Sub
If mProcesses.Count = 0 Then Exit Sub
Dim procId As Variant
For Each procId In mProcesses
Shell "TASKKILL /PID " & CStr(procId), vbHide
Next
Set mProcesses = Nothing
End Sub
'別案。Win32_Process.Terminate メソッドを使っての強制終了。
Private Sub Command2_Click()
If mProcesses Is Nothing Then Exit Sub
If mProcesses.Count = 0 Then Exit Sub
Dim wql As String, procId As Variant
wql = ""
For Each procId In mProcesses
wql = wql & " OR ProcessId=" & CStr(procId)
Next
wql = "SELECT * FROM Win32_Process WHERE " & Mid(wql, 4)
Dim oProc As Object, ret As Variant
For Each oProc In GetObject("winmgmts:").ExecQuery(wql)
ret = oProc.Terminate(0)
Debug.Print "Terminate="; ret, "CommandLine="; oProc.CommandLine
Next
Set mProcesses = Nothing
End Sub
|
|