クリックを検出して、クリックが実際に発生した後にのみ関数を呼び出すプリフォームを検出しようとしています。
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
protected override void WndProc(ref Message m) {
//Detect a Click
if (m.Msg == 0x210 && m.WParam.ToInt32() == 513){
lastClick = DateTime.Now;
clickedHappened();
Debug.Print("Click Detected!");
}
base.WndProc(ref m);
}
private void clickedHappened(){
MessageBox.Show("Click Already Happened");
}
実際のクリックが行われる前にWndProcが発生すると思います。タイマー
を使わずにこれを解決する方法があるかどうか疑問に思っていましたか? または;sleep(400)
私が思いつく唯一の解決策は timer を使用することですが、既存のタイマーのいくつかを取り除きたいです。WndProcで検出されてから 200 ~ 350 ミリ秒後にクリックが実際に発生するようです。