[[20131204114552]] 『exeの複数起動を確認する』(あや) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.