• ベストアンサー

EXEファイルのタイトル取得

一応、自分なりにWEB等で調べてみたのですが、 実行ファイルのタイトル取得の仕方が分かりません。 (実行した時のタイトルバーに出る文字) そのファイルを実行せずにタイトルを取得したいのです。 ご存知の方いらっしゃいましたら、どうか宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.7

出題者 >そのファイルを実行せずにタイトルを取得したいのです この質問から、自作アプリでは無いこと想像できる。 自作アプリなら、どのようなタイトルかは既にわかるはず。 wm_closeは、終了メッセージを送るだけ。 もしアプリが、終了確認を問うメッセージを出したら、そのメッセージボックスのOKボタンにもポストしてやらねばならん。 それ以外にも、複数のウィンドウを開くタイプであれば、一つのウィンドウに対して閉じるだけの命令なので、一番の親フォームを取得しておく必要がある。 プロセス単位で行えば、確実に終了できる。 ∴強制終了 → 諸刃

その他の回答 (6)

noname#4564
noname#4564
回答No.6

> 起動するアプリによってはOSが不安定になりえる諸刃の剣。 強制終了じゃなく、WM_CLOSEをPostすればよろしいかと。 (大して変わらない?)

noname#191236
質問者

お礼

アドバイス、どうもありがとうございます。 色々と参考にさせていただきます。m(_ _)m

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.5

wm_closeやCloseHandleでやるなら http://oshiete1.goo.ne.jp/kotaeru.php3?q=344472 スクリプト的に行うなら Sub Main()   ExeFree "c:\Project1.exe" End Sub Sub ExeFree(ByVal inExePath As String)   Dim strSQL As String   Dim objApps As Object   Dim objProc As Object   Dim lngSts As Long   Dim strWk  As String      inExePath = UCase(inExePath)   strSQL = "SELECT * FROM Win32_Process"   Set objApps = VBA.GetObject("winmgmts:").ExecQuery(strSQL)   For Each objProc In objApps     'Exeのパスが一緒の物を探す     If (inExePath = UCase(objProc.ExecutablePath)) Then       Exit For     End If     'End If   Next objProc      '取得できていない   If (objProc Is Nothing) Then     Exit Sub   End If         '取得したプロセスを終了する   lngSts = objProc.Terminate   Select Case lngSts     Case 0     '正常終了       Exit Sub     Case 2:   strWk = "アクセスが拒否されました"     Case 3:   strWk = "権限が不足しています"     Case 8:   strWk = "不明なエラーです"     Case 9:   strWk = "パスが見つかりません"     Case 21:  strWk = "パラメータが不正です"     Case Else: strWk = "予期せぬエラー:" & lngSts   End Select      MsgBox strWk    End Sub

noname#191236
質問者

お礼

2度にわたって返答いただき、ありがとうございます。 コードを参考に色々と試してみたいと思います。 どうもありがとうございました。(^^

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.4

あえて、起動しちゃったらどうかと、 SHELLで非表示で起動できるっしょ。 んでもって、強制終了。 起動するアプリによってはOSが不安定になりえる諸刃の剣。

noname#191236
質問者

お礼

お返事どうもありがとうございます。 No1の返答欄に追記した内容がお分かりでしたら、 お手数ですが再度アドバイス等お願いしたいと思います。 宜しくお願いします。m(__)m

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

できません。 実行中にいくらでも変更可能です。

noname#191236
質問者

お礼

お返事どうもありがとうございます。 No1の返答欄に追記した内容がお分かりでしたら、 お手数ですが再度アドバイス等お願いしたいと思います。 宜しくお願いします。m(__)m

  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.2

できないという記載やできるという記載ががどこにも見つからないのですが、無理矢理やろうと思ったら、処理系ごとの実行形式を調べて、タイトルが埋め込まれている場所を突き止める方法になるのかと思います。ただ、タイトルが埋め込まれている場所に、規則性があれば良いですが・・。

noname#191236
質問者

お礼

お返事どうもありがとうございます。 No1の返答欄に追記した内容がお分かりでしたら、 お手数ですが再度アドバイス等お願いしたいと思います。 宜しくお願いします。m(__)m

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

無理でしょう。 バージョン情報を取得するなら可能ですが

参考URL:
http://www.vbvbvb.com/jp/gtips/0751/gGetFileVersionInfoProductName.html
noname#191236
質問者

お礼

お返事どうもありがとうございます。 EXEファイルパスだけが分かっている状況で、 そのEXEファイルを実行してタイトルを取得後、 終了するといったする方法はありますでしょうか。 (できればShell使って) 度々お手数をおかけしますがご存知でしたら、 返答、どうかよろしくお願いします。m(_ _)m ※GetWindowText等々部分的な事までは調べ られたのですが、それを結びつける事ができません。 (起動→取得→終了という具合に)

関連するQ&A