続・C# で他のアプリケーションを自動操作
»
C# で他のアプリケーションを自動操作の続きです。
パスワード入力のようなダイアログも自動化したい場合(何のためのパスワード入力なんだ!)、
テキストフィールドは無名なので、FindWindow() できません・・・
そういう場合は FindWindow()やFindWindowEx()で、「ラベル」を取得して、
GetWindow()で、GW_HWNDNEXTやGW_HWNDPREVして、なんとか対象のウィンドウハンドルを取得しましょう。
例:
IntPtr hWnd1=FindWindow(null,"パスワードダイアログ");//ダイアログを見つける
IntPtr hWnd2=FindWindowEx(hWnd1,IntPtr.Zero,"Button","OK");//例えば、OKというボタンを見つける
IntPtr hWnd3=GetWindow(hWnd2,GW_HWNDPREV);//OKボタンより前に配置されたテキストフィールドをみつける
SendMessage(hWnd3,WM_SETTEXT,IntPtr.Zero,"passworddazo");//パスワードを入れちゃう
PostMessage(hWnd2,BM_CLICK,0,0);//OKボタンをクリック
なんとか目的を達成することができました。
SpecialPR