Обнаруживать, если кнопка мыши уже нажата до отображения формы
Если нажата кнопка мыши, и окно будет показано, что окно будет получать событие MouseUp при отпускании кнопки мыши.
Можно ли обнаружить, как только окно отобразится, была ли нажата кнопка мыши?
Ответ 1
Я бы попробовал это:
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;
Ответ 2
Чтобы ответить на ваш вопрос напрямую, вы можете проверить состояние кнопки мыши с помощью GetKeyState или GetAsyncKeyState. Виртуальный key code вам нужен VK_LBUTTON.
Разница между ними заключается в том, что GetKeyState сообщает состояние в то время, когда текущее сообщение с ожидающей очередью было отправлено в вашу очередь. С другой стороны, GetAsynchKeyState дает вам состояние в тот момент, когда вы вызываете GetAsynchKeyState.
Статус ключа, возвращаемый этой функцией, изменяется, когда поток считывает ключевые сообщения из очереди сообщений. Состояние не отражает состояние уровня прерывания, связанного с оборудованием. Используйте функцию GetAsyncKeyState для получения этой информации. Приложение вызывает GetKeyState в ответ на ввод ввода с клавиатуры. Эта функция извлекает состояние ключа при создании входного сообщения.
Я подозреваю, что вы должны использовать GetKeyState, но я не могу быть на 100% уверен, потому что я действительно не знаю, чего вы пытаетесь достичь с помощью этой информации.