Spy++からコントロールIDが取得できない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
akai777suzu
記事: 31
登録日時: 11年前

Spy++からコントロールIDが取得できない

#1

投稿記事 by akai777suzu » 9年前

現在ドメインのユーザー認証画面の自動入力、実行を行おうと考えています。
その際、spy++でコントロールIDを調べて自動化しようと思ったのですが、取得した値が「00000000」と表示されます。
これはたぶん取れないに近い表現なのかなと思うのですが、他に取得する方法はありますでしょうか?

spy++で取得できない理由、他の方法で自動入力、実行があれば教えていただけないでしょうか。

akai777suzu
記事: 31
登録日時: 11年前

Re: Spy++からコントロールIDが取得できない

#2

投稿記事 by akai777suzu » 9年前

以下のコードでひとまず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がどうしてもうまくいきません。
メモ帳を書き換えるテストすると成功しました。
この処理に変えると文字列は送られませんでした。

何か対処法はないでしょうか。

akai777suzu
記事: 31
登録日時: 11年前

Re: Spy++からコントロールIDが取得できない

#3

投稿記事 by akai777suzu » 9年前

先程正常にSendMessageも通るようになりました。
何がダメだったかというと、実行ファイルに管理者権限を与えていなかったことによる、メッセージの未送信だったようです。

閉鎖

“C言語何でも質問掲示板” へ戻る