Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

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

 
snoup ©   (2002-08-06 20:01) [0]

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


 
rhf ©   (2002-08-06 20:06) [1]

shellExecute()


 
snoup ©   (2002-08-06 20:14) [2]

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


 
Jeer ©   (2002-08-06 20:27) [3]

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


 
ACR ©   (2002-08-06 20:28) [4]

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


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

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


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

Вариант 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.


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

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:56) [8]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.08.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
3-60493
Exp
2002-07-29 12:45
2002.08.19
Запросы к таблицам EasyTable


3-60540
DenNNis
2002-07-22 16:35
2002.08.19
Список таблиц очень нужен


4-60900
Burmistroff
2002-06-14 20:19
2002.08.19
Внутрисистемная коммуникация


1-60649
MARcoDEN
2002-08-08 08:39
2002.08.19
Гладкое скроллирование текста


1-60618
plastique
2002-08-08 14:00
2002.08.19
HELP PLEASE!!! Получить имя компонента под курсором мыши