Послать приложению нажатие нескольких клавиш разом

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Alloc22, 21 Oct 2015.

  1. Alloc22

    Alloc22 New Member

    Joined:
    12 Oct 2015
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте!

    Скажите, возможно ли используя SendMessage/PostMessage - послать приложению не одну кнопку а сразу несколько, разом?
    Вот так вот не устраивает:

    Code:
    SendMessage(h2,WM_KEYDOWN,Ord('S'),0);
    SendMessage(h2,WM_KEYUP,Ord('S'),0);
    SendMessage(h2,WM_KEYDOWN,Ord('T'),0);
    SendMessage(h2,WM_KEYUP,Ord('T'),0);
    SendMessage(h2,WM_KEYDOWN,Ord('O'),0);
    SendMessage(h2,WM_KEYUP,Ord('O'),0);
    SendMessage(h2,WM_KEYDOWN,Ord('P'),0);
    SendMessage(h2,WM_KEYUP,Ord('P'),0);
    Можно сразу как то допустим?:
    Code:
    SendMessage(h2,WM_KEYDOWN,Ord('STOP'),0);
    SendMessage(h2,WM_KEYUP,Ord('STOP'),0);
    
    Спасибо заранее за ответ.
     
  2. H@rd

    H@rd Member

    Joined:
    18 May 2015
    Messages:
    27
    Likes Received:
    21
    Reputations:
    1
    SendMessage(h2,WM_KEYDOWN,Ord('S'),0);
    SendMessage(h2,WM_KEYDOWN,Ord('T'),0);
    SendMessage(h2,WM_KEYDOWN,Ord('O'),0);
    SendMessage(h2,WM_KEYDOWN,Ord('P'),0);
    SendMessage(h2,WM_KEYUP,Ord('S'),0);
    SendMessage(h2,WM_KEYUP,Ord('T'),0);
    SendMessage(h2,WM_KEYUP,Ord('O'),0);
    SendMessage(h2,WM_KEYUP,Ord('P'),0);
     
    Alloc22 likes this.
  3. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    если приложение "чужое", то лучше таки использовать PostMessage.
    Если это текстовое поле ввода, не проще ли послать сообщение о вставке данных из буфера обмена, к примеру или тот же WM_SETTEXT
     
    Alloc22 likes this.
  4. Alloc22

    Alloc22 New Member

    Joined:
    12 Oct 2015
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    спасибо за ответ. Кстати у меня был еще вопрос по поводу PostMessage. По какой то неизвестной мне причине через PostMessage не передается ничего, а вот SendMessage работает. Приложение стороннее, точнее это 3d приложение, игра. Может быть Вы знаете почему?
     
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Потому что сообщения для работы с окнами не работают НЕ с окнами.
     
    Alloc22 likes this.
  6. Alloc22

    Alloc22 New Member

    Joined:
    12 Oct 2015
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    и какой выход из этой ситуации?) Остается только SendMessage?
     
  7. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Я в игроботе боте так делал
    PHP:
    procedure Typing(t:string);
    var
    i:integer;
    begin
    SetLayoutActiveWnd
    (ENGLISH);
    keybd_event(VK_F6000);
    keybd_event(VK_F6020);
    keybd_event(VK_DIVIDE000);
    keybd_event(VK_DIVIDE020);
    for 
    i:=1 to length(t) do begin
    keybd_event
    (Ord(UpCase(t[i])), 000);
    Sleep(10);
    end;
    keybd_event(VK_RETURN000);
    keybd_event(VK_RETURN020);
    end;
     
    Alloc22 likes this.
  8. Alloc22

    Alloc22 New Member

    Joined:
    12 Oct 2015
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    спасибо за помощь. Дело в том, что и так я уже побывал (keybd_event), к сожалению, в моем случае это не работает, не знаю почему..
     
  9. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Можно попробовать еще функцию SendInput
     
    Alloc22 likes this.