Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Эмуляция нажатие клавиш в Windows 8


Автор: saylar06 8.6.2012, 16:26
Доброго времени суток! Очень нуждаюсь в вашей помощи...

Есть данный код:

Код

     hwndb := FindWindow(nil, PChar('Название окна'));
     if hwndb <> 0 then
      begin   Sleep(1000);
        label1.Caption:=label1.Caption+'go';
        keybd_event(69, 0, 0, 0);
        keybd_event(69, 0, KEYEVENTF_KEYUP, 0);
        //  Sleep(200);
        keybd_event(69, 0, 0, 0);
        keybd_event(69, 0, KEYEVENTF_KEYUP, 0);
        //  Sleep(200);
        keybd_event(87, 0, 0, 0);
        keybd_event(87, 0, KEYEVENTF_KEYUP, 0);
        //  Sleep(200);
        keybd_event(82, 0, 0, 0);
        keybd_event(82, 0, KEYEVENTF_KEYUP, 0);
        //  Sleep(200);
      end;


В общем то код рабочий если учитывать что на WIndows 7/XP он работает, но на Windows 8 просто игнорируется, есть какие нибудь соображение? или же какая нибудь альтернатива?

Заранее благодарен...

Автор: superVad 8.6.2012, 16:42
Уже есть вин8?

Автор: Qu1nt 8.6.2012, 16:57
keybd_event устарела давным-давно. Попробуй использовать SendInput.

Автор: saylar06 8.6.2012, 19:41
в общем перерылся... элементарно никак не могу въехать, очень нужна ваша помошь, заного изложу сути проблемы...

Написал новый код:
Код

          Inp.Itype := INPUT_KEYBOARD;
          Inp.ki.wVk := VK_RETURN;
          Inp.ki.dwFlags := 0;
          SendInput(1, Inp, SizeOf(Inp));
            sleep(500);
          Inp.ki.dwFlags := KEYEVENTF_KEYUP;
          SendInput(1, Inp, SizeOf(Inp));


элементарно вроде бы всё, при его исполнении должен нажаться Enter, и всё работает на Windows 8 да и код из первого поста тоже работал, но увы в других риложениях (блокнот, браузер и т.д) я же пишу приложение для игры конкретнее для Warcraft III, что первый что второй код удачно работают на Windows 7 c Warcraft III но просто игнорируются при выполнении на WIndows 8, подскажите в чем может быть  ещё проблема?

Автор: saylar06 9.6.2012, 10:02
В общем упорство и труд всё перетрут smile Просидев пол ночи, меня всё же осенило, проблему я решил, так что тему можно либо закрыть либо удалить, большое спасибо всем кто принял участие smile

Автор: XperT 9.6.2012, 11:39
Цитата(saylar06 @ 9.6.2012,  10:02)
В общем упорство и труд всё перетрут smile Просидев пол ночи, меня всё же осенило, проблему я решил, так что тему можно либо закрыть либо удалить, большое спасибо всем кто принял участие smile

Гениально. Предлагаю запомнить ник и не помогать человеку в решении проблем, потому как с эгоистами по другому нельзя.

Автор: Keeper89 9.6.2012, 11:55
superVad, DP уже есть давным давно.


Цитата(XperT @  9.6.2012,  11:39 Найти цитируемый пост)
Гениально. Предлагаю запомнить ник и не помогать человеку в решении проблем, потому как с эгоистами по другому нельзя. 

Ну, может, он все-таки выложит результаты интеллектуального труда smile

Автор: saylar06 10.6.2012, 08:29
Цитата
Гениально. Предлагаю запомнить ник и не помогать человеку в решении проблем, потому как с эгоистами по другому нельзя.

вы меня обидели...


Цитата
Ну, может, он все-таки выложит результаты интеллектуального труда smile 



все очень просто дело было не в самом коде, а в Winodws 8, дело в том что практические любое действие oc блокирует (даже при выключеном UAC и SmartScreen) нужно было дать программе уровень администратора(не просто открыть от имени администратора) а зайти в Свойства-->Совместимость-->Изменить параметры для всех пользователей--> и поставить галочку Выполнять программу от имени администратора!

и вооля всё заработало!

P.S я не эгоист просто на радости пошел доделывать программу smile
PP.S Да вот если спросили как я сделал? Я бы сразу ответил...

Автор: XperT 10.6.2012, 10:25
Цитата

PP.S Да вот если спросили как я сделал? Я бы сразу ответил... 


Не нужно ждать пока вас спросят, решили проблему - отпишитесь в теме, вдруг кто-то столкнется с такой же проблемой. А следуя вашей логике, то если бы я знал решения, то не сказал бы пока вы меня индивидуально не спросили.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)