📄 jwawinnetwk.pas
字号:
{******************************************************************************}
{ }
{ Windows Networking API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
{ Corporation. All Rights Reserved. }
{ }
{ The original file is: winnetwk.h, released June 2000. The original Pascal }
{ code is: WinNetWk.pas, released December 2000. The initial developer of the }
{ Pascal code is Marcel van Brakel (brakelm@chello.nl). }
{ }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
{ Marcel van Brakel. All Rights Reserved. }
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project JEDI home }
{ page, located at http://delphi-jedi.org or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
unit JwaWinNetWk;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "WinNetWk.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinError, JwaWinType;
//
// Network types
//
const
WNNC_NET_MSNET = $00010000;
{$EXTERNALSYM WNNC_NET_MSNET}
WNNC_NET_LANMAN = $00020000;
{$EXTERNALSYM WNNC_NET_LANMAN}
WNNC_NET_NETWARE = $00030000;
{$EXTERNALSYM WNNC_NET_NETWARE}
WNNC_NET_VINES = $00040000;
{$EXTERNALSYM WNNC_NET_VINES}
WNNC_NET_10NET = $00050000;
{$EXTERNALSYM WNNC_NET_10NET}
WNNC_NET_LOCUS = $00060000;
{$EXTERNALSYM WNNC_NET_LOCUS}
WNNC_NET_SUN_PC_NFS = $00070000;
{$EXTERNALSYM WNNC_NET_SUN_PC_NFS}
WNNC_NET_LANSTEP = $00080000;
{$EXTERNALSYM WNNC_NET_LANSTEP}
WNNC_NET_9TILES = $00090000;
{$EXTERNALSYM WNNC_NET_9TILES}
WNNC_NET_LANTASTIC = $000A0000;
{$EXTERNALSYM WNNC_NET_LANTASTIC}
WNNC_NET_AS400 = $000B0000;
{$EXTERNALSYM WNNC_NET_AS400}
WNNC_NET_FTP_NFS = $000C0000;
{$EXTERNALSYM WNNC_NET_FTP_NFS}
WNNC_NET_PATHWORKS = $000D0000;
{$EXTERNALSYM WNNC_NET_PATHWORKS}
WNNC_NET_LIFENET = $000E0000;
{$EXTERNALSYM WNNC_NET_LIFENET}
WNNC_NET_POWERLAN = $000F0000;
{$EXTERNALSYM WNNC_NET_POWERLAN}
WNNC_NET_BWNFS = $00100000;
{$EXTERNALSYM WNNC_NET_BWNFS}
WNNC_NET_COGENT = $00110000;
{$EXTERNALSYM WNNC_NET_COGENT}
WNNC_NET_FARALLON = $00120000;
{$EXTERNALSYM WNNC_NET_FARALLON}
WNNC_NET_APPLETALK = $00130000;
{$EXTERNALSYM WNNC_NET_APPLETALK}
WNNC_NET_INTERGRAPH = $00140000;
{$EXTERNALSYM WNNC_NET_INTERGRAPH}
WNNC_NET_SYMFONET = $00150000;
{$EXTERNALSYM WNNC_NET_SYMFONET}
WNNC_NET_CLEARCASE = $00160000;
{$EXTERNALSYM WNNC_NET_CLEARCASE}
WNNC_NET_FRONTIER = $00170000;
{$EXTERNALSYM WNNC_NET_FRONTIER}
WNNC_NET_BMC = $00180000;
{$EXTERNALSYM WNNC_NET_BMC}
WNNC_NET_DCE = $00190000;
{$EXTERNALSYM WNNC_NET_DCE}
WNNC_NET_AVID = $001A0000;
{$EXTERNALSYM WNNC_NET_AVID}
WNNC_NET_DOCUSPACE = $001B0000;
{$EXTERNALSYM WNNC_NET_DOCUSPACE}
WNNC_NET_MANGOSOFT = $001C0000;
{$EXTERNALSYM WNNC_NET_MANGOSOFT}
WNNC_NET_SERNET = $001D0000;
{$EXTERNALSYM WNNC_NET_SERNET}
WNNC_NET_RIVERFRONT1 = $001E0000;
{$EXTERNALSYM WNNC_NET_RIVERFRONT1}
WNNC_NET_RIVERFRONT2 = $001F0000;
{$EXTERNALSYM WNNC_NET_RIVERFRONT2}
WNNC_NET_DECORB = $00200000;
{$EXTERNALSYM WNNC_NET_DECORB}
WNNC_NET_PROTSTOR = $00210000;
{$EXTERNALSYM WNNC_NET_PROTSTOR}
WNNC_NET_FJ_REDIR = $00220000;
{$EXTERNALSYM WNNC_NET_FJ_REDIR}
WNNC_NET_DISTINCT = $00230000;
{$EXTERNALSYM WNNC_NET_DISTINCT}
WNNC_NET_TWINS = $00240000;
{$EXTERNALSYM WNNC_NET_TWINS}
WNNC_NET_RDR2SAMPLE = $00250000;
{$EXTERNALSYM WNNC_NET_RDR2SAMPLE}
WNNC_NET_CSC = $00260000;
{$EXTERNALSYM WNNC_NET_CSC}
WNNC_NET_3IN1 = $00270000;
{$EXTERNALSYM WNNC_NET_3IN1}
WNNC_NET_EXTENDNET = $00290000;
{$EXTERNALSYM WNNC_NET_EXTENDNET}
WNNC_NET_STAC = $002A0000;
{$EXTERNALSYM WNNC_NET_STAC}
WNNC_NET_FOXBAT = $002B0000;
{$EXTERNALSYM WNNC_NET_FOXBAT}
WNNC_NET_YAHOO = $002C0000;
{$EXTERNALSYM WNNC_NET_YAHOO}
WNNC_NET_EXIFS = $002D0000;
{$EXTERNALSYM WNNC_NET_EXIFS}
WNNC_NET_DAV = $002E0000;
{$EXTERNALSYM WNNC_NET_DAV}
WNNC_NET_KNOWARE = $002F0000;
{$EXTERNALSYM WNNC_NET_KNOWARE}
WNNC_NET_OBJECT_DIRE = $00300000;
{$EXTERNALSYM WNNC_NET_OBJECT_DIRE}
WNNC_NET_MASFAX = $00310000;
{$EXTERNALSYM WNNC_NET_MASFAX}
WNNC_NET_HOB_NFS = $00320000;
{$EXTERNALSYM WNNC_NET_HOB_NFS}
WNNC_NET_SHIVA = $00330000;
{$EXTERNALSYM WNNC_NET_SHIVA}
WNNC_NET_IBMAL = $00340000;
{$EXTERNALSYM WNNC_NET_IBMAL}
WNNC_NET_LOCK = $00350000;
{$EXTERNALSYM WNNC_NET_LOCK}
WNNC_NET_TERMSRV = $00360000;
{$EXTERNALSYM WNNC_NET_TERMSRV}
WNNC_NET_SRT = $00370000;
{$EXTERNALSYM WNNC_NET_SRT}
WNNC_CRED_MANAGER = DWORD($FFFF0000);
{$EXTERNALSYM WNNC_CRED_MANAGER}
//
// Network Resources.
//
RESOURCE_CONNECTED = $00000001;
{$EXTERNALSYM RESOURCE_CONNECTED}
RESOURCE_GLOBALNET = $00000002;
{$EXTERNALSYM RESOURCE_GLOBALNET}
RESOURCE_REMEMBERED = $00000003;
{$EXTERNALSYM RESOURCE_REMEMBERED}
RESOURCE_RECENT = $00000004;
{$EXTERNALSYM RESOURCE_RECENT}
RESOURCE_CONTEXT = $00000005;
{$EXTERNALSYM RESOURCE_CONTEXT}
RESOURCETYPE_ANY = $00000000;
{$EXTERNALSYM RESOURCETYPE_ANY}
RESOURCETYPE_DISK = $00000001;
{$EXTERNALSYM RESOURCETYPE_DISK}
RESOURCETYPE_PRINT = $00000002;
{$EXTERNALSYM RESOURCETYPE_PRINT}
RESOURCETYPE_RESERVED = $00000008;
{$EXTERNALSYM RESOURCETYPE_RESERVED}
RESOURCETYPE_UNKNOWN = DWORD($FFFFFFFF);
{$EXTERNALSYM RESOURCETYPE_UNKNOWN}
RESOURCEUSAGE_CONNECTABLE = $00000001;
{$EXTERNALSYM RESOURCEUSAGE_CONNECTABLE}
RESOURCEUSAGE_CONTAINER = $00000002;
{$EXTERNALSYM RESOURCEUSAGE_CONTAINER}
RESOURCEUSAGE_NOLOCALDEVICE = $00000004;
{$EXTERNALSYM RESOURCEUSAGE_NOLOCALDEVICE}
RESOURCEUSAGE_SIBLING = $00000008;
{$EXTERNALSYM RESOURCEUSAGE_SIBLING}
RESOURCEUSAGE_ATTACHED = $00000010;
{$EXTERNALSYM RESOURCEUSAGE_ATTACHED}
RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE or
RESOURCEUSAGE_CONTAINER or RESOURCEUSAGE_ATTACHED);
{$EXTERNALSYM RESOURCEUSAGE_ALL}
RESOURCEUSAGE_RESERVED = DWORD($80000000);
{$EXTERNALSYM RESOURCEUSAGE_RESERVED}
RESOURCEDISPLAYTYPE_GENERIC = $00000000;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_GENERIC}
RESOURCEDISPLAYTYPE_DOMAIN = $00000001;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_DOMAIN}
RESOURCEDISPLAYTYPE_SERVER = $00000002;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_SERVER}
RESOURCEDISPLAYTYPE_SHARE = $00000003;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_SHARE}
RESOURCEDISPLAYTYPE_FILE = $00000004;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_FILE}
RESOURCEDISPLAYTYPE_GROUP = $00000005;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_GROUP}
RESOURCEDISPLAYTYPE_NETWORK = $00000006;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_NETWORK}
RESOURCEDISPLAYTYPE_ROOT = $00000007;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_ROOT}
RESOURCEDISPLAYTYPE_SHAREADMIN = $00000008;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_SHAREADMIN}
RESOURCEDISPLAYTYPE_DIRECTORY = $00000009;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_DIRECTORY}
RESOURCEDISPLAYTYPE_TREE = $0000000A;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_TREE}
RESOURCEDISPLAYTYPE_NDSCONTAINER = $0000000B;
{$EXTERNALSYM RESOURCEDISPLAYTYPE_NDSCONTAINER}
type
LPNETRESOURCEA = ^NETRESOURCEA;
{$EXTERNALSYM LPNETRESOURCEA}
_NETRESOURCEA = record
dwScope: DWORD;
dwType: DWORD;
dwDisplayType: DWORD;
dwUsage: DWORD;
lpLocalName: LPSTR;
lpRemoteName: LPSTR;
lpComment: LPSTR;
lpProvider: LPSTR;
end;
{$EXTERNALSYM _NETRESOURCEA}
NETRESOURCEA = _NETRESOURCEA;
{$EXTERNALSYM NETRESOURCEA}
TNetResourceA = NETRESOURCEA;
PNetResourceA = LPNETRESOURCEA;
LPNETRESOURCEW = ^NETRESOURCEW;
{$EXTERNALSYM LPNETRESOURCEW}
_NETRESOURCEW = record
dwScope: DWORD;
dwType: DWORD;
dwDisplayType: DWORD;
dwUsage: DWORD;
lpLocalName: LPWSTR;
lpRemoteName: LPWSTR;
lpComment: LPWSTR;
lpProvider: LPWSTR;
end;
{$EXTERNALSYM _NETRESOURCEW}
NETRESOURCEW = _NETRESOURCEW;
{$EXTERNALSYM NETRESOURCEW}
TNetResourceW = NETRESOURCEW;
PNetResourceW = LPNETRESOURCEW;
{$IFDEF UNICODE}
NETRESOURCE = NETRESOURCEW;
{$EXTERNALSYM NETRESOURCE}
LPNETRESOURCE = LPNETRESOURCEW;
{$EXTERNALSYM LPNETRESOURCE}
TNetResource = TNetResourceW;
PNetResource = PNetResourceW;
{$ELSE}
NETRESOURCE = NETRESOURCEA;
{$EXTERNALSYM NETRESOURCE}
LPNETRESOURCE = LPNETRESOURCEA;
{$EXTERNALSYM LPNETRESOURCE}
TNetResource = TNetResourceA;
PNetResource = PNetResourceA;
{$ENDIF}
//
// Network Connections.
//
const
NETPROPERTY_PERSISTENT = 1;
{$EXTERNALSYM NETPROPERTY_PERSISTENT}
CONNECT_UPDATE_PROFILE = $00000001;
{$EXTERNALSYM CONNECT_UPDATE_PROFILE}
CONNECT_UPDATE_RECENT = $00000002;
{$EXTERNALSYM CONNECT_UPDATE_RECENT}
CONNECT_TEMPORARY = $00000004;
{$EXTERNALSYM CONNECT_TEMPORARY}
CONNECT_INTERACTIVE = $00000008;
{$EXTERNALSYM CONNECT_INTERACTIVE}
CONNECT_PROMPT = $00000010;
{$EXTERNALSYM CONNECT_PROMPT}
CONNECT_NEED_DRIVE = $00000020;
{$EXTERNALSYM CONNECT_NEED_DRIVE}
CONNECT_REFCOUNT = $00000040;
{$EXTERNALSYM CONNECT_REFCOUNT}
CONNECT_REDIRECT = $00000080;
{$EXTERNALSYM CONNECT_REDIRECT}
CONNECT_LOCALDRIVE = $00000100;
{$EXTERNALSYM CONNECT_LOCALDRIVE}
CONNECT_CURRENT_MEDIA = $00000200;
{$EXTERNALSYM CONNECT_CURRENT_MEDIA}
CONNECT_DEFERRED = $00000400;
{$EXTERNALSYM CONNECT_DEFERRED}
CONNECT_RESERVED = DWORD($FF000000);
{$EXTERNALSYM CONNECT_RESERVED}
CONNECT_COMMANDLINE = $00000800;
{$EXTERNALSYM CONNECT_COMMANDLINE}
CONNECT_CMD_SAVECRED = $00001000;
{$EXTERNALSYM CONNECT_CMD_SAVECRED}
function WNetAddConnectionA(lpRemoteName, lpPassword, lpLocalName: LPCSTR): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnectionA}
function WNetAddConnectionW(lpRemoteName, lpPassword, lpLocalName: LPCWSTR): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnectionW}
{$IFDEF UNICODE}
function WNetAddConnection(lpRemoteName, lpPassword, lpLocalName: LPCWSTR): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection}
{$ELSE}
function WNetAddConnection(lpRemoteName, lpPassword, lpLocalName: LPCSTR): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection}
{$ENDIF}
function WNetAddConnection2A(const lpNetResource: NETRESOURCEA; lpPassword: LPCSTR;
lpUserName: LPCSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection2A}
function WNetAddConnection2W(const lpNetResource: NETRESOURCEW; lpPassword: LPCWSTR;
lpUserName: LPCWSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection2W}
{$IFDEF UNICODE}
function WNetAddConnection2(const lpNetResource: NETRESOURCEW; lpPassword: LPCWSTR;
lpUserName: LPCWSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection2}
{$ELSE}
function WNetAddConnection2(const lpNetResource: NETRESOURCEA; lpPassword: LPCSTR;
lpUserName: LPCSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection2}
{$ENDIF}
function WNetAddConnection3A(hwndOwner: HWND; const lpNetResource: NETRESOURCEA;
lpPassword: LPCSTR; lpUserName: LPCSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection3A}
function WNetAddConnection3W(hwndOwner: HWND; const lpNetResource: NETRESOURCEW;
lpPassword: LPCWSTR; lpUserName: LPCWSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection3W}
{$IFDEF UNICODE}
function WNetAddConnection3(hwndOwner: HWND; const lpNetResource: LPNETRESOURCEW;
lpPassword: LPCWSTR; lpUserName: LPCWSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection3}
{$ELSE}
function WNetAddConnection3(hwndOwner: HWND; const lpNetResource: NETRESOURCEA;
lpPassword: LPCSTR; lpUserName: LPCSTR; dwFlags: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetAddConnection3}
{$ENDIF}
function WNetCancelConnectionA(lpName: LPCSTR; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnectionA}
function WNetCancelConnectionW(lpName: LPCWSTR; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnectionW}
{$IFDEF UNICODE}
function WNetCancelConnection(lpName: LPCWSTR; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnection}
{$ELSE}
function WNetCancelConnection(lpName: LPCSTR; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnection}
{$ENDIF}
function WNetCancelConnection2A(lpName: LPCSTR; dwFlags: DWORD; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnection2A}
function WNetCancelConnection2W(lpName: LPCWSTR; dwFlags: DWORD; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnection2W}
{$IFDEF UNICODE}
function WNetCancelConnection2(lpName: LPCWSTR; dwFlags: DWORD; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnection2}
{$ELSE}
function WNetCancelConnection2(lpName: LPCSTR; dwFlags: DWORD; fForce: BOOL): DWORD; stdcall;
{$EXTERNALSYM WNetCancelConnection2}
{$ENDIF}
function WNetGetConnectionA(lpLocalName, lpRemoteName: LPSTR; var lpnLength: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetConnectionA}
function WNetGetConnectionW(lpLocalName, lpRemoteName: LPWSTR; var lpnLength: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetConnectionW}
{$IFDEF UNICODE}
function WNetGetConnection(lpLocalName, lpRemoteName: LPWSTR; var lpnLength: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetConnection}
{$ELSE}
function WNetGetConnection(lpLocalName, lpRemoteName: LPSTR; var lpnLength: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetGetConnection}
{$ENDIF}
function WNetUseConnectionA(hwndOwner: HWND; const lpNetResource: NETRESOURCEA;
lpPassword, lpUserID: LPCSTR; dwFlags: DWORD; lpAccessName: LPSTR;
var lpBufferSize, lpResult: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetUseConnectionA}
function WNetUseConnectionW(hwndOwner: HWND; const lpNetResource: NETRESOURCEW;
lpPassword, lpUserID: LPCWSTR; dwFlags: DWORD; lpAccessName: LPWSTR;
var lpBufferSize, lpResult: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetUseConnectionW}
{$IFDEF UNICODE}
function WNetUseConnection(hwndOwner: HWND; const lpNetResource: NETRESOURCEW;
lpPassword, lpUserID: LPCWSTR; dwFlags: DWORD; lpAccessName: LPWSTR;
var lpBufferSize, lpResult: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetUseConnection}
{$ELSE}
function WNetUseConnection(hwndOwner: HWND; const lpNetResource: NETRESOURCEA;
lpPassword, lpUserID: LPCSTR; dwFlags: DWORD; lpAccessName: LPSTR;
var lpBufferSize, lpResult: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetUseConnection}
{$ENDIF}
//
// Network Connection Dialogs.
//
function WNetConnectionDialog(hwnd: HWND; dwType: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetConnectionDialog}
function WNetDisconnectDialog(hwnd: HWND; dwType: DWORD): DWORD; stdcall;
{$EXTERNALSYM WNetDisconnectDialog}
type
LPCONNECTDLGSTRUCTA = ^CONNECTDLGSTRUCTA;
{$EXTERNALSYM LPCONNECTDLGSTRUCTA}
_CONNECTDLGSTRUCTA = record
cbStructure: DWORD; // size of this structure in bytes
hwndOwner: HWND; // owner window for the dialog
lpConnRes: LPNETRESOURCEA; // Requested Resource info
dwFlags: DWORD; // flags (see below)
dwDevNum: DWORD; // number of devices connected to
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -