C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: アクティブフォームアプリケーションにキー入力


(過去ログ 132 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■77977 / inTopicNo.1)  アクティブフォームアプリケーションにキー入力
  
□投稿者/ KH (24回)-(2015/12/06(Sun) 07:54:37)

分類:[C#] 

アクティブフォームアプリケーションに自作のアプリケーションからキー入力したいのですが
SendKeys.Send("B");
としたところ

型 'System.InvalidOperationException' のハンドルされていない例外が System.Windows.Forms.dll で発生しました

追加情報:SendKeys は、Windows のメッセージをハンドルしないため、このアプリケーションの中で実行できません。 アプリケーションがメッセージをハンドルするように変更するか、または SendKeys.SendWait メソッドを使用してください。

とエラーになってしましました、ですので
SendKeys.SendWait("B");
Thread.Sleep(180);
SendKeys.SendWait("B");
Thread.Sleep(180);
SendKeys.SendWait("B");

としましたら確かに入力はされるのですがスレッドスリープの時間と全く時間が合いません。
アドバイス頂けましたら嬉しいです。
引用返信 編集キー/
■77979 / inTopicNo.2)  Re[1]: アクティブフォームアプリケーションにキー入力
□投稿者/ Azulean (551回)-(2015/12/06(Sun) 08:53:55)
No77977 (KH さん) に返信
> としましたら確かに入力はされるのですがスレッドスリープの時間と全く時間が合いません。

「時間が合わない」という部分をもう少し詳細に説明していただいた方が良いかと。

180ms(ミリ秒) = 0.18 秒の待ち時間だと、正直、体感できない(=待ち時間なしに見える)ことの方が多いと思います。
引用返信 編集キー/
■77985 / inTopicNo.3)  Re[2]: アクティブフォームアプリケーションにキー入力
□投稿者/ KH (25回)-(2015/12/06(Sun) 14:22:22)
No77979 (Azulean さん) に返信
お世話になっております。
いえ、0.18秒ではなく数秒とすごく長いのです。
引用返信 編集キー/
■77996 / inTopicNo.4)  Re[3]: アクティブフォームアプリケーションにキー入力
□投稿者/ Azulean (555回)-(2015/12/06(Sun) 20:30:16)
No77985 (KH さん) に返信
> いえ、0.18秒ではなく数秒とすごく長いのです。

つまり、SendWait がそれだけかかるということでしょう。
Send が使えるようにあなたのアプリを見直すことも考えてみてください。
(該当の例外メッセージは、あなたのアプリ(SendKeys.Send を呼ぶアプリ)の構造が問題で表示されるものです)
引用返信 編集キー/
■77999 / inTopicNo.5)  Re[4]: アクティブフォームアプリケーションにキー入力
□投稿者/ KH (26回)-(2015/12/07(Mon) 08:38:20)
2015/12/07(Mon) 08:39:54 編集(投稿者)
2015/12/07(Mon) 08:39:48 編集(投稿者)

実験をしました。メモ帳にSendKeys.SendWait("B");を1000回試してみたところ。
約、8秒でした。ですので私の環境で
SendKeys.SendWait("B")の処理は0.008秒という事になります。
ですので、スレッドスリープを
Thread.Sleep(180);
Thread.Sleep(172);
として、メモ帳でこのようにした所とてもうまくいきました。

メモ帳ではなく、今回やろうとしているアプリと相性が悪い様です。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -