![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как разрешить общий доступ к диску? [D7, WinXP]
aglar © (2005-11-21 18:30:00)Есть кусок кода, не знаю на чем написан. Помогите перевести на язык Дельфи (что-то мне подсказывает, что везде где видно "50" нужно писать "502") :
--------
share_info_50 shinfo50;
ZeroMemory(&shinfo50,sizeof(shinfo50));
shinfo50.shi50_type=STYPE_DISKTREE;
shinfo50.shi50_flags=SHI50F_FULL | SHI50F_SYSTEM| SHI50F_PERSIST;
shinfo50.shi50_remark="";
// Расшариваем 1-й диск
lstrcpyn(shinfo50.shi50_netname,"TEMP1$",LM20_NNLEN+1);
shinfo50.shi50_path="C:\\";
NetShareAdd(NULL,50,(char*)&shinfo50,sizeof(struct share_info_50));
// Расшариваем 2-й диск
lstrcpyn(shinfo50.shi50_netname,"TEMP2$",LM20_NNLEN+1);
shinfo50.shi50_path="D:\\";
NetShareAdd(NULL,50,(char*)&shinfo50,sizeof(struct share_info_50));
// Расшариваем 3-й диск
lstrcpyn(shinfo50.shi50_netname,"TEMP3$",LM20_NNLEN+1);
shinfo50.shi50_path="E:\\";
NetShareAdd(NULL,50,(char*)&shinfo50,sizeof(struct share_info_50));
// P.S. Все это только для Win95/98/Me. Для NT нужно немного
// модифицировать.
-----
Кстати если кто разобрался, как это модифицировать для работы в XP\NT?
Не молодой (2005-11-22 14:30:00) [1]Здесь все это есть:
http://www.delphimaster.ru/articles/netmon/index.html
Anatoly Podgoretsky (2005-11-22 13:44:00) [2]aglar (22.11.05 13:12) [3]
Точно ругается, матом?
clickmaker (2005-11-22 13:18:00) [3]не знаю как компилятор, но я бы ругался на (char*)@shinfo50
нет такой конструкции и типа в паскале. Если уж приводить тип, то так: PChar(@shinfo50). Хотя в данном случае, скорей всего достаточно просто shinfo50
PS. Признак хорошего тона - не писать фраз типа "компилятор на это жутко ругается", а текст самого ругательства
aglar (2005-11-22 13:12:00) [4]вот что получилось, но компилятор на это жутко ругается:
unit ShareDisk;
interface
uses
ShellApi, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
shinfo50: share_info_502;
begin
ZeroMemory(@shinfo50,sizeof(shinfo50));
shinfo50.shi502_type:=STYPE_DISKTREE;
shinfo50.shi502_flags:=SHI502F_FULL or SHI502F_SYSTEM or SHI502F_PERSIST;
shinfo50.shi502_remark:='';
lstrcpyn(shinfo50.shi502_netname,'TEMP1$',LM20_NNLEN+1);
shinfo50.shi502_path:='C:\\';
NetShareAdd(nil,502,(char*)@shinfo50,sizeof(struct share_info_502));
lstrcpyn(shinfo50.shi50_netname,'TEMP2$',LM20_NNLEN+1);
shinfo50.shi50_path:='D:\\';
NetShareAdd(nil,502,(char*)@shinfo50,sizeof(struct share_info_502));
lstrcpyn(shinfo50.shi50_netname,'TEMP3$',LM20_NNLEN+1);
shinfo50.shi50_path:='E:\\';
NetShareAdd(nil,502,(char*)@shinfo50,sizeof(struct share_info_502));
end;
end.
-----
Что я делаю не так?
clickmaker (2005-11-21 18:37:00) [5]
> Есть кусок кода, не знаю на чем написан
на Cи.
заменяешь = на :=
@ на &
NULL на nil
| на or
clickmaker (2005-11-21 18:37:00) [6]наоборот, конечно же
& на @