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

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

Командная строка windows2000 [D7, Win2k]


Staraya ©   (2003-05-06 09:09:00) 

Здравствуйте! Я впервые столкнулась с такой вот проблемой: Мне нужно сделать такую прогу, которая будет работать как командная строка в windows2000. Только параметры для команды должны вводится в editы, например имя компьютера или его ip-адрес, имя расшаренного ресурса и т.д. Подскажите пожалуйста, с чего мне начать, хотя бы какие компоненты delphi использовать для этого, может у кого есть похожая прога. Заранее благодарна.


Reindeer Moss Eater   (2003-05-07 11:07:00) [1]

uses Windows;

WNetAddConnection((PChar("\\ServerName\ShareName"),nil,PChar("X:");


Polevi   (2003-05-07 10:05:00) [2]

2Reindeer Moss Eater (07.05.03 09:59)
это был второй пост

2Staraya (07.05.03 10:03)
тебе уже выложили на блюдечке готовый код, имей совесть


Staraya   (2003-05-07 10:03:00) [3]

>Reindeer Moss Eater
Объясните пожалуйста подробнее что это за WNetAddConecction и как его использовать, где его взять и т.д. Заранее благодарна.


Reindeer Moss Eater   (2003-05-07 09:59:00) [4]

Staraya (06.05.03 15:41)
> Polevi
Большое спасибо за подробное описание, только мне нужно было передавать из едитов параметры для команды net use, т.е. чтоб при нажатии на кнопку выполнить срабатывала команда net use


Polevi   (2003-05-07 09:38:00) [5]

>Reindeer Moss Eater (07.05.03 09:30)

Я впервые столкнулась с такой вот проблемой: Мне нужно сделать такую прогу, которая будет работать как командная строка в windows2000. Только параметры для команды должны вводится в editы, например имя компьютера или его ip-адрес, имя расшаренного ресурса и т.д.

причем тут WNetAddConecction


Reindeer Moss Eater   (2003-05-07 09:30:00) [6]

Staraya (06.05.03 15:41)
> Polevi
Большое спасибо за подробное описание, только мне нужно было передавать из едитов параметры для команды net use, т.е. чтоб при нажатии на кнопку выполнить срабатывала команда net use


Все делается действием в одну строчку
WNetAddConecction


Polevi   (2003-05-06 15:49:00) [7]

procedure TForm1.FormCreate(Sender: TObject);
begin
c:=TConsole.Create(Handle,WM_USER+1);
end;

procedure TForm1.Z(var Msg: TMessage);
var
p:PChar;
begin
p:=PChar(Msg.wParam);
OemToCharBuff(p,p,length(p));
Memo1.Lines.Add(p);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
c.AddCommand("net use "+Edit1.Text);
end;


Staraya   (2003-05-06 15:41:00) [8]

> Polevi
Большое спасибо за подробное описание, только мне нужно было передавать из едитов параметры для команды net use, т.е. чтоб при нажатии на кнопку выполнить срабатывала команда net use


Polevi   (2003-05-06 14:00:00) [9]

пример использования

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
c:TConsole;
procedure Z(var Msg:TMessage);message WM_USER+1;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
c:=TConsole.Create(Handle,WM_USER+1);
c.AddCommand("ping 192.168.1.23");
end;

procedure TForm1.Z(var Msg: TMessage);
var
p:PChar;
begin
p:=PChar(Msg.wParam);
OemToCharBuff(p,p,length(p));
Memo1.Lines.Add(p);
end;

end.


Polevi   (2003-05-06 13:59:00) [10]

unit admin;

interface

uses Windows, Classes, syncobjs, SysUtils;

type
TConsole=class(TThread)
private
FWnd:THandle;
FMsg:Cardinal;
ChildStdInWr,ChildStdoutRd:THandle;
FCS:TCriticalSection;
FCommandList:TStringList;
procedure CreateConsole;
protected
procedure Execute;override;
public
constructor Create(AWnd:THandle; AMsg:Cardinal);reintroduce;
procedure AddCommand(s:string);
end;

implementation

{ TConsole }

constructor TConsole.Create(AWnd:THandle; AMsg:Cardinal);
begin
FWnd:=AWnd;
FMsg:=AMsg;
FCS:=TCriticalSection.Create;
FCommandList:=TStringList.Create;
inherited Create(false);
end;

procedure TConsole.AddCommand(s:string);
begin
FCS.Enter;
try
FCommandList.Add(s+#13#10);
finally
FCS.Leave;
end;
end;

procedure TConsole.Execute;
var
buffer:Pointer;
bytesRead:DWORD;
begin
CreateConsole;
while not Terminated do
begin
sleep(200);
PeekNamedPipe(ChildStdoutRd,nil,0,nil,@bytesRead,nil);

//


Наверх

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