Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Определение статуса клавиш клавиатуры
cirus
сообщение 11.1.2019, 20:28
Сообщение #21


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Вроде как отслеживалось только нажатие. Зажатие проверялось только в луа.
Кстати, в 2.40 работает на луа, в 2.41 нет. В чём разница?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sreg
сообщение 11.1.2019, 21:09
Сообщение #22


**

Neophyte
Сообщений: 31
Регистрация: 6.4.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.974
Возраст: 26



Цитата(DarkMaster @ 11.1.2019, 20:17) *

и запускаете его кликом кнопки мыши?)

Да, а что это какая то проблема?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.1.2019, 21:28
Сообщение #23


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Да, а что это какая то проблема?

Ну теоретически может сняться флаг состояния клавиши на момент запуска (еще нажатая мышь).

Цитата
Зажатие проверялось только в луа.

А это где?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 11.1.2019, 21:37
Сообщение #24


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
А это где?

В первом посте длл для луа. В 2.40 она работает, в 2.41 нет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 11.1.2019, 23:56
Сообщение #25


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Вот чо-то у меня поселилась мысля если бы к командам эмуляции нажатий клавиши(send, sendex и пр.) добавить код клавиши клика левой мышки то у нас бы получилась кликаюшчыя управляемая мышка.
Код

send 0x01 //сделать ЛКМ в текущем ее положении

Как думаете реально замутить?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sreg
сообщение 16.1.2019, 14:15
Сообщение #26


**

Neophyte
Сообщений: 31
Регистрация: 6.4.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.974
Возраст: 26



Я как понял не решить задачу скрипта с зажатой кнопкой?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 26.2.2019, 7:22
Сообщение #27


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



....
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 6.3.2019, 2:39
Сообщение #28


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1161
Пользователь №: 15.246
Возраст: 25



хочу чтоб перед кликом мышкой 100% был зажат CTRL, а то не всегда это случается, пишу
Код
while_not KB.GetKeyStateByCode(162) = 1
    sendex ^
    end_while

это вроде работает
на счет отпускания кнопки не знаю бывают ли что не отпускает с 1 раза но чтоб быть уверенным пишу отпускание
Код
while KB.GetKeyStateByCode(162) = 1
    sendex
    hint (20 clRed 800 900 -1 -1 (отпустил CTRL))
    end_while

и не работает, не видит что нажат CTRL пока сам пальцем не нажмешь. Может я неправильно делаю?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 6.3.2019, 2:59
Сообщение #29


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1161
Пользователь №: 15.246
Возраст: 25



Цитата(nykep @ 6.3.2019, 2:39) *

хочу чтоб перед кликом мышкой 100% был зажат CTRL, а то не всегда это случается, пишу
Код
while_not KB.GetKeyStateByCode(162) = 1
    sendex ^
    end_while

это вроде работает

нет это тоже не дает 100% гарантию нажатия я че то не понимаю
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.3.2019, 3:50
Сообщение #30


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Отредактировал первый пост. Добавил архив с нужными файлами и примеры использования.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sairex
сообщение 12.10.2020, 14:37
Сообщение #31


*

Registred
Сообщений: 4
Регистрация: 14.12.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.470
Возраст: 42



Не дружит с кликами однако, либо где то туплю. В логе пишет, а sendex не проходит.
Код
--Lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

while 1 do
    local b_atk = GetKeyState(1)
    if b_atk then
       log("atk")
       sendex("1")
    end
end

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 12.10.2020, 14:49
Сообщение #32


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
В логе пишет, а sendex не проходит.

Код
--lua
local ffi = require("ffi")
ffi.cdef[[short GetAsyncKeyState(int vKey);]]
log 'clear' log 'mode compact'

ffi.C.GetAsyncKeyState(1)
while true do
    if ffi.C.GetAsyncKeyState(1) ~= 0 then  -- если нажата левая кнопка мыши
        while ffi.C.GetAsyncKeyState(1) ~= 0 do wait(10) end  -- ждать пока она нажата
        log ("Нажата левая кнопка мыши")
        sendex("1")
    end
    wait (100)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 26.3.2022, 8:15
Сообщение #33


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Код
    log ("Ждём когда будет нажата клавиша Y")
    local state, toggle = GetKeyState(0x59)
    while not state do
        state, toggle = GetKeyState(0x59)
        wait (10)
    end

С вашего позволения имхо разумнее:
Код
 log ("Ждём когда будет нажата клавиша Y")
repeat wait(10) until GetKeyState(0x59)

wait можно кстати выкинуть. Загрузка камня без вейта 0%. Если каких-то побочных блокировок данный запрос не несет, то смысла особо не вижу, по иронии судьбы сам вызов вейта может давать больше накладных расходов в данной ситуации.

Сообщение отредактировал DarkMaster - 26.3.2022, 8:28


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.3.2024, 1:26
Designed by Nickostyle