- - PR -
Outlookのパスワード入力画面の入力エリアのクラス/コントロールIDの取得
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-29 15:07
VB.NET2005で作成するアプリより、他アプリの入力エリアにデータをセットする
ということを行っています。 以前にも「プログラムで、別のEXEのコントロールIDもしくはコントロールのウィンドウハンドルの取得方法」 という件名で質問させていただき GetDlgItem FindWindowEx を用いてデータをセットすることができました。 今回は、Outlook Expressのパスワード入力の子画面(送受信ボタンClickで呼び出される) にユーザー名、パスワードを設定したいと考えています。 以前と同様、spy++で、各入力エリアのクラスまたはコントロールIDを取得し APIを使用してセットしようとしたのですが、spy++で調べようとすると ログオンというフレーム(中にサーバー、ユーザー名、パスワードが存在) が1つの塊となってしまっています。 このような場合、どのようにユーザー名、パスワードそれぞれの入力エリアを 特定すればよいか、教えていただきたいと思います。 よろしくお願いします。 | ||||||||
|
投稿日時: 2007-09-01 10:24
その塊が全体で一つの窓なので、そのようになります。 そのログオンという窓は、 テキストボックスを複数用いるのではなく、 テキストボックス風の枠を書く処理を行い、 キーボードからの入力を処理し、といった、 テキストボックス相当x3の機能を自分で提供しています。
ログオンという窓の入力部分はテキストボックスでないので、 テキストボックスに対する処理と同じ方法ではできません。 こういった場合はキーボード入力のメッセージを真似し、 同様のメッセージを窓に送りつけるのが普通だと思います。 具体的な方法は対象によって異なります。 OutlookExpressのログオン窓に対してはやったことがないのでわかりません。 自分で調べてください。 WM_CHARだけでうまくいく場合もあれば、 WM_KEYDOWN、WM_KEYUP、WM_COMMANDなどを組み合わせなければいけないかもしれません。 SPYにメッセージをキャプチャする機能があるので、 それをつかうといいですよ。 | ||||||||
|
投稿日時: 2007-09-03 11:48
れいさん、ありがとうございます。
@FindWindowでOutlook画面のハンドルIDを取得 AFindWindowExで枠のハンドルIDを取得 BGetClassNameでタイトル部分の情報を取得 ☆Nameが「Static」のもの BGetClassNameで入力部分の情報を取得 ☆Nameが「Edit」のもの 上記のA〜Cを繰り返し行い、データセット、ボタンクリックが実現済みです。 ありがとうございました。 | ||||||||
|
投稿日時: 2007-09-03 20:32
あれれ? FindWindowでつかまるなら ちゃんと窓ですね。 なんでSpyでできなかったんでしょう? おかしいな。 ?? まぁできたならいいか。 | ||||||||
|
投稿日時: 2007-09-05 09:49
れいさん
サーバー、ユーザー名、パスワード のキャプション(?Static部分)と入力エリア(Edit)がセットで 1つの窓としてspy++でとれてたんです。 その中のひとつひとつ(ユーザー名の入力エリアとか)がとれなくて 困ってました。 |
1