- - PR -
キーボードの自動入力について[C#]
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-04-06 16:33
C#で、フォーム内のボタンをクリックすると、
自動的に(システム的に)[ctrl+c]を押下するという処理をしたいのですが、 どのようにすればよいかわかりません。 もし、ご存知の方がいれば、教えてください。 | ||||
|
投稿日時: 2004-04-06 16:49
プラットフォームSDKの、「SendInput」を参考にしてください。もし、MSDN 2003年2月がインストールされているなら、次の行をコピーして、MSDNの窓にペースト。
ms-help://MS.MSDNQTR.2003FEB.1041/jpwinui/html/_win32_sendinput.htm MSDN Onlineでは、VisualStudioの機能としてのSendInputが検索され、プラットフォームSDKからは出てきませんでした?! | ||||
|
投稿日時: 2004-04-06 17:09
クリップボードにコピーしたいのであれば、
System.Windows.Forms.Clipboardクラスはどうでしょう。 | ||||
|
投稿日時: 2004-04-06 18:20
Jittaさま
>プラットフォームSDKの、「SendInput」を参考にしてください。 >もし、MSDN 2003年2月がインストールされているなら 残念ながらインストールされていません。 今ダウンロードをしていますが、結構時間がかかりそうです。 できれば詳しく教えていただけると助かります。 あと、今、SendKeys.Send("^c");を試してみたのですが、 これだと、[ctrl+c]が効いたり効かなかったりするようです。 なぜでしょう??? ----------------------- todoさま >クリップボードにコピーしたいのであれば、 >System.Windows.Forms.Clipboardクラスはどうでしょう。 単純にクリップボードにコピーしたいわけではないので・・・ | ||||
|
投稿日時: 2004-04-07 00:51
SendInput関数は何も”MSDN 2003年2月”しか載っていない関数ではありません。
少々古いMSDNでも載っているはずです。 ちなみに、英語版なら下記にあります。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/sendinput.asp > これだと、[ctrl+c]が効いたり効かなかったりするようです。 Sendメソッドは内部的には、SetKeyboardState関数を呼び出していますが、 恐らく、メッセージキューにあるメッセージ処理の進度によって 次の動作に影響しているのでしょう。 一度SendWaitメソッドを使用してみはどうでしょうか? | ||||
|
投稿日時: 2004-04-07 08:39
え〜っと、その下のURIが、MSDN 2003/4用だっただけで、プラットフォームSDKなので、他のバージョンでも載っています。そのために、『プラットフォームSDKの「SendInput」を参考』と書いているのですが… | ||||
|
投稿日時: 2004-04-07 14:26
>> これだと、[ctrl+c]が効いたり効かなかったりするようです。
> >Sendメソッドは内部的には、SetKeyboardState関数を呼び出していますが、 >恐らく、メッセージキューにあるメッセージ処理の進度によって >次の動作に影響しているのでしょう。 >一度SendWaitメソッドを使用してみはどうでしょうか? 実はSendでだめだとわかったときに、 すぐにSendWaitも試したのですが、 やはり同じように効いたり、効かなかったりでした。 SendWaitした後で、別のウィンドウにフォーカスが切り替わるような処理なので、 それがいけないのかと、SendWaitの後の処理をすべてなくし、 SendWaitを最後の処理にして試してみたのですが、 やはり同じように[ctrl+c]は効いたり効かなかったりでした。 さっぱり理由がわかりません。 ぼくの使い方が間違っているのでしょうか? これって単純に SendKeys.SendWait("^c"); とすればよいのですよね? それとも他に何か宣言したりする必要や コツのようなものがあるのでしょうか? 非常に困ってしまいました。 それで、SendInputの方も試してみようと思い、 antさんに教えてもらった英語版を見たのですが、 これがまたよくわかりません・・・ もしご存知でしたら、使い方を詳しくご教授いただけるとたすかります。 | ||||
|
投稿日時: 2004-04-07 14:43
あと、不思議なことに、
アプリケーションを立ち上げた最初のSendWait("^c")の処理だけは、 必ずきちんと[CTRL+C]がききます。 しかし、その後は、何度か繰り返さないと効かないことが ほとんどで、時々一度で効いたりすることもあります。 これはなぜでしょう? 起動直後の最初の処理と2回目以降の処理には 何か違いがあるのでしょうか? |