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