• ベストアンサー

VBで実行中のEXEファイルの情報を取得したい

KenKen_SPの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答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?displaylang=ja&FamilyID=AFE41F46-E213-4CBF-9C5B-FBF236E0E875 ■ 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

r33y305550
質問者

お礼

API関数について勉強できました。知らなかったことが多いので参考になりました。ありがとうございました。

関連するQ&A

  • 知らない実行ファイル

    softU.exe SoftAuto.exe  CTDserv.exe タスクマネージャのプロセスのタブに以上のファイルがありました。 このファイルは何をしているのでしょうか? OSはWindows XP SP3です。 そっけない文章ですみません。回答よろしくお願いします。

  • VBプログラムの終了

    VB6.0で作成した実行ファイル(exe)を終了させても タスクマネージャのプロセスに残ってしまい、 もう一度プログラムを起動することができません。 (プログラムで二重起動防止の処理をしています) このプログラムをVBのラインタイムが入っていない マシンで動かしているのですが、 やはりそれが問題なのでしょうか? それとも別に何か原因があるのでしょうか?

  • exeファイルを終了させない。

    vb.netで作成したEXEファイルを終了させないアプリにしたいと考えています。 そのため、タスクマネージャーの”プロセスの終了”でもそのアプリが終了しないようにしたいのですがそれは可能でしょうか?

  • sqlservr.exeが2つ…これはやはり異常?

    SQLServer2000をインストールしている Windows2000Serverのタスクマネージャーの プロセスを見ると sqlservr.exeというイメージが2つあります。 これはSQLServerの2重起動等の異常な状態で しょうか? 手元にないサーバなのですが、VisualBasic6.0を 使用してSQLServer2000にデータを書き込みアプリ があります。 このVB6のアプリで、『エラーを特定できません』 とのエラーが発生する。との相談を受け、画面の ハードコピー等を送ってもらったのですが、その中の タスクマネージャのプロセスのハードコピーで sqlservr.exeが2つ起動しているのが確認 できました。 上記エラーメッセージを調べてみると、スタックの破壊 等が考えられるとあったのですが、この2重起動でも 同様の現象が考えられるでしょうか?それ以前に今の この2重起動が発生すること事体異常でしょうか? 手元に環境がないので確認ができずに困っております。 ご存知の方、ご教授ください。

  • SOUNDMAN.EXEとはどんなファイルですか?

    なにもしていないのにハードディスクが激しく動いているのでタスクマネージャのプロセスをみて確認したら「SOUNDMAN.EXE」と言うファイルが動いているようでした。「プロセスの終了」をしようとクリックしたら警告がでてデータが失われるかもしれませんとあったので怖くなってやめました。 「SOUNDMAN.EXE」とは一体どんなファイルなんでしょうか?

  • iTunesHelper.exeって消せないの?

    Windowsxpのタスクマネージャのプロセス画面でiTunesHelper.exe 5272Kって起動時に表示されますが、これを終了させても問題はありませんか? また、起動させないようにするにはどうしたらよいですか?

  • Rundll32.exeが増殖しています。

    今日タスクマネージャーで、プロセスを見ていると RUNDLL32.exeが5,6ファイルたくさん起動しているのですが、それぞれ何のファイルなのでしょうか? たくさん起動していても問題ないのでしょうか?

  • 存在しないexeファイル

    タスクマネージャのプロセスに00003221.exeというのがありました。 で、 ファイル検索しましたがそんなファイルはありませんでした。 んで、 ウィルスチェックかけてみましたが出てきませんでして、、、 まずこれってウィルスでしょうか? ウィルスならばこんなときどう処理すればいいのでしょうか?

  • wowexec.exeドライバーについて?

    WindowsXPのタスクマネジャーの【プロセス】項目の中の使用Driver?  wowexec.exe に、ついて教えてください このファイルを削除すると、すぐに復活してきます また、メモリーの使用量がゼロなのに、ハード全体がすごく重くなるのですがなぜでしょうか?分かりません、ぜひ教えてください 宜しくお願いします。

  • 見たこと無い実行ファイルがCPUを使用しています・・・

    最近、特にCPUを使うものを起動していないにもかかわらず、パソコンの動作が遅いときがありました。 タスクマネージャのプロセスで確認したところ、「yupdaterj.exe」というものが起動しており、最大で40%近くCPUを使用していました。 普通の実行ファイルと違い、タスクマネージャのプロセス上から出たり消えたりしていました。 気にしなくていいものか、どうにか対策を取らなければいけないものか悩んでおります。 どなたか知っている方が居ましたら教えてくださいませ ちなみに、私のパソコンはWindowsのXPでCPUはペンティアム4の2.80GHzです。