WindowsXPでVB6.0でプログラムを組んでますが、その中であるEXEファイルを起動するようにしています。しかし、そのEXEが起動している場合は二重起動を避けるようにしたいのです。
使っているPCで起動されているいくつかのEXEから目的のEXEが起動しているかどうかを知りたいです。
FindWindowを使うには開いているファイル名まで変数の中に渡さなければならないため使えません。(開いているファイル名は不明として下さい)
タスクマネージャーの「プロセス」タブのイメージ名に出てくるexeファイル名を取得できればいいのですが、方法をご存知の方おられませんか?
No.2ベストアンサー
- 回答日時:
ご参考にしてください。
Sub ProcessID()
Dim objSet
Dim obj
Dim Locator
Dim Server
'
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Server = Locator.ConnectServer
Set objSet = Server.ExecQuery("Select * From Win32_Process")
'
For Each obj In objSet
MsgBox "プロセス名=" & obj.Caption
Next
Set objSet = Nothing
Set obj = Nothing
Set Server = Nothing
Set Locator = Nothing
End Sub
No.3
- 回答日時:
こんにちは。
> FindWindowを使うには開いているファイル名まで変数の中に渡さなければ
> ならないため使えません。(開いているファイル名は不明として下さい)
FindWindow の第1引数はクラス名を、第2引数にはウインドウタイトルを
渡します。ファイル名が不明であっても特定された EXE ならクラス名は固定
だと思いますので、問題ないと思いますよ。
FindWindow ではハンドルが取得できないものなのでしょうか?
■ WMI を使った方法(#2 ご回答にあるとおり)
動作環境を Win2000/XP/Vista(?) 等に限定すれば、WMI の Win32_Process
クラスが使えます。Win9x 系, NT4.0 で WMI を利用するには、別途でイン
ストールが必要になります。
http://www.microsoft.com/downloads/details.aspx? …
■ API を使った方法
Win95, NT5.0以降 で動作させる必要があるなら、API を使います。
こんな感じです。
Option Explicit
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" ( _
ByVal dwFlags As Long, _
ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32.dll" ( _
ByVal hSnapshot As Long, _
ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" ( _
ByVal hSnapshot As Long, _
ByRef lppe As PROCESSENTRY32) As Long
Private Const TH32CS_SNAPPROCESS As Long = &H2
Sub EnumProcessSample()
Dim hSnap As Long
Dim rc As Long
Dim pe As PROCESSENTRY32
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
pe.dwSize = LenB(pe)
rc = Process32First(hSnap, pe)
Do While CBool(rc > 0)
' // process id
Debug.Print "0x" & Right$("00000000" & Hex$(pe.th32ProcessID), 8);
Debug.Print vbTab;
' // file name
Debug.Print Left$(pe.szExeFile, InStr(pe.szExeFile, vbNullChar) - 1)
rc = Process32Next(hSnap, pe)
Loop
End Sub
■ トリッキーな方法
Word.Application の Tasks コレクションを利用します。
参考URL [ Office TANAKA - Excel VBA(実行中のタスク一覧(非API)) ]
http://officetanaka.net/excel/vba/tips/tips61.htm
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) エクセルの実行ファイルについての質問です。 1 2023/05/04 03:58
- その他(セキュリティ) exeファイルの個人情報について 3 2023/06/29 17:36
- Windows 10 exeファイルが起動しない 4 2022/06/05 16:13
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
- フリーソフト TJA-Player3 Develop Rewhite 2 2023/05/04 21:24
- マルウェア・コンピュータウイルス pcがウィルス感染しているかもしれません。変な声が聞こえます。 1 2022/05/03 00:43
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- アプリ アプリケーションが見つかりません 2 2022/07/13 21:07
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
VBプログラムの終了
Visual Basic(VBA)
-
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
ウィンドウのタイトルからプロセス取得
Visual Basic(VBA)
-
5
VBAで他のプログラムが起動しているか調べる方法
Visual Basic(VBA)
-
6
VBの画面サイズについて
Visual Basic(VBA)
-
7
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
8
VB6 配列を初期化したい
Visual Basic(VBA)
-
9
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
10
VB6での二重起動(複数起動)の制御について
Visual Basic(VBA)
-
11
DoEventsがやはり分からない
Visual Basic(VBA)
-
12
VB6で、長い時間かかる処理実行中の表示の工夫について
Visual Basic(VBA)
-
13
他のアプリケーションとの連携
Visual Basic(VBA)
-
14
VB.NETでファイル名順にファイルを読む方法
Visual Basic(VBA)
-
15
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
16
プロセスIDの取得方法について
Visual Basic(VBA)
-
17
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
-
18
VB6.0 オブジェクトを一覧で表示
Visual Basic(VBA)
-
19
Refreshメソッドの使い方
Visual Basic(VBA)
-
20
VB.NETでのイベントの途中終了
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
常駐ソフトの作り方
-
Windows上のプログラム。「予め...
-
VBSから別のVBS起動するとき変...
-
宛先ナシでメールソフトを起動...
-
VBで実行中のEXEファイルの情報...
-
VB6で呼び出し元の情報を取得す...
-
VBで別のプログラムを起動し他...
-
ウィンドウを終了させたい・・・
-
VBAでOutlookを終了させたい Ex...
-
タスクスケジューラでPerlが動...
-
htmlからcgiを自動的に起動させ...
-
VBAでIEが起動しているか...
-
VBSで起動したアプリが前面表示...
-
HTMLタグの中にDLLを埋め込む事...
-
mscomm32.ocxの登録方法
-
Process.Startで起動したアプリ...
-
C# 他のアプリケーションを優先...
-
VBSでExcelのUserFormをエクス...
-
CreateProcessのエラー
-
Eclipseでjavascriptが動かない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
VBSから別のVBS起動するとき変...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
Windows上のプログラム。「予め...
-
EXCEL VBAから他アプリケーショ...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
exeファイルを実行するとすぐに...
-
VB6で呼び出し元の情報を取得す...
-
C# 他のアプリケーションを優先...
-
ウィンドウを終了させたい・・・
-
64bitで作ったEXEを32bitで起動...
-
CreateProcessのエラー
-
VBAでSeleniumからChromeを起動...
-
VBA 最大化する方法
-
MSペイントを画像ファイル名を...
-
HTMLタグの中にDLLを埋め込む事...
-
VBからExcelに書き込む方法
-
C++Builderで、他のソフトとの連携
おすすめ情報