NetCommonsの日誌に自動投稿するアプリを作成したい。
しかしファイルのアップロードが障壁となっている。IEの「アップロードするファイルの選択」ダイアログを開かずにファイルを指定することはできない。そこで,ダイアログの入力を自動化してみる。
ダイアログはモーダルで表示されるようで,ダイアログ表示と同時に停止するので,別スレッドで入力をシミュレートする。
SendKeysではタイミングによって失敗する。Sleep()でかなり待たないと不安定になる。
そこで,ダイアログのEditBoxのウィンドウハンドルを取得し,SendMessageのSETTEXTで文字列を送ることにする。
ただ,ウィンドウハンドルが取得できても,タイミングによってはSETTEXTできないことがある。IsWindowEnabled関数がTrueを返してもやはりタイミングによっては失敗する。IsWindowVisible関数がTrueを返すまで待てば必ず成功するようだ。
下のコードを,フォームのコードにコピー・貼り付けをすれば動作する。