Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.006 c
1-60593
MikeFW
2002-08-07 15:09
2002.08.19
Как из приложения нарисовать таблицу в MS Word?


1-60665
Дмитрий Баранов
2002-08-09 11:32
2002.08.19
Как прибить SYSTEM-процесс


6-60770
Sin
2002-06-04 13:55
2002.08.19
Собственны проси сервер


1-60704
delta
2002-08-06 16:12
2002.08.19
Потоки


1-60673
anod
2002-08-06 11:24
2002.08.19
Ошибка диска А





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский