您可以将WNetUseConnection 函数与CONNECT_INTERACTIVE 和CONNECT_PROMPT 标志一起使用。当您输入正确的凭据时,这将与空的用户 ID 和密码参数一起调用凭据对话框并连接到网络资源:
procedure TForm1.Button1Click(Sender: TObject);
var
BufferSize: DWORD;
ResultFlag: DWORD;
NetResource: TNetResource;
begin
NetResource.dwType := RESOURCETYPE_DISK;
NetResource.lpLocalName := nil;
NetResource.lpRemoteName := '\\MySuperSecret\Place';
NetResource.lpProvider := nil;
if WNetUseConnection(Handle, NetResource, nil, nil, CONNECT_INTERACTIVE or
CONNECT_PROMPT, nil, BufferSize, ResultFlag) = NO_ERROR
then
ShowMessage('Connected!');
end;
要在不提示输入凭据的情况下连接到网络资源,请删除上面指定的标志,如下面的函数所示,连接成功时应返回 True,失败时返回 False。参数说明如下:
- RemoteName(字符串)- 远程网络名称
- UserName(字符串)- 用于连接网络资源的用户名
- 密码(字符串)- 用于连接网络资源的密码
function TryConnect(const RemoteName, UserName, Password: string): Boolean;
var
BufferSize: DWORD;
ResultFlag: DWORD;
NetResource: TNetResource;
begin
NetResource.dwType := RESOURCETYPE_DISK;
NetResource.lpLocalName := nil;
NetResource.lpRemoteName := PChar(RemoteName);
NetResource.lpProvider := nil;
Result := WNetUseConnection(0, NetResource, PChar(UserName), PChar(Password),
0, nil, BufferSize, ResultFlag) = NO_ERROR;
end;