2012-02-24 23 views
1

テキストを他のウィンドウに送るプログラムをC#で作成しようとしています。 どのようにC#でコマンドを書いて、現在ユーザーのフォーカスを受けているウィンドウにテキストを送信するのですか?例えば現在フォーカスのあるウィンドウにテキストを送信する

:ユーザーが開いたメモ帳のウィンドウ、またはオープン見通しの手紙、または開いているExcelシートをクリックして、私のプログラム上のボタンをクリックした場合

、テキストは直接に「貼り付け」しますユーザーが最後にクリックした最後のメモ帳ウィンドウ/見出し文字/ Excelセル。

私の質問がはっきりしていることを願っています。私は経験が豊富であり、多くの用語がありません。

+0

タイトルに「C#」などを追加しないでください。それがタグのためのものです。 –

答えて

3

は、メインウィンドウを最小化または非表示にすることで、焦点の外にアプリケーションを取り、その後、最後に

SendKeys.SendWait("Hello World!");  

を使用してテキストを送信、あなたのメインウィンドウを復元します。


コードはメインフォームで実行されている場合は、あなたが行うことができ、この

this.Visible = false; 
SendKeys.SendWait("Hello World!");  
this.Visible = true; 
+0

これは、フォームがデフォルトでフォーカスを持つ何らかの種類のテキストコントロールを持っている限り機能します。呼び出しの前にアプリケーションを知っている場合は、コントロールにフォーカスを当てたキーを送信する可能性があります。あなたは{TAB} {TAB} {TAB}か何かを送ることができ、さらにはCTRLやALTの組み合わせを送ることもできます。 – carny666

+0

ありがとうございました! – Zephram

+0

他の実行中のプログラムの管理を制御する方法を見つけなければなりません。 – Zephram

2

オリヴィエの応答は実際に私の元には「達成可能ていないよう比べて、より正確なようだ(と私に何かを:)教え) "あなたは例が必要な場合は、これを見てみましょう:

http://www.codeproject.com/Articles/18366/Sending-Keystrokes-to-another-Application-in-C

はしかし、より複雑なレベルで、に呼び出すためのAPIなしで、あなたはこのソリューションを超えて行うことができますはるかにありません。

+0

私にそれを打つ。私は同意しますが、あなたがAPIを使って言うように、挿入するプログラムがアプリケーションの一部であれば、それを突き破る方法があるはずです。しかし、それはやや異なる質問でしょう。 – Joshua

+0

実際には、Olivierの答えを調べた後、彼は正しいと思っています。私は新しいことを学びます:) –

+0

それはうまくいくかもしれませんが、他のプログラムのウィンドウに正確に焦点を当てなければなりません。アプリケーションで 'テキストフィールド'を見つけても、それが機能する最後のものだったと思いますが、単純なものとして私を攻撃しません。しかし、それは私にバグであるように見えます。 – Joshua

関連する問題