
A 回答 (3件)
- 最新から表示
- 回答順に表示
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
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.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
この回答へのお礼
お礼日時:2017/03/15 14:35
ご回答ありがとうございました。
2>任意のウインドウが表示されていれば、処理Aをおこなう をおしえてください。
たとえば、そのPC内に メーラなどの認証画面が表示されているときは、sendkysなどで文字(パスワード)をいれる
表示されないときはなにもしないなどを実現させたいとおもってます。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
他のウィンドウのボタンを自動...
-
vbaから他のアプリを終了
-
WM_NCLBUTTONUPについて
-
VBでRegisterWindowMessage関数...
-
グラフの交点の求め方(Excel)
-
コンボボックス内の文字サイズ変更
-
ダイアログのスクロールバー
-
勝手にウィンドウが開いて止ま...
-
win32api 画面のちらつき
-
エクセルで作った新しいウイン...
-
画面がチカチカする
-
Exelを開く時に困っています
-
マインクラフト(pc版)で座標...
-
図形が重なりあっているかどうか
-
画面リサイズ時のちらつきをな...
-
ちらつきについて
-
3次元空間における平行回転移動...
-
エクセル - リストボックスのマ...
-
「アイテムは収集されました」...
-
タスクトレイからのバルーン表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaから他のアプリを終了
-
SetWindowText関数について
-
他のウィンドウのボタンを自動...
-
メッセージボックスの選択ボタ...
-
msgboxの表示位置
-
VBAでコントロールのハンドルを...
-
メッセージハンドラ
-
点滅で知らせる方法
-
ウインドウが閉じたことを知る方法
-
SendMessage で ESC など
-
キーボード・フックのアプリを...
-
VB.netでFindWindowExやると・...
-
WM_NCLBUTTONUPについて
-
WINAPI 他のウインドウを重ね...
-
システム例外のメッセージを変...
-
VBでRegisterWindowMessage関数...
-
デスクトップ上のアイコンの位...
-
チェックボックスのキーダウン...
-
VBでRegisterWindowMessage関数...
-
C# の MDI
おすすめ情報
こんにちは。
今、このようにつくっており認証画面がでてなくてもでていいても
とりあえず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とかいろいろと勉強になりました。どうもです