[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『exeの複数起動を確認する』(あや)
今使っているパソコンにMiniCopyという プリントスクリーンキーを押すと プリンタに画面ハードコピーが出るフリーソフト を使っていまして
VBAから起動をさせようと
Shell "C:\Hardcopy\MiniCopy.exe", 1
を使いました。
1度目の起動はOKなのですが、 既に起動していた場合、複数起動ですとなります。
回避方法はありますか?
*新規登録画面からのプレビューが押せなかったため 編集から入っています。すみません
< 使用 Excel:2003、使用 OS:XP >
こんにちは
Shell "C:\Hardcopy\MiniCopy.exe", 1
で一度起動した後、タスクマネージャーで見るとアプリケーションにMiniCopyは有りますか?
有るとしたら、ワードのTasksコレクションで実行中のTaskを取得して、名前で判定してClose してはどうですか?
VBA プロセス 取得 とかでWEB検索すれば参考コードが見つかりますよ。 (ウッシ) 2013/12/04(水) 12:01
ウッシさんありがとうございます
http://officetanaka.net/excel/vba/tips/tips61.htm
を見させてもらいました。
しかしタスクマネージャのアプリケーションにはあがってきていないのです (プロセスにはあるのですが)
(あや)
こんにちは
もう少し探すと見つかったと思うのですが。
Sub test() 'WMIにて使用する各種オブジェクトを定義・生成する。 Dim oClassSet As Object Dim oClass As Object Dim oLocator As Object Dim oService As Object Dim n As Long
'ローカルコンピュータに接続する。 Set oLocator = CreateObject("WbemScripting.SWbemLocator") Set oService = oLocator.ConnectServer 'クエリー条件をWQLにて指定する。 Set oClassSet = oService.ExecQuery("Select * From Win32_Process")
'コレクションを解析する。 For Each oClass In oClassSet n = n + 1 Cells(n, 1) = oClass.Description Cells(n, 2) = CStr(oClass.ProcessId) ' プロセス名指定して終了させる ' If oClass.Description = "notepad.exe" Then ' oClass.Terminate ' End If Next
'使用した各種オブジェクトを後片付けする。 Set oClassSet = Nothing Set oClass = Nothing Set oService = Nothing Set oLocator = Nothing
End Sub
無理やり止めるのは怖いので自己責任でお願いしますね。
(ウッシ) 2013/12/04(水) 13:25
ありがとうございます
試して勉強してみます
(あや)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.