一定時間ユーザ入力がないことを検知する


deldel  2015-05-13 18:45:54  No: 47301

一定時間、「PCの」ユーザ入力がないことを検知するには、
ここにあるようにGetLastInputInfoを使えばできますが、
https://www.petitmonte.com/bbs/answers?question_id=2022

自分のアプリだけに、一定時間ユーザ入力がないことを検知する方法はあるでしょうか?

単純に考えますと、タイマーでカウントしておき、すべてのコンポーネントの
MouseMoveでそのカウント値を0にすればできそうですが、
どうもスマートではないので・・・


take  2015-05-13 20:34:42  No: 47302

すべてのコンポーネントのMouseMoveイベントで監視するぐらいなら

var
  aMouse : TPoint;
begin
  GetCursorPos(aMouse);                        

グローバルなマウス位置を監視した方が良いでしょうけど
キー入力とかほかの問題も考えないといけないのではないでしょうか?


deldel  2015-05-13 21:50:27  No: 47303

この場合、
if (Left <= aMouse.x) and (aMouse.x <= Left + Width)
   and (Top <= aMouse.y) and (aMouse.y <= Top + Height) then
     カウンター := 0;
と、タイマーイベントで監視すればいいんですかね?

あ〜でも、マウスカーソルがアプリ内部にあっても、入力が無いことを
検知したいのでこれではだめですね・・・

キー入力も検知したいのですが、これはOnChangeイベントでなんとかなりそうです。


tor  2015-05-14 02:44:45  No: 47304

アプリケーションに対して「ユーザ入力がある」ということをどう定義するかですね。
アプリケーションがアクティブな状態でキー入力やマウスクリックなどの操作があれば、それは入力があったとみなしていいでしょう。
でも、ただマウスを動かしているだけの場合、どういう条件だったら入力があったとみなすのでしょうか?

例えば電卓を起動して、アプリケーションのウィンドウの上に持って行って、そこでマウスを使って計算を始めた場合、「アプリケーションに対する入力」と考えますか?
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアオッーオッアエィ木ゥ ークコエキコーケ  書込者ノト:ロ 「・「   ン

すみません、ちょっと質問に言葉が足りなかったです。

今作成しているのはチャットアプリのようなもので、
一定時間操作が無ければ非表示にしようと思っているのですが、
例えば、相手の文章を読んでいる最中に時間が過ぎてしまうと、
非表示になってしまい、これではまずいので質問させてもらいました。
ヘヘなら読んでいる最中にも恐らく発生するから、
まぁ普通の使用方法なら大丈夫(完璧ではありませんが・・・)かと思った次第です。
スススススススススススススススススススススススススススススススススススススススス
ニコ 通りすがり
トコ イーアオッーオッアエィ木ゥ アーコーアコエー  書込者ノト:ロ 」。 。 ン

それなら
アョタイムアウト時間をノに設定したタイマをおき、マモあたりでスタートする
イョユノ要素ィメニューやボタンゥのクリックイベント全てでタイマをリセットする
ウョフォームのヒミをヤにしてマヒトッマヒユイベントでもタイマをリセットする
エョタイマがトリガされたら一定時間経過とみなす
なんてのはどうでしょう。ヤヤはナをニにしてヤに戻すとリセットされます。
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアオッーオッアエィ木ゥ アーコウカコーア  書込者ノト:ロ 「・「   ン

ありがとうございます。そうですね。これならヘヘと同じ感じでできそうです。
でもやはり、
>イョユノ要素ィメニューやボタンゥのクリックイベント全てでタイマをリセットする
これが面倒ですよねぇ・・・

やはり地道な方法しかないのでしょうか・・・
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアオッーオッアエィ木ゥ アウコークコオー  書込者ノト:ロ 」 ァ」ハノ

 ン

ニにヤチナを置いて、マヘで処理するのはどうでしょう。
ラペフツユヤヤマホトマラホとメツユヤヤマホトマラホャヲサラペヒナルトマラホャヲサラペヘマユモナヘマヨナヲサあたりを捕まえればいいのかな。
スススススススススススススススススススススススススススススススススススススススス
ニコ 通りすがり
トコ イーアオッーオッアエィ木ゥ アウコーケコオカ  書込者ノト:ロ 」。 。 ン

そうですか?タイマリセットする作っといて全てのイベントハンドラの先頭で
呼び出すだけですよね?コピペで大丈夫です。
スススススススススススススススススススススススススススススススススススススススス
ニコ ネ
トコ イーアオッーオッアエィ木ゥ アオコーアコアカ  書込者ノト:ロ 」「。 ン

ヲサさん案の、メッセージを監視するサンプルを作ってみました。
ヲサ※ただタイマーじゃ寂しいので、メッセージと動作の視覚化も付けときました。
ヲサというか、そっちの方がコード量多いかも!?ヲサ←ヲサモョヤィゥサ

ヲサヤチ/ヤチナヲサはお好みで選択してください…。
ヲサヤチは一つしか使えませんが、ヤチナならいくつでも使えます。

ヲサヲサヤニアヲサスヲサィヤニゥ
ヲサヲサヲサヲサヤアコヲサヤヤサ
ヲサヲサヲサヲサヘアコヲサヤヘサ
ヲサヲサヲサヲサツアコヲサヤツサ
ヲサヲサヲサヲサヲサニティモコヲサヤマゥサ
ヲサヲサヲサヲサヲサヤアヤィモコヲサヤマゥサ
ヲサヲサ
ヲサヲサヲサヲサヲサミヲサ宣言ヲサ
ヲサヲサヲサヲサニフヘコヲサテサ
ヲサヲサヲサヲサニヘテコヲサノサ
ヲサヲサヲサヲサヲサチヘィヲサヘコヲサヤヘサヲサヲサネコヲサツゥサ
ヲサヲサ
ヲサヲサヲサヲサヲサミヲサ宣言ヲサ
ヲサヲササ

ヲサヲサニアコヲサヤニアサ

、メヲサェョ

ヲサヤニアョニティモコヲサヤマゥサ

ヲサヲサチョマヘコスチヘサ
ヲサヲサヤアョノコスウーーーサ

ヲサヤニアョチヘィヲサヘコヲサヤヘサヲサヲサネコヲサツゥサ

ヲサヲサヘモコヲサモサ

ヲサヲサヲサヘョヲサ
ヲサヲサヲサヲサラペフツユヤヤマホトマラホコヲサヲサヲサヘモコスァフツユヤヤマホトマラホヲサ。ァサ
ヲサヲサヲサヲサラペメツユヤヤマホトマラホコヲサヲサヲサヘモコスァメツユヤヤマホトマラホヲサ。ァサ
ヲサヲサヲサヲサラペヘマユモナヘマヨナコヲサヲサヲサヲサヲサヘモコスァヘマユモナヘマヨナヲサ。ァサ
ヲサヲサヲサヲサラペホテフツユヤヤマホトマラホコヲサヘモコスァホテフツユヤヤマホトマラホヲサ。ァサ
ヲサヲサヲサヲサラペホテメツユヤヤマホトマラホコヲサヘモコスァホテメツユヤヤマホトマラホヲサ。ァサ
ヲサヲサヲサヲサラペホテヘマユモナヘマヨナコヲサヲサヲサヘモコスァホテヘマユモナヘマヨナヲサ。ァサ
ヲサヲサヲサヲサラペヘマユモナラネナナフコヲサヲサヲサヲサヘモコスァヘマユモナラネナナフヲサ。ァサ
ヲサヲサヲサヲサラペヒナルトマラホコヲサヲサヲサヲサヲサヲサヲサヘモコスァヒナルトマラホヲサ。ァサ
ヲサヲサ
ヲサヲサヲサヲサナサ
ヲサヲササ

ヲサヲサヲサヲサヤアョナヲサヲサ
ヲサヲサヲサヲサヘアョフョチィァタイマー再起動!ァゥサ
ヲサヲサヲサヲサニフヘコスラペホユフフサ
ヲサヲササ
ヲサヲサヤアョナコスニサ
ヲサヲサヤアョナコスヤサ

ヲサヲサヲサヘョスニフヘヲサヲサ
ヲサヲサヲサヲサノィニヘテゥサ
ヲサヲサヲサヲサヘアョフロヘアョフョテュアンコスニィァ・ィ・ゥァャヲサロヘモャヲサニヘテンゥサ
ヲサヲサヲサヲサ
ヲサヲサヲサヲサニヘテコスアサ
ヲサヲサヲサヲサヘアョフョチィヘモゥサ
ヲサヲササ

ヲサヲサニフヘコスヘョサ

ヲサヤニアョヤアヤィモコヲサヤマゥサ

ヲサヲサヤアョナコスニサ
ヲサヲサヘアョフョチィァ※※※ヲサ時間ですよ!!※※※ァゥサ

スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアオッーオッアエィ木ゥ アオコオケコウー  書込者ノト:ロ 「・「   ン
モコ 

通りすがりさん、ありがとうございます。
コピペでできるんですが、沢山あったら大変なのと、
追加や修正した場合に忘れることもありますし・・・

さん、ネさんありがとうございます。
これなら一か所に書いておけばできますね!!
いや〜勉強になりましたヲサィ゜゜ゥ


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加