プロが教えるわが家の防犯対策術!

C#2003でウィンドウズアプリケーションを作っています。

(1)ある処理開始
(2)ユーザーが任意のキーもしくはマウスを動かす
(3)処理を停止する

ということを実現したいのですが、(2)~(3)の流れはどのように実現すればいいのでしょうか。
アドバイスお願いします(どこかへのリンクでもかまいません)

A 回答 (4件)

System.ComponentModel.BackgroundWorkerだと再開/一時停止を行えるメソッドが無かったかと記憶しています。


System.Threading.Threadで実装してください。
http://msdn.microsoft.com/ja-jp/library/system.t …
    • good
    • 0

タイマーで定期間隔監視するようにして、


キーボード状態はGetAsyncKeyState, GetKeyboardState, GetKeyState等で取得、マウス座標はControl.MousePositionを見るのはいかがですか。

GetAsyncKeyStateとGetKeyboardStateはWin32 APIですので、使用には以下のような宣言が必要です。(あくまでも例です。Cの型と矛盾がなければ以下の宣言は微調整がききます)

[DllImport("user32.dll")]
static extern short GetAsyncKeyState(int vKey);

[DllImport("user32.dll")]
static extern bool GetKeyboardState(byte [] lpKeyState);

[DllImport("user32.dll")]
static extern short GetKeyState(VirtualKeyStates nVirtKey);

詳細はMSDNを参照して下さい。
http://www.microsoft.com/japan/msdn/

Win32APIの宣言は以下のサイトから取りました。
http://www.pinvoke.net/
    • good
    • 0

マウスの方は分かりませんので、キーボードの方だけ参考意見として。



フォームがアクティブでない場合ということで、ホットキーの設定をしなくてはなりません。F1押すとヘルプが出るようなイメージで、他のキーを割り当てます。

また、"(1)ある処理開始"中に停止ということなので、これは非同期で動かす必要があるかと思います。その辺は大丈夫でしょうか?
    • good
    • 0

フォームのMouseMove(Click?) イベント、KeyDown か KeyPress イベントあたりで処理を停止するように

すればいいんじゃないでしょうか

この回答への補足

回答ありがとうございました。

言い忘れてました。すみません補足します。
フォームがアクティブになっていない場合でも停止処理をさせたく思い、このような場合どうすればよいか質問させていただきました。

補足日時:2006/10/21 03:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!