Автор Ёерый задал вопрос в разделе Другие языки и технологии
Не работает функция GetAsyncKeyState в PureBasic и получил лучший ответ
Ответ от EBFE[гуру]
>должен возвращать 0
почему?
(v=vs.85).aspx
>If the function succeeds, the return value specifies whether the key was
>pressed since the last call to GetAsyncKeyState, and whether the key is
>currently up or down. If the most significant bit is set, the key is down,
>The return value is zero for the following cases:
>The current desktop is not the active desktop
>The foreground thread belongs to another process and the desktop does not allow the hook or the journal record.
Нигде не стоит, что будет 0, если не нажата клавиша 😉
т. е не зря на си все пишут if ( GetAsyncKeyState(VK_Z) & 0x8000 != 0) {key_down}
просто проверяйте именно этот бит.
Почему должно возвращать 0?
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение устанавливает, была ли клавиша нажата начиная с последнего вызова функции GetAsyncKeyState, и является ли клавиша в настоящий момент отпущенной или нажатой. Если старший значащий бит установлен, клавиша находится в нажатом состоянии, а если самый младший значащий бит установлен, клавиша была нажата после предыдущего вызова GetAsyncKeyState. Однако, вам не следует полагаются на это последний характер изменения; для получения дополнительной информации, см. раздел Замечания.
Windows NT/2000/XP: Возвращаемое значение равно нулю для ниже перечисленных случаев:
Текущий рабочий стол - не активный рабочий стол
Приоритетный поток принадлежит другому процессу, а рабочий стол не разрешает работу процедуры-ловушки (hook) или запись в журнал.
C++. Как перехватывать нажатия клавиш и обрабатывать их?
bool keys[256];
<...>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg,
подробнее...
помогите!!!!с делфи. с перехватом клавиш через getasynckeystate(); что не так? почему у меня первая часть неработет
а вы указывали ascii коды или scan-коды?
Петрина Александр
Просветленный
подробнее...