オルタナティブ・ブログ > mtaneda ブログ >

中小企業の開発者は会社で何をしているのか

続・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ボタンをクリック

なんとか目的を達成することができました。

Comment(0)