Excel VBA質問箱 IV

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

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


71046 / 76738 ←次へ | 前へ→

【10193】Re:ウインドウネームを取得できますか?
質問  EMU  - 04/1/10(土) 17:46 -

引用なし
パスワード
   ▼Keinどうもありがとうございます。
>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

上記のコード意味がよくわかりませんが(申し訳ありません)、
とりあえず試してみました。
すると
「実行時エラー’49’
 DLLが正しく呼び出せません」
とエラーメッセージが出力されてしまいました。どうしたらよろしいでしょうか?
それと併わせて、IEいがいの場合は
"*Microsoft Internet Explorer*"
の部分を他のアプリケーションの名前に変えればよろしいのですか?教えてください。


>
>こんな感じになります。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 お礼

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