Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как получить текст с окна CMD ?


Автор: psgpsg 16.11.2006, 13:13
Подскажите, плзз, как программным путем получить текст с окна cmd.exe

Пробовал использовать сдедующий код

Код

procedure TForm3.Button29Click(Sender: TObject);
var
  hw : HWND;
  Buffer : Array [0..4095] of char;
  lpNumberOfCharsRead : DWORD;
  Reserved : Pointer;
  bRes : Boolean;
begin
  hw := FindWindowA('ConsoleWindowClass','C:\WINDOWS\system32\cmd.exe');
    ShowMessage('hw = ' + IntToStr(hw));
  bRes := ReadConsole(hw, @Buffer, 30, lpNumberOfCharsRead, Reserved );
  if (Not bRes) then
    ShowMessage('ReadConsole( ? ');

end;


но bRes выдает False

Заранее спасибо !

Автор: Snowy 16.11.2006, 13:22
http://vingrad.ru/DELPHI-DLP-000823

Добавлено @ 13:24 
Цитата(psgpsg @  16.11.2006,  13:13 Найти цитируемый пост)
но bRes выдает False
Потому что в ReadConsole нужно передавать совсем не хэндл окна smile

Автор: psgpsg 16.11.2006, 18:19
Это не совсем то, что мне нужно: 
Задача состоит в том, чтобы найти на экране окно консоли и взять с него текст, т.е. выполнить некий аналог short-cut левого угла окна: Edit -> Select All -> Copy

Автор: dumb 17.11.2006, 11:09
psgpsg,
в общих чертах:
Код

var
  pid: DWORD;
  hStdout: HANDLE;
begin
  hwnd := FindWindow(...
  GetWindowThreadProcessId(hwnd, @pid);
  if (AttachConsole(pid) = false) error;
  hStdout := GetStdHandle(STD_OUTPUT_HANDLE);
  ReadConsoleOutput(hStdout, ...
  { тут делаем дела... }
  FreeConsole;

Автор: psgpsg 23.11.2006, 14:22
2 dumb

Спасибо ! 
Все получилось 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)