Эмуляция клавиши enter

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by spite, 24 Mar 2009.

  1. spite

    spite New Member

    Joined:
    4 Mar 2009
    Messages:
    24
    Likes Received:
    4
    Reputations:
    0
    Ребята помогите написать батник или реализовать это по другому!
    Значит я запускаю програму и мне надо нажать в ней кнопку, или с эмулировать нажатия кнопки ентер, возможно такое с помощью батника сделать?
     
  2. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    на винапи можно(на батнике думаю нельзя):
    PHP:
    #include <windows.h>

    int _tmain(int argc_TCHARargv[])
    {
        
    HWND hwnd;

        if(
    hwnd FindWindow(NULLTEXT("Пуск")))
        {
            
    SendMessage(hwndWM_LBUTTONDOWNNULLNULL);
        }

        return 
    0;
    }
     
  3. spite

    spite New Member

    Joined:
    4 Mar 2009
    Messages:
    24
    Likes Received:
    4
    Reputations:
    0
    а есть программы типа EasyAutoInstaller которые эмулируют нажатия?
     
  4. lll6

    lll6 Elder - Старейшина

    Joined:
    29 Feb 2008
    Messages:
    83
    Likes Received:
    15
    Reputations:
    5
    AutoIt
     
  5. ex3me

    ex3me Member

    Joined:
    7 Jan 2009
    Messages:
    0
    Likes Received:
    63
    Reputations:
    0
    или Sign 0f Mystery
     
  6. OLISAV

    OLISAV New Member

    Joined:
    7 Mar 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    эмуляция нажатия любой клавиши...

    Эмуляция нажатий клавиш - как я делал в Delphi...

    Пишешь процедурку...


    procedure TForm1.SetKey(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;

    потом вызываешь её когда тебе нужно:



    SetKey(13); //ASCII код Enter-а...​


    Если начнет ругаться - значит какой-то uses нужно добавить... У меня были такие:

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ExtCtrls, mmsystem;
     
    #6 OLISAV, 4 Apr 2009
    Last edited: 4 Apr 2009
  7. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    если программа консольная то и батник сойдет
    открой блокнот нажми энтер и сохрани txt файл типа lolo.txt

    потом напиши батник start proga.exe < lolo.txt
    и будет тебе щастье

    если прога оконная то без вин апи тут не обойтись.
     
    _________________________
  8. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Gar|k:
    есть кнопка, следовательно она не консольная :)
    spite, Chaak тебе уже ответил. Компиль, а потом можешь созать батник, который будет прогу запускать :)
     
  9. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    функция FindWindow возвращает handle, top-level окна и поэтому такой вариант не всегда будет работать.
     
  10. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    BOOL EnumChildWindows( HWND hWndParent,
    WNDENUMPROC lpEnumFunc,
    LPARAM lParam
    );
     
  11. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    PHP:
    static BOOL CALLBACK HandleChildWindow(HWND hChildWindowLPARAM Param)
    {
      
    PostMessage(hChildWindowWM_KEYDOWNVK_NUMPAD10);
      return 
    TRUE
    }

    void SimulateKeyDown()
    {
      
    HWND hCalcWindow FindWindow(NULL"Калькулятор");
      if (
    hCalcWindow != NULL)
      {
        
    EnumChildWindows(hCalcWindow, &HandleChildWindow0);
      }
    }
    Примерчик для выше указанного ;)