DWW

Forum Replies Created

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • in reply to: ProcessMessages, AC и эмулятор клавиатуры #52641
    DWW
    Participant
    'TCount' wrote:

    Просто непонятно, что прога будет делать. Виртуальная клава…Вижу, что месадж отправляется какому-то окну…Вопрос: какому?

    Есть обычная процедура нажатия, но она работает только внутри проги.

    procedure PressKey(Key:Integer);

    begin

    keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);

    keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);

    keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);

    end;

    Проблему закрыл. Всем спасибо. Обошелся в коде без ProcessMessages. Да здравствует красивый код)

    in reply to: ProcessMessages, AC и эмулятор клавиатуры #52637
    DWW
    Participant
    'TCount' wrote:

    Я просто не знаю структуру проги. Но логика такова, что код в потоке, а операции с окном (формой) – через синхронизацию.

    Просто интернет полон примеров, в которых идут вызовы keybd_event друг за дружкой, и все нажатия типа у них нормально эмулируются. У меня без PostMessage не получается это сделать. Если кто подскажет в чем моя ошибка и что я недопонимаю. буду благодарен. Т.е. проблема, я думаю, в очереди сообщений. Без PostMessage можно как-нибудь заставить отработать нормально keybd_event? Или только потоки и все?

    in reply to: ProcessMessages, AC и эмулятор клавиатуры #52635
    DWW
    Participant
    'TCount' wrote:

    Кстати, Application.ProcessMessages опасная штука, особенно если использовать ее повсеместно. У меня в какой-то проге тоже из-за этого падения были. Именно потому, что Application.ProcessMessages манипулирует с очередью сообщений.

    Может лучше через потоки реализовывать?

    то есть если я в потоке напишу:

    if VKShift then

    keybd_event(VK_SHIFT, 0, 0, 0);

    PostMessage(Wnd,WM_KEYDOWN, VKey,0);

    if VKShift then begin

    VKShift:=false;

    keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

    end;

    код отработает без проблем? только потом синхронизировать вывод надо?

    in reply to: ProcessMessages, AC и эмулятор клавиатуры #52633
    DWW
    Participant
    'TCount' wrote:

    А почему бы не установить версию 9.16 и проверить на ней?)

    Попробовал. Не помогло.

Viewing 4 posts - 1 through 4 (of 4 total)