пытался найти ответ на форуме, безуспешно.
как сделать максимально ненагружаемое на бота отслеживание нажатой горячей клавиши. есть варианты?
таймер + гетстат? но по факту таймер должен висеть и чекать каждые 10 милисек коавишу.
есть другие варианты?
1. Redear - 23 Февраля, 2023 - 11:40:18 - перейти к сообщению
2. Zireael - 23 Февраля, 2023 - 12:09:28 - перейти к сообщению
CODE:
#define MOD_ALT 1
#define MOD_CONTROL 2
#define MOD_SHIFT 0x0004
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");
createdialog(2);
textbkcolor(65280, 0);
textout(0, 300, 20, "Нажмите Z или Alt + 2 или Ctrl + 3", 0);
loop()sleep(10);
function getmessage(2, WM_CREATE)
{
// регистрируем хоткей
RegisterHotKey(gethwnd(2), 111, 0, 90); // 111 - идентификатор (любое число), 90 - код клавиши z
RegisterHotKey(gethwnd(2), 222, MOD_ALT, 50); // Alt + 2
RegisterHotKey(gethwnd(2), 333, MOD_CONTROL, 51); // Ctrl + 3
}
function getmessage(2, WM_HOTKEY)
{
if(message.wparam==111)messagebox("Нажата клаиша Z");
if(message.wparam==222)messagebox("Нажаты Alt + 2");
if(message.wparam==333)messagebox("Нажаты Ctrl + 3");
}
#define MOD_CONTROL 2
#define MOD_SHIFT 0x0004
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");
createdialog(2);
textbkcolor(65280, 0);
textout(0, 300, 20, "Нажмите Z или Alt + 2 или Ctrl + 3", 0);
loop()sleep(10);
function getmessage(2, WM_CREATE)
{
// регистрируем хоткей
RegisterHotKey(gethwnd(2), 111, 0, 90); // 111 - идентификатор (любое число), 90 - код клавиши z
RegisterHotKey(gethwnd(2), 222, MOD_ALT, 50); // Alt + 2
RegisterHotKey(gethwnd(2), 333, MOD_CONTROL, 51); // Ctrl + 3
}
function getmessage(2, WM_HOTKEY)
{
if(message.wparam==111)messagebox("Нажата клаиша Z");
if(message.wparam==222)messagebox("Нажаты Alt + 2");
if(message.wparam==333)messagebox("Нажаты Ctrl + 3");
}
3. Redear - 23 Февраля, 2023 - 12:38:53 - перейти к сообщению
Zireael пишет:
CODE:
#define MOD_ALT 1
#define MOD_CONTROL 2
#define MOD_SHIFT 0x0004
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");
createdialog(2);
textbkcolor(65280, 0);
textout(0, 300, 20, "Нажмите Z или Alt + 2 или Ctrl + 3", 0);
loop()sleep(10);
function getmessage(2, WM_CREATE)
{
// регистрируем хоткей
RegisterHotKey(gethwnd(2), 111, 0, 90); // 111 - идентификатор (любое число), 90 - код клавиши z
RegisterHotKey(gethwnd(2), 222, MOD_ALT, 50); // Alt + 2
RegisterHotKey(gethwnd(2), 333, MOD_CONTROL, 51); // Ctrl + 3
}
function getmessage(2, WM_HOTKEY)
{
if(message.wparam==111)messagebox("Нажата клаиша Z");
if(message.wparam==222)messagebox("Нажаты Alt + 2");
if(message.wparam==333)messagebox("Нажаты Ctrl + 3");
}
#define MOD_CONTROL 2
#define MOD_SHIFT 0x0004
external(INT, "RegisterHotKey", "RegisterHotKey", "User32.dll");
createdialog(2);
textbkcolor(65280, 0);
textout(0, 300, 20, "Нажмите Z или Alt + 2 или Ctrl + 3", 0);
loop()sleep(10);
function getmessage(2, WM_CREATE)
{
// регистрируем хоткей
RegisterHotKey(gethwnd(2), 111, 0, 90); // 111 - идентификатор (любое число), 90 - код клавиши z
RegisterHotKey(gethwnd(2), 222, MOD_ALT, 50); // Alt + 2
RegisterHotKey(gethwnd(2), 333, MOD_CONTROL, 51); // Ctrl + 3
}
function getmessage(2, WM_HOTKEY)
{
if(message.wparam==111)messagebox("Нажата клаиша Z");
if(message.wparam==222)messagebox("Нажаты Alt + 2");
if(message.wparam==333)messagebox("Нажаты Ctrl + 3");
}
спасибо, немного не понятно, нет ли ошибки, почему название функции getmessagе повторяются
4. Zireael - 23 Февраля, 2023 - 12:56:55 - перейти к сообщению
Цитата:
нет ли ошибки
Нет.
Цитата:
почему название функции getmessagе повторяются
В данном случае это не название функции, а способ указать какое сообщение нужно обработать.
5. neba2101 - 14 Сентября, 2024 - 06:23:09 - перейти к сообщению
Возможно отслеживать нажатия сразу на все клавиши на мыши и клавиатуре через getmessage без регистрации всех значений клавиш?
6. Zireael - 14 Сентября, 2024 - 06:46:35 - перейти к сообщению
Цитата:
Возможно отслеживать нажатия сразу на все клавиши на мыши и клавиатуре через getmessage без регистрации всех значений клавиш?
Нет.
Зачем это нужно?
7. neba2101 - 14 Сентября, 2024 - 07:31:07 - перейти к сообщению
[quote=Zireael]
Для отслеживания нажатой клавиши и дублирования через ардуино. Можно использовать для нажатий клавиш по удалёнке, если игра не позволяет делать клики по удалёнке.
Цитата:
Зачем это нужно?
Для отслеживания нажатой клавиши и дублирования через ардуино. Можно использовать для нажатий клавиш по удалёнке, если игра не позволяет делать клики по удалёнке.
8. Zireael - 14 Сентября, 2024 - 07:46:14 - перейти к сообщению
9. Kibor - 14 Сентября, 2024 - 07:52:11 - перейти к сообщению
neba2101 пишет:
Возможно отслеживать нажатия сразу на все клавиши на мыши и клавиатуре
Цитата:
int k[256];
string S;
int A=0;
loop()
{
initialarray(#k[0], 0);
for (int n=0; n<256; n++)k[n]=getkeystate(n);
S="";
for (int n1=0; n1<256; n1++)
{
if (k[n1]==1)S=S+" "+format(n1);
}
if (size(S)!=A)
{
textout(0, 100, 50, S+" ", 0);
A=size(S);
}
}
string S;
int A=0;
loop()
{
initialarray(#k[0], 0);
for (int n=0; n<256; n++)k[n]=getkeystate(n);
S="";
for (int n1=0; n1<256; n1++)
{
if (k[n1]==1)S=S+" "+format(n1);
}
if (size(S)!=A)
{
textout(0, 100, 50, S+" ", 0);
A=size(S);
}
}