- PR -

キーボードの自動入力について[C#]

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-07 17:09
 どうも、コントロールキーが怪しいですね。
System.Windows.Forms.SendKeys.SendWait("{TAB}");
System.Windows.Forms.SendKeys.SendWait("+AB+C");

これだと期待通り(でもないが)、ボタンの次にあるテキストボックスにフォーカスが移り、ABCが入力されました。が、MSDNに書いてある通りだとすると、「AbC」が入力されるはずなんですけどねぇ。。。

引用:

Shift キー、Ctrl キー、Alt キーの各キーの任意の組み合わせを押したまま、ほかの複数のキーを押すように指定するには、これらのキーのコードをかっこで囲みます。たとえば、Shift キーを押しながら E キーと C キーを押すように指定する場合は、"+(EC)" を使用します。Shift キーを押しながら E キーを押してから、Shift キーを押さずに C キーを押す場合は、"+EC" を使用します。


 "B"が、"Shift+B"を意味するなら、期待通りですけど。。。あら、
System.Windows.Forms.SendKeys.SendWait("+aB+C");
が、「ABC」なので、大文字は大文字キーらしい。。。


追加:
prvForm2を、他のフォームとします。
prvForm2には、テキストボックスが1つあります。
このテキストボックスに何か入力してあるとします。
prvForm2でのフォーカスはこのテキストボックスにあるとします。
このとき、Form1から以下のコードを実行します。

prvForm2.Activate();
System.Windows.Forms.SendKeys.SendWait("{HOME}");
System.Windows.Forms.SendKeys.SendWait("+({RIGHT}{END})");

すると、prvForm2のテキストボックスに入力された文字すべてが選択状態になります。このことより、SendKeysが期待通りに動作していると判断します。

が、コントロールキーを表すという"^"が入ると、フォーカスがロストします。何でだろう?

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-04-07 17:16 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-04-07 17:24
SendKey 物でしたら、(一般的に)
Ctrl+ のショートカットキー 関係は不調になる率が昔から高い
ため、 メニューの ALT+ をできるだけ使うように心がけています。

迷信でしょうか ?

[ メッセージ編集済み 編集者: MMX 編集日時 2004-04-08 10:04 ]
シゲル
常連さん
会議室デビュー日: 2004/04/03
投稿数: 27
投稿日時: 2004-04-07 18:22
SendWait("^c")がだめならと、
MMXさんのおっしゃるとおり、
(ALT+E)+C でどうだと
やってみましたが、
やはり、効いたり効かなかったりでした。

あと、{DEL}もちょっと試してみたのですが、
これも効いたり効かなかったりです。


大変恐縮ですが、SendInputを試してみたいのですが、
どなたかやり方を懇切丁寧に教えていただけないでしょうか?


ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-04-07 18:29
Googleで「SendInput」で検索するとVBですがSendInputのサンプルの載っているページが
最初にみつかります。そこを参考にしてみてはどうでしょうか
シゲル
常連さん
会議室デビュー日: 2004/04/03
投稿数: 27
投稿日時: 2004-04-07 19:34
引用:

ゆうじゅんさんの書き込み (2004-04-07 18:29) より:
Googleで「SendInput」で検索するとVBですがSendInputのサンプルの載っているページが
最初にみつかります。そこを参考にしてみてはどうでしょうか



実はこのページはすでに昨日見つけています。
で、結局よくわからなかったので・・・
でも、もう一度がんばってトライしてみようと思います。
シゲル
常連さん
会議室デビュー日: 2004/04/03
投稿数: 27
投稿日時: 2004-04-07 21:23
引用:

シゲルさんの書き込み (2004-04-07 19:34) より:
引用:

ゆうじゅんさんの書き込み (2004-04-07 18:29) より:
Googleで「SendInput」で検索するとVBですがSendInputのサンプルの載っているページが
最初にみつかります。そこを参考にしてみてはどうでしょうか



実はこのページはすでに昨日見つけています。
で、結局よくわからなかったので・・・
でも、もう一度がんばってトライしてみようと思います。




うーーん。無理だ・・・
誰かたすけてー
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-04-07 23:34
入力を横取り・妨害するようなものは、他にありませんか?

キー入力の便利ソフト類、
スペルチェック・入力補完(カーソル画像がプルプル震えるのが多い)
キー入れ替え
短い時間間隔で監視するようなもの
カーソルの位置を補正するような常駐ソフト(○○マウス)
あとは、キーロガーとか!

[ メッセージ編集済み 編集者: MMX 編集日時 2004-04-08 10:05 ]
シゲル
常連さん
会議室デビュー日: 2004/04/03
投稿数: 27
投稿日時: 2004-04-08 01:56
引用:

MMXさんの書き込み (2004-04-07 23:34) より:
入力を横取り・妨害するようなものは、他にありませんか?

キー入力の便利ソフト類、
スペルチェック・入力補完(カーソル画像がプルプル震えるのが多い)
キー入れ替え
短い時間間隔で監視するようなもの
カーソルの位置を補正するような常駐ソフト(○○マウス)




それに類するようなプログラムは動いていません。

SendInputの使い方自体がようわからんとです・・・(←どこの人???)

実はまだWindowsのプログラムをはじめて2週間くらいで、
今ひとつよくわかっとらんのですよ。

きっとSendInputさえできれば問題は解決するような気がします。
SendInputの場合、boolの戻り値があるんですよね?
だから、もしきちんと処理できなかったら、
Sendkeyと違ってリトライをかけられますもんね。

しかし、C#って情報が少なすぎますね・・・
インターネットを探せば、C++もVBもソースコードの例があるのに
C#にはない・・・
あるのは、簡単に使えて、実際は使い物にならないSendKeyだけ・・・はぁ・・・

と、ぼやいても仕方がないのだが・・・






スキルアップ/キャリアアップ(JOB@IT)