掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
外部プログラムの起動後の処理 (ID:82285)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> プログラムの動きを1行ずつみていくと ええと、まずわたしが書いたとおり、SendKeysというのは、"アクティブなフォーム上で、キーボード操作をシミュレートする"ものですから、 アクティブなフォームがVBのウィンドウだと、当然結果がおかしくなります。 これはヘルプにもすこし載っていたと思いますから、確認してみてください。 たとえば、SendKeys "ABC"とすると、 今その場で、キーボードで" A B C "とタイプしたのと同じこと"ができます。 つまりSendKeysが、キータイプ操作をシミュレートしてる途中で、アクティブなフォームを切り替えても、もちろん結果がおかしくなりますね。 > 可変長でのファイル起動後の文字入力 全て共通の手段で、確実に…というのは難しいですね。 ExcelはまだActiveXコントロールとか(ExcelのActiveXについては過去ログにあったかも)があるでしょうからいいですが、 コマンドプロンプトみたいに、そもそもアプリケーションのタイプからしてそもそも別のものをどうにかしよう…となると、難しいです。 まあ、バッチファイルを自動生成してやれば、幾分かシミュレートできるかもしれませんが。 そもそも実行されるものがなんなのかわからない状況で、文字を表示するのはたやすいことではないです。そういった意味では、 puntoさんのおっしゃった、"SendKeys"が一番簡単かつ汎用的ではあります。 (じゃあテキスト入力ウィンドウのないソフトの場合は?起動処理が長いソフトの場合は?とか言うと、きりがないですが(^^ゞ) そういえばSendKeysより確実にキーを送る方法としては、 SendMessageでWM_KEYUP、WM_KEYDOWN などのメッセージを送る方法もあります。 これはSendKeysと違ってウィンドウハンドルを指定して送りますから、SendKeysよりかなり確実です。 ただしSendKeysのように文字列で書くことができない(キーを押して、放して、押して——といった動作を記述していくことになる)ので、難しくなります。 汎用性を求めようとするなら、なおのこと。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.