Обнаруживать, если кнопка мыши уже нажата до отображения формы - программирование
Подтвердить что ты не робот

Обнаруживать, если кнопка мыши уже нажата до отображения формы

Если нажата кнопка мыши, и окно будет показано, что окно будет получать событие MouseUp при отпускании кнопки мыши.

Можно ли обнаружить, как только окно отобразится, была ли нажата кнопка мыши?

4b9b3361

Ответ 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.

Из документации GetKeyState:

Статус ключа, возвращаемый этой функцией, изменяется, когда поток считывает ключевые сообщения из очереди сообщений. Состояние не отражает состояние уровня прерывания, связанного с оборудованием. Используйте функцию GetAsyncKeyState для получения этой информации. Приложение вызывает GetKeyState в ответ на ввод ввода с клавиатуры. Эта функция извлекает состояние ключа при создании входного сообщения.

Я подозреваю, что вы должны использовать GetKeyState, но я не могу быть на 100% уверен, потому что я действительно не знаю, чего вы пытаетесь достичь с помощью этой информации.