如何用delphi来让系统指定的目录共享为特定的共享名称?如何用delphi来实现映射驱动器操作? ( 积分: 100 )

  • 主题发起人 主题发起人 fly555
  • 开始时间 开始时间
F

fly555

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用delphi来让系统指定的目录共享为特定的共享名称?如何用delphi来实现映射驱动器操作?
 
用net函数(NetShareAdd之类的API),或者用调用net share命令
 
调用net share命令比较容易实现一些。
 
具体地说说呀。如何调用?
 
1.
WinExec('net.exe share 456=c:/123',SW_HIDE);

2.
var
aa:TNetResource;
retval : integer;
begin
aa.dwScope := RESOURCE_CONNECTED;
aa.dwType := RESOURCETYPE_ANY;
aa.lpLocalName := 'h:';
aa.lpRemoteName := '//192.168.1.10/share';
aa.lpProvider := Nil;
RetVal := WNetAddConnection2(aa,'Password','UserName',0);
end;
 
用这个是可以成功的的。
WinExec('net.exe share 456=c:/123',SW_HIDE);
但是是死的。
我想做成活的:就这样写了:
WinExec('net.exe share 5= '+ extractfilepath(application.ExeName ),SW_HIDE);
但是提示错误:incompatible types 'string' and 'pansichar'于是我就这样:
WinExec('net.exe share 5= '+ pchar(extractfilepath(application.ExeName )),SW_HIDE);
但是提示错误:incompatible types 'string' and 'pansichar'
这是怎么回事呢?
 
extractfilepath改成extractfileDir
 
WinExec(pchar('net.exe share 5= '+ ExtractFileDir(application.ExeName )),SW_HIDE);
 
[blue]来自:fly555, 时间:2007-3-9 8:45:05, ID:3678656
用这个是可以成功的的。
WinExec('net.exe share 456=c:/123',SW_HIDE);
但是是死的。
我想做成活的:就这样写了:
WinExec('net.exe share 5= '+ extractfilepath(application.ExeName ),SW_HIDE);
但是提示错误:incompatible types 'string' and 'pansichar'于是我就这样:
WinExec('net.exe share 5= '+ pchar(extractfilepath(application.ExeName )),SW_HIDE);
但是提示错误:incompatible types 'string' and 'pansichar'
这是怎么回事呢?[/blue]

WinExec是API函数,默认字符串都是PChar类型,你传入的第一个参数不能自动转换为PChar,所以必须强制类型转换。即:
代码:
WinExec([b]PChar[/b]('net.exe share 5= '+ extractfilepath(application.ExeName )),SW_HIDE);
 
这是基础问题,楼主仍需继续努力..........
要灵活,写成函数吧
// AFolder:要设置共享的目录
// AName:共享名
procedure TForm1.SetFolderShare(const AFolder, AName: String);
var
sDir: String;
iLen: Integer;
begin
sDir := Trim(AFolder);
iLen := Length(sDir);
if Copy(sDir,iLen,1) = '/' then sDir := Copy(sDir,1,iLen - 1);
//双引号用于处理字符串中存在空格的情况
WinExec(PChar('net.exe share "' + Trim(AName) + '"="' + sDir + '"'),SW_HIDE);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetFolderShare(ExtractFilePath(ParamStr(0)),'456');
end;
 
后退
顶部