Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кто-нибудь знаете как можно с эмулировать командную строку как эт


snoup ©   (2002-08-06 20:01:00) 

Кто-нибудь знаете как можно с эмулировать командную строку как это делает Far


msts   (2002-08-07 17:59:00) [1]

И еще если кто сможет убрать заголовок/бордюр у окна консоли - сообщите
а то у меня неполучилось (вариант 2)


msts   (2002-08-07 17:56:00) [2]

PS: Unit1 - второй вариант
Для него создайте !!!новый проект!!! с формой добавте компоненты и т.п.


msts   (2002-08-07 17:54:00) [3]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Panel1CanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
private
{ Private declarations }
public
FConsoleW : THANDLE;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Types;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
LCONSOLE_SCREEN_BUFFER_INFO : CONSOLE_SCREEN_BUFFER_INFO;
LMSG : TMessage;
i : integer;
LLONG : DWORD;
begin
AllocConsole;

FConsole := GetStdHandle(STD_OUTPUT_HANDLE);

if GetConsoleScreenBufferInfo(FConsole,LCONSOLE_SCREEN_BUFFER_INFO) then begin
FConsoleW := GetForegroundWindow;

Windows.SetParent(FConsoleW,Panel1.Handle);
Self.Height:=Self.Height+1;
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
var
LSTARTUPINFO : STARTUPINFO;
LPROCESS_INFORMATION : PROCESS_INFORMATION;
begin

FillChar(LSTARTUPINFO, SizeOf(LSTARTUPINFO), 0);
with LSTARTUPINFO do
begin
cb := SizeOf(LSTARTUPINFO);
lpTitle:=PChar("c:\far\far.exe");
end;

if CreateProcess(
nil,
LSTARTUPINFO.lpTitle,
nil,
nil,
true,
CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS,
nil,
nil,
LSTARTUPINFO,
LPROCESS_INFORMATION
) then begin
SetConsoleTitle(LSTARTUPINFO.lpTitle);

end;end;

procedure TForm1.Panel1CanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
var
LRect : TRect;
begin
SetWindowPos(FConsoleW,0,0,0,NewWidth,NewHeight,SWP_NOACTIVATE);
if Windows.GetWindowRect(FConsoleW,LRect) then begin
NewWidth:=LRect.Right-LRect.Left;
NewHeight:=LRect.Bottom-LRect.Top;
end;
end;

end.


msts   (2002-08-07 17:51:00) [4]

Вариант 1 ->

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils,
Windows,
Messages;

var
LSTARTUPINFO : STARTUPINFO;
LPROCESS_INFORMATION : PROCESS_INFORMATION;
begin
// GetStartupInfo(LSTARTUPINFO);

FillChar(LSTARTUPINFO, SizeOf(LSTARTUPINFO), 0);
with LSTARTUPINFO do
begin
cb := SizeOf(LSTARTUPINFO);
// lpTitle:=PChar("c:\winnt\system32\cmd.exe");
lpTitle:=PChar("c:\far\far.exe");
end;

if CreateProcess(
nil,
LSTARTUPINFO.lpTitle,
nil,
nil,
true,
CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS,
nil,
nil,
LSTARTUPINFO,
LPROCESS_INFORMATION
) then begin
SetConsoleTitle(LSTARTUPINFO.lpTitle);

WaitForSingleObject(LPROCESS_INFORMATION.hProcess, INFINITE);
CloseHandle(LPROCESS_INFORMATION.hProcess);
CloseHandle(LPROCESS_INFORMATION.hThread);
end;

end.


True Smithson   (2002-08-07 10:46:00) [5]

Вопрос в том, как запустить приложение с выводом на свою же консоль?


ACR   (2002-08-06 20:28:00) [6]

а почему ты думаешь что он ее эмулирует? может он ее симулирует?


Jeer   (2002-08-06 20:27:00) [7]

А что значит "зашел" и где написал ?


snoup   (2002-08-06 20:14:00) [8]

>rhf ©
Нет не это я имею ввиду именно командную строку, вот как в Far"e
например зашел в директорию Виндоус написал "net" и тебе запустилась команда не посредственно в Фаре как и в командной строке меня это интересует


rhf   (2002-08-06 20:06:00) [9]

shellExecute()


Наверх

Титульная страница Поиск, карта сайта Написать письмо