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