📄 jwawinnetwk.pas
字号:
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}
WN_CONNECTED_OTHER_PASSWORD_DEFAULT = ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT;
{$EXTERNALSYM WN_CONNECTED_OTHER_PASSWORD_DEFAULT}
// 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';
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnectionA: Pointer;
function WNetAddConnectionA;
begin
GetProcedureAddress(_WNetAddConnectionA, mpr, 'WNetAddConnectionA');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnectionA]
end;
end;
{$ELSE}
function WNetAddConnectionA; external mpr name 'WNetAddConnectionA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnectionW: Pointer;
function WNetAddConnectionW;
begin
GetProcedureAddress(_WNetAddConnectionW, mpr, 'WNetAddConnectionW');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnectionW]
end;
end;
{$ELSE}
function WNetAddConnectionW; external mpr name 'WNetAddConnectionW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection: Pointer;
function WNetAddConnection;
begin
GetProcedureAddress(_WNetAddConnection, mpr, 'WNetAddConnectionW');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection]
end;
end;
{$ELSE}
function WNetAddConnection; external mpr name 'WNetAddConnectionW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection: Pointer;
function WNetAddConnection;
begin
GetProcedureAddress(_WNetAddConnection, mpr, 'WNetAddConnectionA');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection]
end;
end;
{$ELSE}
function WNetAddConnection; external mpr name 'WNetAddConnectionA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection2A: Pointer;
function WNetAddConnection2A;
begin
GetProcedureAddress(_WNetAddConnection2A, mpr, 'WNetAddConnection2A');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection2A]
end;
end;
{$ELSE}
function WNetAddConnection2A; external mpr name 'WNetAddConnection2A';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection2W: Pointer;
function WNetAddConnection2W;
begin
GetProcedureAddress(_WNetAddConnection2W, mpr, 'WNetAddConnection2W');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection2W]
end;
end;
{$ELSE}
function WNetAddConnection2W; external mpr name 'WNetAddConnection2W';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection2: Pointer;
function WNetAddConnection2;
begin
GetProcedureAddress(_WNetAddConnection2, mpr, 'WNetAddConnection2W');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection2]
end;
end;
{$ELSE}
function WNetAddConnection2; external mpr name 'WNetAddConnection2W';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection2: Pointer;
function WNetAddConnection2;
begin
GetProcedureAddress(_WNetAddConnection2, mpr, 'WNetAddConnection2A');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection2]
end;
end;
{$ELSE}
function WNetAddConnection2; external mpr name 'WNetAddConnection2A';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection3A: Pointer;
function WNetAddConnection3A;
begin
GetProcedureAddress(_WNetAddConnection3A, mpr, 'WNetAddConnection3A');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection3A]
end;
end;
{$ELSE}
function WNetAddConnection3A; external mpr name 'WNetAddConnection3A';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection3W: Pointer;
function WNetAddConnection3W;
begin
GetProcedureAddress(_WNetAddConnection3W, mpr, 'WNetAddConnection3W');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection3W]
end;
end;
{$ELSE}
function WNetAddConnection3W; external mpr name 'WNetAddConnection3W';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection3: Pointer;
function WNetAddConnection3;
begin
GetProcedureAddress(_WNetAddConnection3, mpr, 'WNetAddConnection3W');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection3]
end;
end;
{$ELSE}
function WNetAddConnection3; external mpr name 'WNetAddConnection3W';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_WNetAddConnection3: Pointer;
function WNetAddConnection3;
begin
GetProcedureAddress(_WNetAddConnection3, mpr, 'WNetAddConnection3A');
asm
mov esp, ebp
pop ebp
jmp [_WNetAddConnection3]
end;
end;
{$ELSE}
function WNetAddConnection3; external mpr name 'WNetAddConnection3A';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_WNetCancelConnectionA: Pointer;
function WNetCancelConnectionA;
begin
GetProcedureAddress(_WNetCancelConnectionA, mpr, 'WNetCancelConnectionA');
asm
mov esp, ebp
pop ebp
jmp [_WNetCancelConnectionA]
end;
end;
{$ELSE}
function WNetCancelConnectionA; external mpr name 'WNetCancelConnectionA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_WNetCancelConnectionW: Pointer;
function WNetCancelConnectionW;
begin
GetProcedureAddress(_WNetCancelConnectionW, mpr, 'WNetCancelConnectionW');
asm
mov esp, ebp
pop ebp
jmp [_WNetCancelConnectionW]
end;
end;
{$ELSE}
function WNetCancelConnectionW; external mpr name 'WNetCancelConnectionW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_WNetCancelConnection: Pointer;
function WNetCancelConnection;
begin
GetProcedureAddress(_WNetCancelConnection, mpr, 'WNetCancelConnectionW');
asm
mov esp, ebp
pop ebp
jmp [_WNetCancelConnection]
end;
end;
{$ELSE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -