アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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

見やすくするために全角空白を使用しています。
    • good
    • 0
この回答へのお礼

早々回答をいただきありがとうございました。
あなたのコーディングを参考にトライしたいと思います。

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

お礼日時:2007/08/15 11:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!