A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
1>アクティブウインドウの取得
2>任意のウインドウが表示されていれば、処理Aをおこなう
3>画面上に a.txt 電卓 c.xlsがたちあがっているとき
それぞれ意味が違いますね。
その中で、3 を選びました。
ただ、ふつうは、
FindWindow("Notepad", "A.TXT - メモ帳")
はしないで、
FindWindow("Notepad", vbNullString)
としてしまいます。
'クラス名:"Notepad", "Windows.UI.Core.CoreWindow", "XLMAIN" (これは、電卓とedge の区別がない。)
'//
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Sub TestGETApp()
''a.txt 電卓 c.xls
Dim hWnd As Long
hWnd = FindWindow("Notepad", "A.TXT - メモ帳")
If hWnd <> 0& Then
MsgBox "メモ帳は起動しています。", vbInformation
Else
MsgBox "メモ帳は起動していません。", vbExclamation
End If
End Sub
ご回答ありがとうございました。
2>任意のウインドウが表示されていれば、処理Aをおこなう をおしえてください。
たとえば、そのPC内に メーラなどの認証画面が表示されているときは、sendkysなどで文字(パスワード)をいれる
表示されないときはなにもしないなどを実現させたいとおもってます。
よろしくお願いいたします。
No.2
- 回答日時:
こんにちは。
>objWshShell.AppActivate "認証画面"
これは、FindWindowが、その役目をします。
>>任意のウインドウが表示されていれば、処理Aをおこなう をおしえてください。
FindWindowEx で特定の場所を指定します。
そして、そこに、SendyKeys の代わりに、SendMessageAPIで、文字を送るということです。
Dim hWindow As Long
hWindow = FindWindow(vbNullString, "無題 - メモ帳")
if hWindow <> 0 then
hWindow = FindWindowEx(hWindow, 0, "edit", vbNullString)
End If
If hWindow = 0 Then msgbox "エラー" :Exit Sub
次のステップ
その"edit" は、spy++などで取ります。
ところが、
>たとえば、そのPC内に メーラなどの認証画面が表示されているときは、>sendkysなどで文字(パスワード)をいれる
ただ、認証画面のようなものは、FindWindowEx で取れないことも多いのです。
そこで、一般的には、UWSC のようなWindowマクロを使って行うことが多いです。
ただ、「認証画面」というものは、以下のようなものを指していませんか?
もし、そうですと、こういう方法とは全く違うことになります。
その場合は、ここのようなスタイルで行うことが可能です。
http://www.vba-ie.net/collection/iebasic.html
No.3
- 回答日時:
こんにちは。
返事が遅くなりました。
>SendMessageAPIを使う際も、このような呪文が必要になるのでしょうか
以下のサンプルは、昔の電卓ですが、分かりやすいですね。
hWnd1 で、本体を取得して、次に、その親のハンドルから、ボタンの位置を割り出して、ハンドルを取り出して、SendMessage の引数にし、そこに、文字や動作を送るわけです。
Sub Main()
Dim hwnd1 As Integer, hwnd2 As Integer
hwnd1 = FindWindow("SciCalc", "電卓")
hwnd2 = FindWindowEx(hwnd1, 0, "Button", "5")
SendMessage hwnd2, BM_CLICK, 0, 0
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- エッセイ・随筆 尋常小学校唱歌『さくら さくら』の解釈について以下のものは成立しますか?普通じゃおもろない? 7 2023/02/26 16:52
- その他(OS) Mac OSの操作について 2 2022/06/08 09:19
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Chrome(クローム) 最近Win10にてブラウザが左にスッと隠れていく現象に悩まされてます 3 2023/07/22 23:11
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) マクロ ScrollColumn について 2 2022/04/07 09:31
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Chrome(クローム) PC版GoogleChromeでウインドウ上方に表示されるブックマークバーを消す方法 3 2023/05/12 18:45
- Google Maps googleストリートビューで大きい黒枠のウインドウが邪魔 2 2023/02/15 21:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでRegisterWindowMessage関数...
-
SetWindowText関数について
-
他のウィンドウのボタンを自動...
-
SetWindowsHookEx(グローバル...
-
VBA アクティブウインドウの取...
-
キーボード入力をHSPでさせたい...
-
メッセージハンドラ
-
msgboxの表示位置
-
Excel VBA で外部アプリケーシ...
-
メッセージボックスの選択ボタ...
-
メッセージループについて
-
vbaから他のアプリを終了
-
コールバック関数とは…(C言語)
-
WM_NCLBUTTONUPについて
-
キーボード・フックのアプリを...
-
エクセルで作った新しいウイン...
-
グラフの交点の求め方(Excel)
-
「アイテムは収集されました」...
-
フォントの大きさ
-
c言語でキーボードから2点の座...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaから他のアプリを終了
-
他のウィンドウのボタンを自動...
-
メッセージボックスの選択ボタ...
-
msgboxの表示位置
-
VBAでコントロールのハンドルを...
-
メッセージハンドラ
-
SetWindowText関数について
-
WM_NCLBUTTONUPについて
-
VB.netでFindWindowExやると・...
-
デスクトップ上のアイコンの位...
-
点滅で知らせる方法
-
SendMessage で ESC など
-
チェックボックスのキーダウン...
-
キーボード・フックのアプリを...
-
DEVICECHANGE() の受け取り
-
CloseHandle()
-
マウスフックについて
-
システム例外のメッセージを変...
-
windowsメールスロットについて...
-
マウスの右クリック+Shiftキー...
おすすめ情報
こんにちは。
今、このようにつくっており認証画面がでてなくてもでていいても
とりあえずsendkyesが実行されます。
これを、もし 認証画面がPC内にひょうじされていれば
sendkysで文字列を入力し、そうでなければなにもしない。というマクロをくみたいとおもってます。
Sub dd()
Set objShell = CreateObject("WScript.Shell")
objWshShell.AppActivate "認証画面"
sendkys ・・・・
end sub
以上 よろしくおねがいします。
ご回答ありがとうございます。
>ただ、「認証画面」というものは、以下のようなものを指していませんか? いいえ違います
①SendMessageAPIを使う際も、このような呪文が必要になるのでしょうか?Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( ByVal lpClassName As String, ByVal lpWindowName As String) As Long ②この処理の意味について("Notepad", "A.TXT - メモ帳")をfindwindowの引数として lpClassNameと lpWindowName に渡しUSER32.DLLを使って処理し戻り値をhWndに格納しているのでしょうか? spyとかUwSCとかいろいろと勉強になりました。どうもです