[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/07/08(Fri) 17:34
投稿者名:tes
URL :
タイトル:
アクティブなアプリケーション名を知りたい
アクティブなアプリケーションが、ExcelかWordか取得する方法があれば教えてください。

投稿時間:2005/07/08(Fri) 17:47
投稿者名:マルチ
Eメール:
URL :
タイトル:
Re: アクティブなアプリケーション名を知りたい
> アクティブなアプリケーションが、ExcelかWordか取得する方法があれば教えてください。
hhttp://www.gizshare.com/vbtomo/boards/vbqanda.php?do=spread&num=10354

投稿時間:2005/07/09(Sat) 01:20
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: アクティブなアプリケーション名を知りたい
> アクティブなアプリケーションが、ExcelかWordか取得する方法があれば教えてください。

 某所ですでにレスがついていますが、

 フォームに、ラベルを4つ以下のように貼り付ける。タイマーコントロールを貼り付けて
インターバルは1秒くらいに設定する。

   Label1   Label3
   Label2   Label4

 コードは以下のとおり。Win32APIの定義は省略していますのでAPIビューアから
コピーしてください。

Private Sub Form_Load()
Dim lngReturnValue As Long

    lngReturnValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or
SWP_NOSIZE)
    Label1.Caption = "ForeGround"
    Label2.Caption = "Owner"
    
End Sub

Private Sub Timer1_Timer()
Dim lngReturnValue As Long
Dim lngHwndOwner As Long
Dim lngHwindForeground As Long
Dim strClassName As String

    lngHwindForeground = GetForegroundWindow
    If lngHwindForeground = 0 Then Exit Sub
    strClassName = Space(256)
    lngReturnValue = GetClassName(lngHwindForeground, strClassName, Len(strClassName))
    If lngReturnValue = 0 Then Exit Sub
    Label3.Caption = Left$(strClassName, InStr(strClassName, Chr(0)) - 1)
    
    lngHwndOwner = lngHwindForeground
    Do
        lngReturnValue = GetWindow(lngHwndOwner, GW_OWNER)
        If lngReturnValue = 0 Then Exit Do
        lngHwndOwner = lngReturnValue
    Loop
    strClassName = Space(256)
    lngReturnValue = GetClassName(lngHwndOwner, strClassName, Len(strClassName))
    If lngReturnValue = 0 Then Exit Sub
    Label4.Caption = Left$(strClassName, InStr(strClassName, Chr(0)) - 1)
        
End Sub

 フォアグラウンドのウィンドウと元のオーナーウィンドウをたどったウィンドウの
Class名を表示しています。

 このプログラムを動かしながら、Excel、Word等をいろいろ動かしてみてください。
たとえば、

 ・ダイアログボックスを表示する
 ・WordからExcelの表を埋め込んで編集する
 ・ヘルプを表示してみる
   :