ページ 1 / 1
Spy++からコントロールIDが取得できない
Posted: 2015年10月03日(土) 15:29
by akai777suzu
現在ドメインのユーザー認証画面の自動入力、実行を行おうと考えています。
その際、spy++でコントロールIDを調べて自動化しようと思ったのですが、取得した値が「00000000」と表示されます。
これはたぶん取れないに近い表現なのかなと思うのですが、他に取得する方法はありますでしょうか?
spy++で取得できない理由、他の方法で自動入力、実行があれば教えていただけないでしょうか。
Re: Spy++からコントロールIDが取得できない
Posted: 2015年10月03日(土) 23:39
by akai777suzu
以下のコードでひとまずhWndがしっかり取得することに成功しました。
コントロールIDではなくFindWindowExを使ってクラス名を設定することでいけました。
---------------------------------------------------------------------------------------------------------------
hWnd = FindWindow(null, "Windows セキュリティ");
DirectUIHWND = FindWindowEx(hWnd, IntPtr.Zero, "DirectUIHWND", null);
hWnd = FindWindowEx(DirectUIHWND, IntPtr.Zero, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(DirectUIHWND, hWnd, "CtrlNotifySink", null);
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "Edit", null);
SendMessage(hWnd, WM_SETTEXT, 0, Marshal.StringToHGlobalAnsi("test"));
----------------------------------------------------------------------------------------------------------------
ただ最後SendMessageがどうしてもうまくいきません。
メモ帳を書き換えるテストすると成功しました。
この処理に変えると文字列は送られませんでした。
何か対処法はないでしょうか。
Re: Spy++からコントロールIDが取得できない
Posted: 2015年10月04日(日) 00:07
by akai777suzu
先程正常にSendMessageも通るようになりました。
何がダメだったかというと、実行ファイルに管理者権限を与えていなかったことによる、メッセージの未送信だったようです。