Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Скрытие окон консольных приложений

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

kipus



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Необходимо запустить консольное приложение, но сделать так, чтобы его окно не отображалось. Но была возможность читать в программу выводимую им информацию. Если его скрыть потом, то получится, что окно появится и исчезнет. А надо, чтобы оно вообще не появлялось.
Такое встречал в оболочках для кодеров, напр. RazorLame.
Для Delphi.
Заранее благодарю

Всего записей: 1253 | Зарегистр. 17-09-2002 | Отправлено: 20:06 15-12-2003
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Могу ошибаться, но такое не встречал - делают win32 apps без окна - это да (может это и устроит?), но консоль без консоли...

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 21:36 15-12-2003
kipus



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Мне надо запустить внешнее консольное приложение

Всего записей: 1253 | Зарегистр. 17-09-2002 | Отправлено: 00:48 16-12-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А со значением wShowWindow из STARTUPINFO для CreateProcess не пробовали повозиться? Или nShowCmd для ShellExecute?

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 02:12 16-12-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
odl455
при установке wShowWindow=0 консольное окно на экране не появляется.. проверено.

----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 11:11 16-12-2003
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Иди на MS и ищи статью как перенаправить вывод из консольного приложения (create console application with redirectet input output если мне не изменяет память).
Можешь также сходить на корорлевство делфи и поискать там на круглом столе да и по сайту тоже. Номера вопросов 3338, 9570 и другие. Я брал с королевства инфу как это сделать. Там есть все, только нужно внимательно читать.  
 

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 11:31 16-12-2003
kipus



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем спасибо.

Всего записей: 1253 | Зарегистр. 17-09-2002 | Отправлено: 01:07 17-12-2003
Tishka



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А зачем консольное? E, убери форму из проекта и вперёд!  На екране не появиться. Выполнит что надо и завершится.

Всего записей: 113 | Зарегистр. 22-11-2002 | Отправлено: 18:37 23-12-2003
kipus



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Tishka
колько говорить? Я запускаю СОВСЕМ ДРУГУЮ ПРОГУ, которую не я писал.
А кста, как сграбить с консольного экрана текст? Нашел тут такую тему, но не помогло.

Всего записей: 1253 | Зарегистр. 17-09-2002 | Отправлено: 19:00 23-12-2003
Ang



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kipus
Попробуй компонент WEXECLIB. Он с исходниками. Написан давно, но у меня под W2K и Delphi 5 работал нормально.
_http://www.programmersheaven.com/zone2/cat69/2090.htm

Всего записей: 251 | Зарегистр. 25-07-2001 | Отправлено: 14:57 24-12-2003
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос ї 1500Oтветить на вопрос  
            Привет! Можно ли получить содержимое досовского окна? Нужно  
            проанализировать его на наличие определенной строки Если можно ответ  
            продублируйте на mike@oridon.donetsk.ua  
 
Ответов - 2 :
 
  Насчет всего окна не скажу, но перехват буфера вывода вполне возможен. См.  
  параметры CreateProcess, в частности, флаги, касающиеся StdOutput.  
  Yuri S. Zotov
  Аналогичную задачу решаю. Может что и не так, но вроде как работает. Будут  
  вопросы - пишите.  
procedure TForm1.btn_RunDosClick(Sender: TObject);
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  OutText : array [0..255] of char;
var
  buff : ARRAY [0..127] OF Char;
  buff2 : ARRAY [0..127] OF Char;
var
  ToWCount, WCount  : DWORD;
  ir                : TINPUTRECORD;
  dw                : DWORD;
Begin
  AllocConsole;
 
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StrPCopy(OutText, RSBServerName);
  with StartupInfo do
  begin
    cb := SizeOf(TStartupInfo);
    dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
    wShowWindow := SW_SHOW;
    lpTitle := @OutText; // Мой заголовок окна
  end;
 StrPCopy(buff, Edit2.Text); // Edit2.Text - DOS - приложение
 StrPCopy(buff2, ExtractFileDir(Edit2.Text));
 if CreateProcess(
 nil, // pointer to name of executable module
  buff,  // pointer to command line string
 nil, // pointer to process security attributes
 nil, // pointer to thread security attributes
 False{False True},љљљ // handle inheritance flag
 NORMAL_PRIORITY_CLASS, // creation flags
 nil, // pointer to new environment block
 buff2{nil}, // pointer to current directory name
 StartupInfo, // pointer to STARTUPINFO
љљљ ProcessInfoљљљљ // pointer to PROCESS_INFORMATION
љљљ )
љ then
љљљ DosHandle := ProcessInfo.hProcess
љ else
љ begin
љљљ ShowMessage('Программа не найдена?');
љљљ Exit;
љ end;
љ ConsHndl:=GetStdHandle(STD_OUTPUT_HANDLE);
End;
 
procedure TForm1.ReadConsole(Sender: TObject);
var
љ ToWCount, WCountљљљљљљљљљљљ : DWORD;
љ xy : TCOORD;
љ i : Integer;
љ OutText : array [0..255] of char;
Begin
љ tim_Esc.Enabled := False;
љ Memo1.Clear;
љ FillChar(ConsoleText, SizeOf(ConsoleText), 0);
љ ToWCount:=80;
љ for i := 0 to 24 do
љ begin
љљљ xy.X := 0;
љљљ xy.Y := i;
љљљ ReadConsoleOutputCharacter(
љљљљљ ConsHndl, // handle of a console screen buffer
љљљљљ @ConsoleText[i], // address of buffer to receive characters
љљљљљ ToWCount, // number of character cells to read from
љљљљљ xy, // coordinates of first cell to read from
љљљљљ WCountљ // address of number of cells read from
љљљ );
љљљ Memo1.Lines.Add(OemToAnsiStr(ConsoleText[i])); // содержимое  
экрана
DOS-приложения
љ end;
 
љ case CheckConsoleText of
љљљ Number:
љљљљљ begin
љљљљљљљ Edit1.Text := '998';
љљљљљљљ btn_SendKeys.Click;
љљљљљљљ btn_SendEnter.Click;
љљљљљљљ tim_Esc.Enabled := True;
љљљљљ end;
љљљ Password:
љљљљљ begin
љљљљљљљ Edit1.Text := 'mbr';
љљљљљљљ btn_SendKeys.Click;
љљљљљљљ btn_SendEnter.Click;
љљљљљљљ tim_Esc.Enabled := True;
љљљљљ end;
љљљ RunServer:
љљљљљ begin
љљљљљ end;
љљљ NeedEscape:
љљљљљ begin
љљљљљљљ btn_SendEsc.Click;
љљљљљљљ btn_SendEsc.Click;
љљљљљљљ tim_Esc.Enabled := True;
љљљљљ end;
љ else
љљљ if tim_Esc.Enabled = False then tim_Esc.Enabled := True;
љ end;
 
End;
 
//
function CheckConsoleText : Integer;
var
љ j,
љ i : Integer;
Begin
љ for i := 0 to 24 do
љ begin
љљљ if Pos('ВВЕДИТЕ ВАШ НОМЕР',
AnsiUpperCase(OemToAnsiStr(ConsoleText[i]))) > 0 then
љљљ begin
љљљљљ for j := 0 to 24 do
љљљљљ begin
љљљљљљљ if Pos('ВВЕДИТЕ ПАРОЛЬ',
AnsiUpperCase(OemToAnsiStr(ConsoleText[j]))) > 0 then
љљљљљљљ begin
љљљљљљљљљ Result := Password;
љљљљљљљљљ Exit;
љљљљљљљ end;
љљљљљ end;
љљљљљ Result := Number;
љљљљљ Exit;
љљљ end;
љљљ if Pos('ФАЙЛ ЗАХВАЧЕН',  
AnsiUpperCase(OemToAnsiStr(ConsoleText[i])))
> 0 then
љљљ begin
љљљљљ Result := NeedEscape;
љљљљљ Exit;
љљљ end;
љ end;
End;
 
  Лапшин М.А.  
 

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 13:42 25-12-2003
Andrey_aka_Master



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А как быть с vc, я создаю пустой проэкт, но на экране консольное окно, как сделать так чтобы его не было, типа, как в делфи если убрать строку apptype=console, то окна не будет, как такое сделать в vc ?

Всего записей: 175 | Зарегистр. 24-03-2003 | Отправлено: 03:02 13-11-2004
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Скрытие окон консольных приложений


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru