マウスボタンを押してウィンドウを表示すると、マウスボタンが離されたときにMouseUpイベントが表示されます。フォームが表示される前にマウスボタンが既に押されているかどうかを検出
ウィンドウが表示されたら、マウスボタンが既に押されているかどうかを検出できますか?
マウスボタンを押してウィンドウを表示すると、マウスボタンが離されたときにMouseUpイベントが表示されます。フォームが表示される前にマウスボタンが既に押されているかどうかを検出
ウィンドウが表示されたら、マウスボタンが既に押されているかどうかを検出できますか?
私はこれをしようとするだろう:
procedure TForm1.FormShow(Sender: TObject);
begin
if GetKeyState(VK_LBUTTON) and $8000 <> 0 then
ShowMessage('Left mouse button is pressed...')
else
ShowMessage('Left mouse button is not pressed...')
end;
が直接あなたの質問に答えるために、あなたはGetKeyState
またはGetAsyncKeyState
でマウスボタンの状態をテストすることができます。必要な仮想キーコードはVK_LBUTTON
です。
これらの違いは、GetKeyState
が、現在アクティブなキューに入れられたメッセージがキューに投稿された時点の状態を報告することです。一方、GetAsynchKeyState
は、GetAsynchKeyState
と呼んでいる瞬間の状態を示します。 GetKeyState
のドキュメントから
:
スレッドがメッセージ・キューからのキーメッセージを読み取って、この機能の変化から返されたキーの状態。ステータスは、ハードウェアに関連する割り込みレベルの状態を反映していません。その情報を取得するには、GetAsyncKeyState関数を使用します。 アプリケーションは、キーボード入力メッセージに応答してGetKeyStateを呼び出します。この関数は、入力メッセージが生成されたときにキーの状態を取得します。
GetKeyState
を使用する必要があると思われますが、この情報で達成しようとしていることが実際にわからないため、100%確信できません。
GetAsyncKeyState(VK_LBUTTON) – ComputerSaysNo
'GetAsyncKeyState'は物理的なマウスボタンの状態を返しますが、' GetKeyState'は論理的なものを返します(マウスの 'Switch primary and secondary buttons'オプションで何を設定したのか設定)。 – TLama