Форум: "WinAPI";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизНе получается записать во входной буфер консоли WriteConsoleInput Найти похожие ветки
← →
Serafim © (2009-02-10 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?
← →
Сергей М. © (2009-02-11 00:29) [1]If the function fails, the return value is zero. To get extended error information, call GetLastError.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.067 c