- 締切済み
プログラムからTera Termに文字を入力するには?
初めて質問させていただきます。 Visual C++暦まだ2ヶ月の初心者が身の丈知らずかも知れない質問をすることをご容赦ください。 Tera Termを起動し、そこにmakeやCtrl-Cなどのキー入力情報を送るプログラムを作りたいと思っています。 具体的には、ダイアログベースのプログラムで、プッシュボタンをコマンド別にいくつか用意し、それらが押されると、Tera Termにキー入力があったと同じメッセージを送りたいのです。 例えば、[コンパイル]というボタンが押されたら、Tera Term上で"make"とキー入力したのと同じような処理をさせたいのです。 ここを含めいろいろなサイトを見て、起動まではなんとかできるようになりました。 ただ、起動したTera Termのハンドルの取得がうまくいかないのか、SendMessageでメッセージを送ろうとしても、::IsWindow(hWnd)というエラーが出て強制終了してしまいます。 ウィンドウにフォーカスを与えてkeybd_eventを用いると記述しているサイトもありましたが、フォーカスの与え方が分かりません……。 どなたか教えていただければ幸いです。お願いいたしますm(__)m
- みんなの回答 (3)
- 専門家の回答
みんなの回答
ウインドウを探すには既出のEnumWindowsでウインドウを列挙するほかに,FindWindow/FindWindowExを使う方法があります.
- 0x131cc6e
- ベストアンサー率36% (42/115)
EnumWindowsを使って、コールバック関数の中でウインドウのタイトルを取ってきて(=GetWindowText)Tera Termかどうか判定してウインドウハンドルを得る、というのではどうですか? それとKEYUP/KEYDOWNのメッセージ送信ならSendMessageではなくPostMessageになると思いますよ。
お礼
御回答ありがとうございます。 EnumWindowsなどの使い方が分かっていなかったので、 具体的な流れを提示していただき、少し理解が深まりました。 VC++はC++とはかなり毛色が違って、やりにくいです。。。
ウインドウにキーボードフォーカスを与えるにはSetFocus(hWnd)を使えばよいと思います.
お礼
御回答ありがとうございます。 SetFocusが使えそうだという事が分かりました。 ウィンドウハンドルの取得がうまくできないので まだ確かめることができないのですが、 ようやくお一人でも答えていただいたことでホッとしました。 ありがとうございました。
お礼
御回答ありがとうございます。 他にやるべきことがたくさんできてしまい、 みなさんの貴重なアドバイスを試してみる時間がありません(-_-;) ですが、近いうちになんとか試してみます。 本当にありがとうございます。