如果按下鼠标按钮并显示一个窗口,当释放鼠标按钮时窗口将收到MouseUp事件。
一旦显示窗口,是否可以检测是否已按下鼠标按钮?
答案 0 :(得分:16)
我会试试这个:
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;
答案 1 :(得分:9)
要直接回答您的问题,您可以使用GetKeyState
或GetAsyncKeyState
测试鼠标按钮状态。您需要的虚拟密钥代码为VK_LBUTTON
。
这些之间的区别在于GetKeyState
报告当前活动排队消息发布到队列时的状态。另一方面,GetAsynchKeyState
会在您拨打GetAsynchKeyState
的瞬间为您提供状态。
来自GetKeyState
的文档:
当此线程从其消息队列中读取关键消息时,此函数返回的键状态会发生变化。状态不反映与硬件相关的中断级状态。使用GetAsyncKeyState函数检索该信息。 应用程序调用GetKeyState以响应键盘输入消息。此函数在生成输入消息时检索密钥的状态。
我怀疑你应该使用GetKeyState
,但我无法100%确定,因为我实际上并不知道你想用这些信息实现什么。