Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизКто-нибудь знаете как можно с эмулировать командную строку как эт Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c