Перейти к содержанию
  • Регистрация

neo

Пользователи
  • Публикаций

    59
  • Зарегистрирован

  • Посещение

Информация о neo

  • Звание
    Продвинутый пользователь

Посетители профиля

665 просмотров профиля
  1. кстати нет) проверил на стареньком компе с 10ой там тоже всё шустро...
  2. Приехал домой мой код с MapVirtualKeyEx под Win10 отлично работает... до этого тестировал на Win7.. интересно это из за винды или комп мощней?
  3. ну давайте разберёмся... зачем воду лить... эти две строки тут для того чтобы сделать : ToUnicode(VK,SC,KS,@Ch,Sizeof(Ch),0); их обязательно нужно в MapVirtualKey сделать... без этого не сработает можете сами проверить: ToUnicode(PBDLLHOOKSTRUCT(lParam).vkCode,PBDLLHOOKSTRUCT( lParam).scanCode,KS,@Ch,Sizeof (Ch),0) ;
  4. это я для примера написал без первых двух никак не получится... можно только в WH_KEYBOARD провозился весь день сделал так: function xToUnicode(key: word): char; var newHKL: PWideChar; KS: TKeyboardState; Ch: Char; VK, SC: cardinal; layout:integer; begin layout:= GetKeyboardLayout(GetWindowThreadProcessID(GetForegroundWindow,nil)) shr 16; newHKL:=PChar('0000'+IntToHex(layout,4)); SC := MapVirtualKeyEx(Key, MAPVK_VK_TO_VSC,LoadKeyboardLayout(newHKL, KLF_ACTIVATE )); VK := MapVirtualKeyEx(SC, MAPVK_VSC_TO_VK,LoadKeyboardLayout(newHKL,KLF_ACTIVATE)); GetKeyboardState(KS); ToUnicode(VK,SC,KS,@Ch,Sizeof(Ch),0); result:=ch; end; но LoadKeyboardLayout(newHKL, KLF_ACTIVATE ) с флагом KLF_ACTIVATE очень тормозит... 1 -3 сек а с другими флагами не получается
  5. Всем привет! Перехватываю нажатия клавиш... но к сожалению не получается перехватить буквы с разной раскладкой =( если печатаю в своём же окне то всё ок! делаю это так: SC := MapVirtualKey(PBDLLHOOKSTRUCT(lParam).vkCode, MAPVK_VK_TO_VSC); VK := MapVirtualKey(PBDLLHOOKSTRUCT(lParam).scanCode, MAPVK_VSC_TO_VK); if code>=0 then begin if (wParam=WM_KEYDOWN) then begin GetKeyboardState(KS); ToUnicode(VK,SC,KS,@Ch,Sizeof(Ch),0); Form1.Edit1.Text:=Form1.Edit1.Text+ch; end; но из чужих окон всё приходит на одном и том же языке и регистр не учитывается =( в чём может быть проблема?
  6. да уже пробовал в ехе делать но всё также...пост тоже пробовал но всё криво тогда работает... неправильно ответы приходят... там в любом случае должна быть небольшая синхронизации тк нужно дожидаться ответа от idHTTP пробовал даже через таймер и отдельный поток но всё не так качественно работает как через SendMEssage... вот вроде решение этой проблемы на Си но я его не понимаю =( #include "stdafx.h" #include <windows.h> LRESULT CALLBACK LLKeyProc(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode <= 0) { if(wParam == WM_KEYDOWN) keybd_event( 0x41, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); return 1; } return CallNextHookEx(NULL, nCode, wParam, lParam); } int main() { HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyProc, GetModuleHandle(NULL), 0); if(hook) { while(WaitMessage()) { MSG msg = {0}; while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if(msg.message == WM_QUIT) { UnhookWindowsHookEx(hook); return 0; } TranslateMessage(&msg); DispatchMessage(&msg); } } } return 0; } кстати Подскажите... а как узнать что KeyboardHandle:=SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardHook, HInstance, 0); - слетел? я думал что хендл должен стать 0 но он не меняется =( также я писал в основной функции lastError:=GetLastError; но после того как она слетает lastError так и остаётся 0 =( вот как получить код этой моей ошибки??? =( через try except тоже выявить ошибку не получается =( так бы я на таймер просто повесил: если слетел -подгрузи снова
  7. Ребята здарова! выручайте) весь уже измучился =( не получается =( Тема такая, работаю с хуком, использую WH_KEYBOARD_LL тк нужно работать и с 32 битной и 64 битной разрядностью. и вообще мне нравится с ним работать всё очень просто и удобно но появилось одно НО =( WH_KEYBOARD_LL работает до добавления сообщения в очередь в контексте потока. и это действительно так =( дело в том что я через хук ловлю введённую информацию и потом обрабатываю это через idHTTP (ищу в интернете ответ)... если сигнал хороший то всё круть... а когда связь не очень.. и происходят небольшие задержки.. как я понимаю в WH_KEYBOARD_LL складируются результаты которые он не может передать и затем хук выбивается... тоесть чтобы всё вновь заработало нужно сделать так KeyboardHandle:=SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardHook, HInstance, 0); и хук по прежнему работает до тех пор пока не вылетит вновь. Чтобы решить эту проблему как я понял нужно использовать PeekMessage или GetMessage и удалять излишки... Но в сети очень мало информации о том как ими пользоваться я не понимаю куда и как их вставлять. Я делал вот так... писал в ДЛЛке function KeyboardHook(code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var msg:TMsg; begin if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then exit; if code>=0 then begin if (wParam=WM_KEYDOWN) then begin SendMessage(FindWindow('TForm1', 'Form1'), KeyboardEvent, 0,PBDLLHOOKSTRUCT(lParam).vkCode); end; end; Result:=CallNextHookEx(KeyboardHandle, code, wParam, lParam) end; // if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then exit; // типа если есть излишки выходи так же вставлял там это: while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; но не помогает =( Может это где-то в ЕХЕшнике нужно вставлять? я не понимаю как с ним работать =( Может кто на форуме знает? помогите пожалуйста ответом
  8. Спасибо за совет! но работаю к сож с внешними формами
  9. еслиделать вот так 2 раза то всё норм keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); Keybd_Event(VK_shift,MapVirtualKey(VK_shift,0),KEYEVENTF_KEYUP,0);
  10. Всем привет! товарищи специалисты помогите отжать клавишу шифт =( выделяю текст через Shift+Left (метод ctrl+a не подходит) в Win7 всё работало хорошо тк выделял вот так: Keybd_Event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); for i:=0 to X do begin Keybd_Event(vk_left,MapVirtualKey(vk_left,0),0,0); Keybd_Event(vk_left,MapVirtualKey(vk_left,0),KEYEVENTF_KEYUP,0); Sleep(100); end; Keybd_Event(VK_shift,MapVirtualKey(VK_shift,0),KEYEVENTF_KEYUP,0); Но сейчас в Win10 так текст не выделяется =( приходится выделять вот так keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY, 0); так всё выделяет... но после этого, когда нажимаешь на другие клавиши видно что шифт запал тк вместо abc123 будет ABC!@# таким методом он не отжимается: keybd_event(VK_SHIFT, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); Чё делать? =(
  11. Всем привет! народ кто нибудь знает как сделать снимок сразу с двух камер? имеется ввиду не Фронтальная и Тыльная а Dual камера на тыльной стороне. Как получить снимок с какой-то одной из этих камер? а потом и со второй.. и вообще можно ли такое сделать?
  12. думал может на форуме есть какие-нибудь интересные темки =) через поиск их не нашёл) окей спасибо
  13. спасибо а где можно почитать как добавлять приложение в Play Market? у меня apk использует дополнительные внешние картинки и звуковые файлы я их в Deployment добавляю так вот когда просто апк запускаю без всего он вылетает тк нету этих картинок и мп3 =(
  14. Здравствуйте! подскажите пожалуйста а где можно почитать или посмотреть как компилировать приложения например для iPad? выбрал iOS симулятор а он просит ввести ip адрес машины/порт/и какой-то пароль...??? и ещё вопрос... для Андройда всё хорошо компилируется.. через usb отладку... Скажите а как это приложение кому-то другому дать? просто ведь скопировать файл .apk недостаточно? нужно всю директорию куда-то перенести?
  15. спасибо сейчас попробую)
×
×
  • Создать...