📄 winnetwk.pas
字号:
const
NETINFO_DLL16 = $00000001; // Provider running as 16 bit Winnet Driver
{$EXTERNALSYM NETINFO_DLL16}
NETINFO_DISKRED = $00000004; // Provider requires disk redirections to connect
{$EXTERNALSYM NETINFO_DISKRED}
NETINFO_PRINTERRED = $00000008; // Provider requires printer redirections to connect
{$EXTERNALSYM NETINFO_PRINTERRED}
function WNetGetNetworkInformationA(lpProvider: LPCSTR;
var lpNetInfoStruct: NETINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM WNetGetNetworkInformationA}
function WNetGetNetworkInformationW(lpProvider: LPCWSTR;
var lpNetInfoStruct: NETINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM WNetGetNetworkInformationW}
{$IFDEF UNICODE}
function WNetGetNetworkInformation(lpProvider: LPCWSTR;
var lpNetInfoStruct: NETINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM WNetGetNetworkInformation}
{$ELSE}
function WNetGetNetworkInformation(lpProvider: LPCSTR;
var lpNetInfoStruct: NETINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM WNetGetNetworkInformation}
{$ENDIF}
//
// User Profiles.
//
type
PFNGETPROFILEPATHA = function (pszUsername: LPCSTR; pszBuffer: LPSTR;
cbBuffer: UINT): UINT; stdcall;
{$EXTERNALSYM PFNGETPROFILEPATHA}
PFNGETPROFILEPATHW = function (pszUsername: LPCWSTR; pszBuffer: LPWSTR;
cbBuffer: UINT): UINT; stdcall;
{$EXTERNALSYM PFNGETPROFILEPATHW}
{$IFDEF UNICODE}
PFNGETPROFILEPATH = PFNGETPROFILEPATHW;
{$EXTERNALSYM PFNGETPROFILEPATH}
{$ELSE}
PFNGETPROFILEPATH = PFNGETPROFILEPATHA;
{$EXTERNALSYM PFNGETPROFILEPATH}
{$ENDIF}
PFNRECONCILEPROFILEA = function (pszCentralFile, pszLocalFile: LPCSTR;
dwFlags: DWORD): UINT; stdcall;
{$EXTERNALSYM PFNRECONCILEPROFILEA}
PFNRECONCILEPROFILEW = function (pszCentralFile, pszLocalFile: LPCWSTR;
dwFlags: DWORD): UINT; stdcall;
{$EXTERNALSYM PFNRECONCILEPROFILEW}
{$IFDEF UNICODE}
PFNRECONCILEPROFILE = PFNRECONCILEPROFILEW;
{$EXTERNALSYM PFNRECONCILEPROFILE}
{$ELSE}
PFNRECONCILEPROFILE = PFNRECONCILEPROFILEA;
{$EXTERNALSYM PFNRECONCILEPROFILE}
{$ENDIF}
const
RP_LOGON = $01; // if set, do for logon, else for logoff
{$EXTERNALSYM RP_LOGON}
RP_INIFILE = $02; // if set, reconcile .INI file, else reg. hive
{$EXTERNALSYM RP_INIFILE}
//
// Policies.
//
type
PFNPROCESSPOLICIESA = function (hwnd: HWND; pszPath, pszUsername,
pszComputerName: LPCSTR; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM PFNPROCESSPOLICIESA}
PFNPROCESSPOLICIESW = function (hwnd: HWND; pszPath, pszUsername,
pszComputerName: LPCWSTR; dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM PFNPROCESSPOLICIESW}
{$IFDEF UNICODE}
PFNPROCESSPOLICIES = PFNPROCESSPOLICIESW;
{$EXTERNALSYM PFNPROCESSPOLICIES}
{$ELSE}
PFNPROCESSPOLICIES = PFNPROCESSPOLICIESA;
{$EXTERNALSYM PFNPROCESSPOLICIES}
{$ENDIF}
const
PP_DISPLAYERRORS = $01; // if set, display error messages, else fail silently if error
{$EXTERNALSYM PP_DISPLAYERRORS}
//
// Error handling.
//
function WNetGetLastErrorA(var lpError: DWORD; lpErrorBuf: LPSTR;
nErrorBufSize: DWORD; lpNameBuf: LPSTR; nNameBufSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetLastErrorA}
function WNetGetLastErrorW(var lpError: DWORD; lpErrorBuf: LPWSTR;
nErrorBufSize: DWORD; lpNameBuf: LPWSTR; nNameBufSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetLastErrorW}
{$IFDEF UNICODE}
function WNetGetLastError(var lpError: DWORD; lpErrorBuf: LPWSTR;
nErrorBufSize: DWORD; lpNameBuf: LPWSTR; nNameBufSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetLastError}
{$ELSE}
function WNetGetLastError(var lpError: DWORD; lpErrorBuf: LPSTR;
nErrorBufSize: DWORD; lpNameBuf: LPSTR; nNameBufSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetLastError}
{$ENDIF}
//
// STATUS CODES
//
// General
const
WN_SUCCESS = NO_ERROR;
{$EXTERNALSYM WN_SUCCESS}
WN_NO_ERROR = NO_ERROR;
{$EXTERNALSYM WN_NO_ERROR}
WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED;
{$EXTERNALSYM WN_NOT_SUPPORTED}
WN_CANCEL = ERROR_CANCELLED;
{$EXTERNALSYM WN_CANCEL}
WN_RETRY = ERROR_RETRY;
{$EXTERNALSYM WN_RETRY}
WN_NET_ERROR = ERROR_UNEXP_NET_ERR;
{$EXTERNALSYM WN_NET_ERROR}
WN_MORE_DATA = ERROR_MORE_DATA;
{$EXTERNALSYM WN_MORE_DATA}
WN_BAD_POINTER = ERROR_INVALID_ADDRESS;
{$EXTERNALSYM WN_BAD_POINTER}
WN_BAD_VALUE = ERROR_INVALID_PARAMETER;
{$EXTERNALSYM WN_BAD_VALUE}
WN_BAD_USER = ERROR_BAD_USERNAME;
{$EXTERNALSYM WN_BAD_USER}
WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD;
{$EXTERNALSYM WN_BAD_PASSWORD}
WN_ACCESS_DENIED = ERROR_ACCESS_DENIED;
{$EXTERNALSYM WN_ACCESS_DENIED}
WN_FUNCTION_BUSY = ERROR_BUSY;
{$EXTERNALSYM WN_FUNCTION_BUSY}
WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR;
{$EXTERNALSYM WN_WINDOWS_ERROR}
WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY;
{$EXTERNALSYM WN_OUT_OF_MEMORY}
WN_NO_NETWORK = ERROR_NO_NETWORK;
{$EXTERNALSYM WN_NO_NETWORK}
WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR;
{$EXTERNALSYM WN_EXTENDED_ERROR}
WN_BAD_LEVEL = ERROR_INVALID_LEVEL;
{$EXTERNALSYM WN_BAD_LEVEL}
WN_BAD_HANDLE = ERROR_INVALID_HANDLE;
{$EXTERNALSYM WN_BAD_HANDLE}
WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED;
{$EXTERNALSYM WN_NOT_INITIALIZING}
WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES;
{$EXTERNALSYM WN_NO_MORE_DEVICES}
// Connection
WN_NOT_CONNECTED = ERROR_NOT_CONNECTED;
{$EXTERNALSYM WN_NOT_CONNECTED}
WN_OPEN_FILES = ERROR_OPEN_FILES;
{$EXTERNALSYM WN_OPEN_FILES}
WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE;
{$EXTERNALSYM WN_DEVICE_IN_USE}
WN_BAD_NETNAME = ERROR_BAD_NET_NAME;
{$EXTERNALSYM WN_BAD_NETNAME}
WN_BAD_LOCALNAME = ERROR_BAD_DEVICE;
{$EXTERNALSYM WN_BAD_LOCALNAME}
WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED;
{$EXTERNALSYM WN_ALREADY_CONNECTED}
WN_DEVICE_ERROR = ERROR_GEN_FAILURE;
{$EXTERNALSYM WN_DEVICE_ERROR}
WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL;
{$EXTERNALSYM WN_CONNECTION_CLOSED}
WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH;
{$EXTERNALSYM WN_NO_NET_OR_BAD_PATH}
WN_BAD_PROVIDER = ERROR_BAD_PROVIDER;
{$EXTERNALSYM WN_BAD_PROVIDER}
WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE;
{$EXTERNALSYM WN_CANNOT_OPEN_PROFILE}
WN_BAD_PROFILE = ERROR_BAD_PROFILE;
{$EXTERNALSYM WN_BAD_PROFILE}
WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE;
{$EXTERNALSYM WN_BAD_DEV_TYPE}
WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED;
{$EXTERNALSYM WN_DEVICE_ALREADY_REMEMBERED}
WN_CONNECTED_OTHER_PASSWORD = ERROR_CONNECTED_OTHER_PASSWORD;
{$EXTERNALSYM WN_CONNECTED_OTHER_PASSWORD}
// Enumeration
WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS;
{$EXTERNALSYM WN_NO_MORE_ENTRIES}
WN_NOT_CONTAINER = ERROR_NOT_CONTAINER;
{$EXTERNALSYM WN_NOT_CONTAINER}
// Authentication
WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED;
{$EXTERNALSYM WN_NOT_AUTHENTICATED}
WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON;
{$EXTERNALSYM WN_NOT_LOGGED_ON}
WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS;
{$EXTERNALSYM WN_NOT_VALIDATED}
//
// For Shell
//
type
LPNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
{$EXTERNALSYM LPNETCONNECTINFOSTRUCT}
_NETCONNECTINFOSTRUCT = record
cbStructure: DWORD;
dwFlags: DWORD;
dwSpeed: DWORD;
dwDelay: DWORD;
dwOptDataSize: DWORD;
end;
{$EXTERNALSYM _NETCONNECTINFOSTRUCT}
NETCONNECTINFOSTRUCT = _NETCONNECTINFOSTRUCT;
{$EXTERNALSYM NETCONNECTINFOSTRUCT}
TNetConnectInfoStruct = NETCONNECTINFOSTRUCT;
PNetConnectInfoStruct = LPNETCONNECTINFOSTRUCT;
const
WNCON_FORNETCARD = $00000001;
{$EXTERNALSYM WNCON_FORNETCARD}
WNCON_NOTROUTED = $00000002;
{$EXTERNALSYM WNCON_NOTROUTED}
WNCON_SLOWLINK = $00000004;
{$EXTERNALSYM WNCON_SLOWLINK}
WNCON_DYNAMIC = $00000008;
{$EXTERNALSYM WNCON_DYNAMIC}
function MultinetGetConnectionPerformanceA(const lpNetResource: NETRESOURCEA;
var lpNetConnectInfoStruct: NETCONNECTINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM MultinetGetConnectionPerformanceA}
function MultinetGetConnectionPerformanceW(const lpNetResource: NETRESOURCEW;
var lpNetConnectInfoStruct: NETCONNECTINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM MultinetGetConnectionPerformanceW}
{$IFDEF UNICODE}
function MultinetGetConnectionPerformance(const lpNetResource: NETRESOURCEW;
var lpNetConnectInfoStruct: NETCONNECTINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM MultinetGetConnectionPerformance}
{$ELSE}
function MultinetGetConnectionPerformance(const lpNetResource: NETRESOURCEA;
var lpNetConnectInfoStruct: NETCONNECTINFOSTRUCT): DWORD; stdcall;
{$EXTERNALSYM MultinetGetConnectionPerformance}
{$ENDIF}
implementation
const
mpr = 'mpr.dll';
function WNetAddConnectionA; external mpr name 'WNetAddConnectionA';
function WNetAddConnectionW; external mpr name 'WNetAddConnectionW';
{$IFDEF UNICODE}
function WNetAddConnection; external mpr name 'WNetAddConnectionW';
{$ELSE}
function WNetAddConnection; external mpr name 'WNetAddConnectionA';
{$ENDIF}
function WNetAddConnection2A; external mpr name 'WNetAddConnection2A';
function WNetAddConnection2W; external mpr name 'WNetAddConnection2W';
{$IFDEF UNICODE}
function WNetAddConnection2; external mpr name 'WNetAddConnection2W';
{$ELSE}
function WNetAddConnection2; external mpr name 'WNetAddConnection2A';
{$ENDIF}
function WNetAddConnection3A; external mpr name 'WNetAddConnection3A';
function WNetAddConnection3W; external mpr name 'WNetAddConnection3W';
{$IFDEF UNICODE}
function WNetAddConnection3; external mpr name 'WNetAddConnection3W';
{$ELSE}
function WNetAddConnection3; external mpr name 'WNetAddConnection3A';
{$ENDIF}
function WNetCancelConnectionA; external mpr name 'WNetCancelConnectionA';
function WNetCancelConnectionW; external mpr name 'WNetCancelConnectionW';
{$IFDEF UNICODE}
function WNetCancelConnection; external mpr name 'WNetCancelConnectionW';
{$ELSE}
function WNetCancelConnection; external mpr name 'WNetCancelConnectionA';
{$ENDIF}
function WNetCancelConnection2A; external mpr name 'WNetCancelConnection2A';
function WNetCancelConnection2W; external mpr name 'WNetCancelConnection2W';
{$IFDEF UNICODE}
function WNetCancelConnection2; external mpr name 'WNetCancelConnection2W';
{$ELSE}
function WNetCancelConnection2; external mpr name 'WNetCancelConnection2A';
{$ENDIF}
function WNetGetConnectionA; external mpr name 'WNetGetConnectionA';
function WNetGetConnectionW; external mpr name 'WNetGetConnectionW';
{$IFDEF UNICODE}
function WNetGetConnection; external mpr name 'WNetGetConnectionW';
{$ELSE}
function WNetGetConnection; external mpr name 'WNetGetConnectionA';
{$ENDIF}
function WNetUseConnectionA; external mpr name 'WNetUseConnectionA';
function WNetUseConnectionW; external mpr name 'WNetUseConnectionW';
{$IFDEF UNICODE}
function WNetUseConnection; external mpr name 'WNetUseConnectionW';
{$ELSE}
function WNetUseConnection; external mpr name 'WNetUseConnectionA';
{$ENDIF}
function WNetConnectionDialog; external mpr name 'WNetConnectionDialog';
function WNetDisconnectDialog; external mpr name 'WNetDisconnectDialog';
function WNetConnectionDialog1A; external mpr name 'WNetConnectionDialog1A';
function WNetConnectionDialog1W; external mpr name 'WNetConnectionDialog1W';
{$IFDEF UNICODE}
function WNetConnectionDialog1; external mpr name 'WNetConnectionDialog1W';
{$ELSE}
function WNetConnectionDialog1; external mpr name 'WNetConnectionDialog1A';
{$ENDIF}
function WNetDisconnectDialog1A; external mpr name 'WNetDisconnectDialog1A';
function WNetDisconnectDialog1W; external mpr name 'WNetDisconnectDialog1W';
{$IFDEF UNICODE}
function WNetDisconnectDialog1; external mpr name 'WNetDisconnectDialog1W';
{$ELSE}
function WNetDisconnectDialog1; external mpr name 'WNetDisconnectDialog1A';
{$ENDIF}
function WNetOpenEnumA; external mpr name 'WNetOpenEnumA';
function WNetOpenEnumW; external mpr name 'WNetOpenEnumW';
{$IFDEF UNICODE}
function WNetOpenEnum; external mpr name 'WNetOpenEnumW';
{$ELSE}
function WNetOpenEnum; external mpr name 'WNetOpenEnumA';
{$ENDIF}
function WNetEnumResourceA; external mpr name 'WNetEnumResourceA';
function WNetEnumResourceW; external mpr name 'WNetEnumResourceW';
{$IFDEF UNICODE}
function WNetEnumResource; external mpr name 'WNetEnumResourceW';
{$ELSE}
function WNetEnumResource; external mpr name 'WNetEnumResourceA';
{$ENDIF}
function WNetCloseEnum; external mpr name 'WNetCloseEnum';
function WNetGetResourceParentA; external mpr name 'WNetGetResourceParentA';
function WNetGetResourceParentW; external mpr name 'WNetGetResourceParentW';
{$IFDEF UNICODE}
function WNetGetResourceParent; external mpr name 'WNetGetResourceParentW';
{$ELSE}
function WNetGetResourceParent; external mpr name 'WNetGetResourceParentA';
{$ENDIF}
function WNetGetResourceInformationA; external mpr name 'WNetGetResourceInformationA';
function WNetGetResourceInformationW; external mpr name 'WNetGetResourceInformationW';
{$IFDEF UNICODE}
function WNetGetResourceInformation; external mpr name 'WNetGetResourceInformationW';
{$ELSE}
function WNetGetResourceInformation; external mpr name 'WNetGetResourceInformationA';
{$ENDIF}
function WNetGetUniversalNameA; external mpr name 'WNetGetUniversalNameA';
function WNetGetUniversalNameW; external mpr name 'WNetGetUniversalNameW';
{$IFDEF UNICODE}
function WNetGetUniversalName; external mpr name 'WNetGetUniversalNameW';
{$ELSE}
function WNetGetUniversalName; external mpr name 'WNetGetUniversalNameA';
{$ENDIF}
function WNetGetUserA; external mpr name 'WNetGetUserA';
function WNetGetUserW; external mpr name 'WNetGetUserW';
{$IFDEF UNICODE}
function WNetGetUser; external mpr name 'WNetGetUserW';
{$ELSE}
function WNetGetUser; external mpr name 'WNetGetUserA';
{$ENDIF}
function WNetGetProviderNameA; external mpr name 'WNetGetProviderNameA';
function WNetGetProviderNameW; external mpr name 'WNetGetProviderNameW';
{$IFDEF UNICODE}
function WNetGetProviderName; external mpr name 'WNetGetProviderNameW';
{$ELSE}
function WNetGetProviderName; external mpr name 'WNetGetProviderNameA';
{$ENDIF}
function WNetGetNetworkInformationA; external mpr name 'WNetGetNetworkInformationA';
function WNetGetNetworkInformationW; external mpr name 'WNetGetNetworkInformationW';
{$IFDEF UNICODE}
function WNetGetNetworkInformation; external mpr name 'WNetGetNetworkInformationW';
{$ELSE}
function WNetGetNetworkInformation; external mpr name 'WNetGetNetworkInformationA';
{$ENDIF}
function WNetGetLastErrorA; external mpr name 'WNetGetLastErrorA';
function WNetGetLastErrorW; external mpr name 'WNetGetLastErrorW';
{$IFDEF UNICODE}
function WNetGetLastError; external mpr name 'WNetGetLastErrorW';
{$ELSE}
function WNetGetLastError; external mpr name 'WNetGetLastErrorA';
{$ENDIF}
function MultinetGetConnectionPerformanceA; external mpr name 'MultinetGetConnectionPerformanceA';
function MultinetGetConnectionPerformanceW; external mpr name 'MultinetGetConnectionPerformanceW';
{$IFDEF UNICODE}
function MultinetGetConnectionPerformance; external mpr name 'MultinetGetConnectionPerformanceW';
{$ELSE}
function MultinetGetConnectionPerformance; external mpr name 'MultinetGetConnectionPerformanceA';
{$ENDIF}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -