• 締切済み

現在起動中のアプリケーションの名前を知りたい

OS  :Windows Vista Home Premium 言語 :Excel2007 VB 質問 :現在起動中のアプリケーションの名前を知りたい Excel2007のVisual Basicで現在起動中のプログラム名を知る    方法を教えてください。 タスクマネージャーのアプリケーションタブで表示される内容    と同じアプリケーション名が知りたい。 なぜ必要かと言いますと例えばメディアプレーヤーが起動して    いたら強制的に終了させたいからです。 初心者です。説明不足かもしれません。お許しください。

みんなの回答

回答No.1

↓こんな感じです。 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 見やすくするために全角空白を使用しています。

Rivinus
質問者

お礼

早々回答をいただきありがとうございました。 あなたのコーディングを参考にトライしたいと思います。 実はこの質問をする前に3日間ほどHELPやOKWaveなどを片っ端から探しましたが参考になる記事が見つかりませんでした。 本当に助かります。私には何故こんな技法を御存じなのか不思議に思えます、と同時に自分の勉強不足を痛感する次第です。 有難うございました。

関連するQ&A