1.API之网络函数
- WNetAddConnection创建同一个网络资源的永久性连接
声明:Function ulong WNetAddConnection(ref string lpszNetPath,ref string lpszPassword,ref string lpszLocalName) LIBRARY "mpr.dll" ALIAS FOR "WNetAddConnectionA"
参数: lpszNetPath:要连接的网络名
lpszPassword:可选的一个密码。如为vbNullString,表示当前用户的默认密码。如为一个空字符串,用任何密码。
lpszLocalName:资源的本地名称。
返回值:Long,零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR,则可用WNetGetLastError取得额外的错误信息
- WNetAddConnection2创建同一个网络资源的连接
声明:Function ulong WNetAddConnection2(ref NETRESOURCE lpNetResource,ref string lpPassword,ref string lpUserName,ulong dwFlags) LIBRARY "mpr.dll" ALIAS FOR "WNetAddConnection2A"
参数: lpNetResource-NETRESOURCE,在这个结构中设置了下述字段,对要连接的网络资源进行了定义:dwType
lpLocalName(可为vbNullString),lpRemoteName,lpProvider(设为vbNullString表示用默认提供者)。该结构的其他所有变量都会被忽略
lpPassword ----- String,可选的一个密码。如为vbNullString,表示采用当前用户的默认密码。如为一个空字串,则不用任何密码
lpUserName ----- String,用于连接的用户名。如为vbNullString,表示使用当前用户
dwFlags -------- Long,设为零;或指定常数CONNECT_UPDATE_PROFILE,表示创建永久性连接
2.API之消息函数
- BroadcastSystemMessage将一条系统消息广播给系统中所有的顶级窗口
声明:long BroadcastSystemMessage(DWORD dwFIags,LPDWORD IpdwRecipients,UINT UiMessage,WPARAMwParam,LPARAM IParam);
参数: dwFlags:选项标志。可取下列值的组合:
lpdwRecipients:指向变量的指针,该变量含有和接收消息接受者的信息。此变量可为下列值的组合:
uiMessage:系统消息标识符。
WParam:32位消息特定值。
IParam:32位消息特定值。
返回值:如果函数调用成功,返回值是正数。如果函数不能广播消息,返回值是C1。如果参数dwFlags为BSF_QUERY且至少一个接受者返回BROADCAST_QUERY_DENY给相应的消息,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:如果BSF_QUERY没指定,函数发送指定的消息给所有请求的接受者,并忽略这些接受者返回的值。
2)GetMessagePos取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
声明; DWORD GetMessagePos(VOID), 该函数返回表示屏幕坐标下光标位置的长整数值。此位置表示当上一消息由GetMessage取得时鼠标占用的点。
返回值:返回值给出光标位置的X,y坐标。X坐标在低位整数,y坐标在高位整数。
备注:如前所述,X坐标在返回值的低位整数,y坐标在高位整数(都表示有符号值,因为在多显示器的系统里可取得负值)。如果返回值赋给了一个变量,可用MAKEPOINT宏从返回值取得POINT结构。也可用GET_X_LPARAM或GET_Y_LPARAM宏来抽取X,y坐标,取得的坐标为屏幕坐标,并不是客户区坐标。
3.API之文件处理函数
1) CloseHandle关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等
声明:CloseHandel(ThreadHandle );
只是关闭了一个线程句柄对象,表示我不再使用该句柄,即不对这个句柄对应的线程做任何干预了。并没有结束线程。
调用closehandle(HANDLE)表示创建者放弃对该内核对象的操作。如果该对象的引用对象记数为0就撤消该对象。
CloseHandle的功能是关闭一个打开的对象句柄,该对象句柄可以是线程句柄,也可以是进程、信号量等其他内核对象的句柄,而ExitThread的功能是终止一个线程,它所接受的参数是一个线程的退出码。
通过调用CloseHandle可以告知系统,已经完成了对某一内核对象的操作,该函数首先检查调用进程的句柄表,来确认进程是否对该句柄所指向的对象有访问权,如果句柄无效则返回FALSE,如果有效,系统将得到该内核对象的数据结构的地址,把结构中的使用计数成员减1,如果计数变为0,则将从内核中释放该内核对象。
2)CompareFileTime对比两个文件的时间
声明:LONG CompareFileTime(const FILETIME *lpFileTime1,const FILETIME *lpFileTime2);
参数: lpFileTime1:指向FILETIME结构的指针,指定第一个文件时间。
lpFileTime2:指向FILETIME结构的指针,指定第二个文件时间。
返回值是以下值之一。
返回值 | 描述 |
-1 | 第一个文件时间早于第二个文件时间。 |
0 | 第一个文件时间等于第二个文件时间。 |
1 | 第一个文件时间晚于第二个文件时间。 |
4.API之打印函数
1) AbortPrinter删除与一台打印机关联在一起的缓冲文件
声明:BOOL AbortPrinter(_In_ HANDLE hPrinter);
参数:hPrinter[in]处理删除假脱机文件的打印机。使用OpenPrinter或AddPrinter函数检索打印机句柄。
返回值:若函数成功返回非零值,若函数失败返回零。
备注:这是阻塞或同步功能,可能不会立即返回。此函数返回的速度取决于运行时因素,例如网络状态,打印服务器配置以及编写应用程序时难以预测的打印机驱动程序实现因素。从管理与用户界面的交互的线程调用此函数可能会使应用程序看起来没有响应。
如果打印机未配置为假脱机,则AbortPrinter功能无效。
2) AddJob用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
声明:BOOL AddJob(_In_ HANDLE hPrinter, _In_ DWORD Level, _Out_ LPBYTE pData,
_In_ DWORD cbBuf, _Out_ LPDWORD pcbNeeded);
参数:hPrinter [in]一个句柄,指定打印作业的打印机。这必须是配置为假脱机打印机的本地打印机。如果hPrinter是远程打印机连接的句柄,或者如果打印机配置为直接打印,则AddJob函数将失败。使用OpenPrinter或AddPrinter函数检索打印机句柄。
level[in]函数存储到pData指向的缓冲区中的打印作业信息数据结构的版本。将此参数设置为1。
pData [out]指向接收ADDJOB_INFO_1数据结构和路径字符串的缓冲区的指针。
cbBuf [in] pData指向的缓冲区的大小(以字节为单位)。缓冲区需要足够大,以包含ADDJOB_INFO_1结构和路径字符串。
pcbNeeded [out]指向变量的指针,该变量接收ADDJOB_INFO_1数据结构的总大小(以字节为单位)加上路径字符串。如果此值小于或等于cbBuf且函数成功,则这是写入pData指向的缓冲区的实际字节数。如果此数字大于cbBuf,则缓冲区太小,您必须再次调用该函数,缓冲区大小至少与* pcbNeeded一样大。
返回值:如果函数成功,则返回值为非零值。如果函数失败,则返回值为零。
注意:这是阻塞或同步功能,可能不会立即返回。此函数返回的速度取决于运行时因素,例如网络状态,打印服务器配置以及编写应用程序时难以预测的打印机驱动程序实现因素。从管理与用户界面的交互的线程调用此函数可能会使应用程序看起来没有响应。
5.API之文本和字体函数
1)AddFontResource在Windows系统中添加一种字体资源
声明:int AddFontResourceA(LPCSTR Arg1);
参数:Arg1: 指向以null结尾的字符串的指针,该字符串包含有效的字体文件名。此参数可以指定以下任何文件。
文件扩展名 | 含义 |
.FON | 字体资源文件。 |
.FNT | 原始位图字体文件。 |
.TTF | 原始TrueType文件。 |
.ttc | 东亚Windows:TrueType字体集合。 |
.FOT | TrueType资源文件。 |
杂项文件 | PostScript OpenType字体。 |
.mmm | 多个主Type1字体资源文件。它必须与.pfm和.pfb文件一起使用。 |
.PFB | 键入1字体位文件。它与.pfm文件一起使用。 |
.PFM | 键入1字体度量文件。它与.pfb文件一起使用。 |
要添加其信息来自多个资源文件的字体,请将lpszFileName指向一个文件名以“|”分隔的字符串 - 例如,abcxxxxx.pfm | abcxxxxx.pfb。
返回值:如果函数成功,则返回值指定添加的字体数。如果函数失败,则返回值为零。没有可用的扩展错误信息。
该AddFontResource函数添加到指定的文件到系统字体表的字体资源。随后该字体可用于任何应用程序的文本输出。
2)EnumFontFamilies:列举指定设备可用的字体
声明:int EnumFontFamiliesA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam);
参数: hdc:设置上下文的句柄,用于枚举字体。
lpLogfont:指向以null结尾的字符串的指针,该字符串指定所需字体的系列名称。如果lpszFamily为NULL,则EnumFontFamilies选择并枚举每个可用类型系列的一种字体。
lpProc:指向程序定义的回调函数指针
lParam:指向应用程序提供的数据的指针。数据与字体信息一起传递给回调函数。
返回值:返回值是回调函数返回的最后一个值。它的含义是特定于实现的。
6.API之菜单函数
1)AppendMenu在指定的菜单里添加一个菜单项
声明:BOOL AppendMenu(UINT nFlags, UINT_PTR nIDNewItem,const CBitmap* pBmp );
BOOL AppendMenu(UINT nFlags,UINT_PTR nIDNewItem = 0,LPCTSTR lpszNewItem = NULL );
参数:nFlags:在加入至功能表时,会指定与新功能表项目状态资讯。它包含在"备注"一节中的一或多个值。
nIDNewItem:指定新的功能表项目的命令ID,或者,如果nFlags设为MF_POPUP,功能表控制代码() HMENU快显功能表。 nIDNewItem参数已忽略(不需要),如果nFlags设为MF_SEPARATOR。
lpszNewItem:指定新的功能表项目的内容。
pBmp:要用來做為功能表項目的 CBitmap 點的物件。
返回值:如果不为0,则添加成功
2)GetMenu取得窗口中一个菜单的句柄
声明:HMENU GetMenu(HWND hWnd);
参数:hWnd:类型HWND:要检索其菜单句柄的窗口句柄
返回值:HMENU:返回值是菜单的句柄。如果指定的窗口没有菜单,则返回值为NULL。如果窗口是子窗口,则返回值未定义。
7.API之位图,光标和光栅运算函数
1)BitBlt将一幅位图从一个设备场景复制到另一个
声明:BOOL BitBlt( HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,);
参数: HDC hdcDest: handle to destination DC
int nXDest:目标矩形区域的左上角x轴坐标点。
int nYDest:目标矩形区域的左上角y轴坐标点。
int nWidth:在目标设备中绘制位图的宽度。
int nHeight:在目标设备中绘制位图的高度。
HDC hdcSrc:源设备上下文对象指针。
int nXSrc;源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。
int nYSrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。
DWORD dwRop:光栅操作代码
返回值:函数成功,返回非零值,否则为0。
2)CopyIcon制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
声明:HICON CopyIcon(HICON hIcon);
参数:hIon:类型:HICON:要复制的图标的句柄
返回值:类型:HICON 如果函数成功,则返回值是复制图标的句柄。如果函数失败,则返回值为NULL。
8.API之绘图函数
1)AbortPath抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
声明:BOOL AbortPath( );
返回值:如果功能成功,则返回非零值;否则为零。
2)AngleArc用一个连接弧画一条线
声明:BOOL AngleArc(int x,int y,int nRadius,float fStartAngle,float fSweepAngle );
参数: x:指定该圆形中心的逻辑X坐标
y:指定该圆形中心的逻辑Y坐标
nRadius:在逻辑单位指定该圆形的半径。该值必须是正数。
fStartAngle:在一定程度上指定一个起始角相对于个X轴。
fSweepAngle:在一定程度上指定扫描角相对于个起始角。
返回值:非零,如果成功;否则为0。
9.API之设备场景函数
1) CombineRgn将两个区域组合为一个新区域
声明:int CombineRgn(HRGN hrgnDst,HRGN hrgnSrc1,HRGN hrgnSrc2,int iMode);
参数: hrgnDst:通过组合其他两个区域定义维度的新区域的句柄。(在调用CombineRgn之前,该区域必须存在。)
hrgnSrc1:要组合的两个区域中的第一个的句柄。
hrgnSrc2:要组合的两个区域中的第二个的句柄。
iMode:指示如何组合两个区域的模式。此参数可以是以下值之一。
值 | 含义 |
RGN_AND | 创建两个组合区域的交集。 |
RGN_COPY | 创建hrgnSrc1标识的区域的副本。 |
RGN_DIFF | 合并hrgnSrc1中不属于hrgnSrc2的部分。 |
RGN_OR | 创建两个组合区域的并集。 |
RGN_XOR | 除了任何重叠区域外,创建两个组合区域的并集。 |
返回值:指定结果区域的类型。它可以是以下值之一。
返回代码 | 描述 |
NULLREGION | 该地区是空的。 |
SIMPLEREGION | 该区域是一个矩形。 |
COMPLEXREGION | 该区域不止一个矩形。 |
错误 | 没有区域被创建。 |
2)CombineTransform驱动世界转换。它相当于依顺序进行两次转换
声明:BOOL CombineTransform(LPXFORM lpxformResult,CONST XFORM *lpxform1, CONST XFORM *lpxform2);
参数:lpxformResult:指向接收结合转换的XFORM结构的指针。
lpxformal:指向标识第一次转换的XFORM结构的指针。
Lpxform2:指向标识第二次转换的XFORM结构的指针。
返回值:如果调用函数成功,返回值为非零值,否则为零。
10.API之硬件与系统函数
1)ActivateKeyboardLayout激活一个新的键盘布局,键盘布局定义了按键在一种物理性键盘上的位置与含义
声明: HKL ActivateKeyboardLayout(HKL hkl,UINT Flags);
参数:hkl:HKL:输入要激活的区域设置标识符。
输入区域设置标识符必须已由先前对LoadKeyboardLayout函数的调用加载。此参数必须是键盘布局的句柄或以下值之一。
值 | 含义 |
HKL_NEXT 1 | 在系统维护的已加载区域设置标识符的循环列表中选择下一个区域设置标识符。 |
HKL_PREV 0 | 在系统维护的已加载区域设置标识符的循环列表中选择以前的区域设置标识符。 |
Flags:UINT:指定如何激活输入区域设置标识符。
返回值:类型HKL。如果函数成功,则返回值是先前的输入语言环境标识符。否则,它为零。
2)Beep用于生成简单的声音
声明:BOOL Beep(DWORD dwFreq; DWORD dwDuration);
参数: dwFreq 指定要发出的频率(HZ)
dwDuration 指定发音的时长,以毫秒为单位。
11.API之进程和线程函数
1)ConnectNamedPipe指示一台服务器等待下去,直至客户机同一个命名管道连接
声明:BOOL WINAPI ConnectNamedPipe(_In_ HANDLE hNamedPipe,_Inout_opt_ LPOVERLAPPED lpOverlapped);
参数:hNamedPipe Long,管道的句柄lpOverlapped OVERLAPPED,如设为NULL(传递ByVal As Long),表示将线程挂起,直到一个客户同管道连接为止。否则就立即返回;此时,如管道尚未连接,客户同管道连接时就会触发lpOverlapped结构中的事件对象。随后,可用一个等待函数来监视连接
2)CreateEvent创建一个事件对象
声明:HANDLE CreateEventA(LPSECURITY_ATTRIBUTES pEventAttributes,BOOL bManualReset,
BOOL bInitialState,LPCSTR lpName);
参数:lpEventAttributes:指向SECURITY_ATTRIBUTES结构的指针。如果此参数为NULL,则子进程无法继承句柄。
bManualReset
如果此参数为TRUE,则该函数将创建手动重置事件对象,该对象需要使用 ResetEvent函数将事件状态设置为无信号。如果此参数为FALSE,则该函数将创建自动重置事件对象,并且系统会在释放单个等待线程后自动将事件状态重置为无信号。
bInitialState:如果此参数为TRUE,则发信号通知事件对象的初始状态; 否则,它是无信号的。
lpName:事件对象的名称。名称仅限于 MAX_PATH个字符。名称比较区分大小写。
返回值:如果函数成功,则返回值是事件对象的句柄。如果在函数调用之前存在指定的事件对象,则该函数返回现有对象的句柄, GetLastError返回 ERROR_ALREADY_EXISTS。
如果函数失败,则返回值为NULL。
12.API之控件与消息函数
1)AdjustWindowRect给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
声明:BOOL AdjustWindowRect(LPRECT lpRect,DWORD dwStyle,BOOL bMenu);
参数:lpRect
类型:LPRECT:指向RECT结构的指针,该结构包含所需客户区的左上角和右下角的坐标。当函数返回时,结构包含窗口左上角和右下角的坐标,以适应所需的客户区。
dwStyle:键入:DWORD:要计算所需大小的窗口的窗口样式。请注意,您无法指定WS_OVERLAPPED样式。
bMenu:类型:BOOL:指示窗口是否具有菜单。
返回值:类型:BOOL:如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
2)AnyPopup判断屏幕上是否存在任何弹出式窗口
声明:BOOL AnyPopup( );
无参数
返回值:如果存在弹出窗口,则返回值非零,即使弹出窗口完全被其他窗口覆盖。如果弹出窗口不存在,则返回值为零。