VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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の表を埋め込んで編集する
 ・ヘルプを表示してみる
   :


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -