- 締切済み
現在起動中のアプリケーションの名前を知りたい
OS :Windows Vista Home Premium 言語 :Excel2007 VB 質問 :現在起動中のアプリケーションの名前を知りたい Excel2007のVisual Basicで現在起動中のプログラム名を知る 方法を教えてください。 タスクマネージャーのアプリケーションタブで表示される内容 と同じアプリケーション名が知りたい。 なぜ必要かと言いますと例えばメディアプレーヤーが起動して いたら強制的に終了させたいからです。 初心者です。説明不足かもしれません。お許しください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tsukasa-12r
- ベストアンサー率65% (358/549)
↓こんな感じです。 Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long Private Declare Function GetWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal uCmd As Long) As Long Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function IsWindow Lib "user32.dll" (ByVal hWnd As Long) As Long Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long Private Const GWL_STYLE As Long = -16 Private Const WS_CAPTION As Long = &HC00000 Private Const GW_CHILD As Long = 5 Private Const GW_HWNDNEXT As Long = 2 Private Sub CommandButton1_Click() Dim hWnd As Long Dim lngStyle As Long Dim strTitle As String hWnd = GetWindow(GetDesktopWindow(), GW_CHILD) Do While hWnd <> 0 If IsWindow(hWnd) <> 0 Then If IsWindowVisible(hWnd) Then lngStyle = GetWindowLong(hWnd, GWL_STYLE) If (lngStyle And WS_CAPTION) = WS_CAPTION Then strTitle = String(250, Chr(0)) Call GetWindowText(hWnd, strTitle, 250) strTitle = Left(strTitle, InStr(strTitle, Chr(0)) - 1) Debug.Print strTitle End If End If End If hWnd = GetWindow(hWnd, GW_HWNDNEXT) Loop End Sub 見やすくするために全角空白を使用しています。
お礼
早々回答をいただきありがとうございました。 あなたのコーディングを参考にトライしたいと思います。 実はこの質問をする前に3日間ほどHELPやOKWaveなどを片っ端から探しましたが参考になる記事が見つかりませんでした。 本当に助かります。私には何故こんな技法を御存じなのか不思議に思えます、と同時に自分の勉強不足を痛感する次第です。 有難うございました。