Конференция "WinAPI" » Не получается записать во входной буфер консоли WriteConsoleInput [D7, WinXP]
 
  • Serafim © (10.02.09 17:38) [0]
    У меня такая проблема - не получается записать во входной буфер консоли графического приложения  так, как написано в http://www.delphimaster.ru/articles/console.html -
    Объявляю переменные
     ConsoleWindow : HWND;
     InputHandle : THandle;
     OutputHandle : THandle;

     InputRecord : TInputRecord;
     NumberOfRecords : Cardinal;

    При создании формы пишу
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     AllocConsole;
     ConsoleWindow := GetConsoleWindow;
     ShowWindow ( ConsoleWindow, SW_MINIMIZE );
     InputHandle := GetStdHandle ( STD_INPUT_HANDLE );
     OutputHandle := GetStdHandle ( STD_OUTPUT_HANDLE );

    end;

    При нажатии клавиши в поле Edit
    procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
     InputRecord.EventType := KEY_EVENT;

     InputRecord.Event.KeyEvent.bKeyDown := TRUE;
     InputRecord.Event.KeyEvent.wRepeatCount := 1;
     InputRecord.Event.KeyEvent.wVirtualKeyCode := Key;
     InputRecord.Event.KeyEvent.AsciiChar := Char ( Key );

     WriteConsoleInput ( InputHandle,
                         InputRecord,
                         1,
                         NumberOfRecords );

     InputRecord.Event.KeyEvent.bKeyDown := FALSE;
     WriteConsoleInput ( InputHandle,
                         InputRecord,
                         1,
                         NumberOfRecords );

    end;
    И в консоли ничего не выводится, но должно, поскольку - это эмуляция нажатия клавиши в самой консоли.
    Ксли же пишу
    procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
     Write ( InputHandle, Char ( Key ) );

    end;
    То символы выводятся, но перед ними пишется цифра 3.
    Что делать, как писать во входной буфер консоли с помощью WriteConsoleInput?
  • Сергей М. © (11.02.09 00:29) [1]
    If the function fails, the return value is zero. To get extended error information, call GetLastError.
 
Конференция "WinAPI" » Не получается записать во входной буфер консоли WriteConsoleInput [D7, WinXP]
Есть новые Нет новых   [134435   +35][b:0][p:0]