Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить текст с окна CMD ? 
V
    Опции темы
psgpsg
Дата 16.11.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



Подскажите, плзз, как программным путем получить текст с окна 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

Заранее спасибо !
PM MAIL   Вверх
Snowy
Дата 16.11.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



http://vingrad.ru/DELPHI-DLP-000823

Добавлено @ 13:24 
Цитата(psgpsg @  16.11.2006,  13:13 Найти цитируемый пост)
но bRes выдает False
Потому что в ReadConsole нужно передавать совсем не хэндл окна smile
PM MAIL   Вверх
psgpsg
Дата 16.11.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



Это не совсем то, что мне нужно: 
Задача состоит в том, чтобы найти на экране окно консоли и взять с него текст, т.е. выполнить некий аналог short-cut левого угла окна: Edit -> Select All -> Copy
PM MAIL   Вверх
dumb
Дата 17.11.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



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;

PM MAIL   Вверх
psgpsg
Дата 23.11.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 15.8.2006

Репутация: нет
Всего: нет



2 dumb

Спасибо ! 
Все получилось 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.