Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


71049 / 76734 ←次へ | 前へ→

【10185】Re:ウインドウネームを取得できますか?
回答  Kein  - 04/1/9(金) 19:24 -

引用なし
パスワード
   OSの処理ですから、Excelのコードでは及びません。全てAPIの処理になります。
例えばどんなウィンドウを開いていても IE を見つけて前面に出す、という
ことなら

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, _
lPalam As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) _
As Long
Declare Function OpenIcon Lib "user32" (ByVal hWnd As Long) As Long
Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long

Sub MyWindow_SetFront()
  Dim Ret As Long

  Ret = EnumWindows(AddressOf Rekkyo, 0)
End Sub


Public Function Rekkyo(ByVal Handle As Long) As Boolean
  Dim Ret As Long, Leng As Long, hWnd As Long
  Dim Name As String

  Name = String(255, ChR(0))
  Leng = Len(Name)
  Ret = GetWindowText(Handle, Name, Leng)
  If Ret <> 0 Then
    If Name Like "*Microsoft Internet Explorer*" Then
     hWnd = FindWindow(vbNullString, Name)
     SetForegroundWindow hWnd
     If IsIconic(hWnd) Then OpenIcon hWnd
     Exit Function
    End If
  End If
  Rekkyo = True
End Function

こんな感じになります。MyWindow_SetFront を実行してみて下さい。
なお、IE ならもう少し簡単に・・

Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) _
As Long
Declare Function OpenIcon Lib "user32" (ByVal hWnd As Long) As Long
Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Long

Sub IE_SetFront()
  Dim MyShell As Object, MyWindow As Object, objIE As Object
  Dim hWnd As Long

  Set MyShell= CreateObject("Shell.Application")
  For Each MyWindow In MyShell.Windows
   If TypeName(MyWindow.document) = "HTMLDocument" Then
     Set objIE = MyWindow: Exit For
   End If
  Next
  If Not objIE Is Nothing Then
   hWnd = objIE.hwnd
   SetForegroundWindow hWnd
   If IsIconic(hWnd) Then OpenIcon hWnd
  End If
  Set objIE = Nothing: Set MyShell = Nothing
End Sub

でも出来ますが。
0 hits

【10136】ウインドウネームを取得できますか? EMU 04/1/8(木) 16:57 質問
【10138】Re:ウインドウネームを取得できますか? Seraph 04/1/8(木) 17:27 回答
【10141】Re:ウインドウネームを取得できますか? EMU 04/1/8(木) 18:32 質問
【10143】Re:ウインドウネームを取得できますか? Seraph 04/1/8(木) 20:21 回答
【10153】Re:ウインドウネームを取得できますか? EMU 04/1/9(金) 9:55 質問
【10172】Re:ウインドウネームを取得できますか? Seraph 04/1/9(金) 14:48 回答
【10180】Re:ウインドウネームを取得できますか? EMU 04/1/9(金) 17:17 質問
【10185】Re:ウインドウネームを取得できますか? Kein 04/1/9(金) 19:24 回答
【10193】Re:ウインドウネームを取得できますか? EMU 04/1/10(土) 17:46 質問
【10195】Re:ウインドウネームを取得できますか? kein 04/1/10(土) 21:19 回答
【10222】Re:ウインドウネームを取得できますか? EMU 04/1/13(火) 12:22 質問
【10223】Re:ウインドウネームを取得できますか? kein 04/1/13(火) 12:34 回答
【10224】Re:ウインドウネームを取得できますか? EMU 04/1/13(火) 13:45 お礼
【10186】Re:ウインドウネームを取得できますか? Seraph 04/1/9(金) 20:02 回答
【10194】Re:ウインドウネームを取得できますか? EMU 04/1/10(土) 18:35 お礼

71049 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free