Chinaunix首页 | 论坛 | 博客
  • 博客访问: 590131
  • 博文数量: 98
  • 博客积分: 4045
  • 博客等级: 上校
  • 技术积分: 1157
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-31 16:56
文章分类

全部博文(98)

文章存档

2010年(7)

2009年(15)

2007年(73)

2006年(3)

我的朋友

分类: C/C++

2007-10-18 11:17:54

如果你不想自己的程序被从Ctrl+Alt+Del弹出的窗口中强行关闭, 
介绍一个Windows未公布的API函数给你: 

RegisterServiceProcess(ProcessID:Long,Type:Long) 

该函数存在于Kernal32.dll中. 

Process指向进程的ID,Type表示是否向系统注册该进程,是1,否0.

GetClientRect

函数功能:该函数获取窗口客户区的坐标。客户区坐标指定客户区的左上角和右下角。由于客户区坐标是相对子窗口客户区的左上角而言的,因此左上角坐标为(0,0)
函数原型:BOOL GetClientRect(HWND hWnd,LPRECT lpRect);
参数:
GetLastError 函数。
备注:Windows CE:命令条包含在客户区中。
速查:Windows NT: 3.1以上版本:Windows:95以上版本: Windows CE:1.0以上版本:头文件:winuser.h;库文件:user32.lib

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetDesktopWindow

函数功能:该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。桌面窗口是一个要在其上绘制所有的图标和其他窗口的区域。
函数原型:HWND GetDesktopWindow(VOID)
参数:无。
返回值:函数返回桌面窗口的句柄。
速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:不支持;头文件:Winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetForegroundwindow

函数功能:该函数返回前台窗口(用户当前工作的窗口)。系统分配给产生前台窗口的线程一个稍高一点的优先级。
函数原型:HWND GetForegroundwindow(VOID)
参数:无。
返回值:函数返回前台窗回的句柄。
速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:1.0以上版本:头文件:Winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetLastActivePopup 

函数功能:该函数确定指定窗口中的哪一个弹出式窗口是最近活动的窗口。
函数原型:HWND GetLastActivePopup(HWND hWnd);
参数:
hWnd:所有者窗口句柄。
返回值:返回值标识了最近活动的弹出式窗口的句柄。如果满足下列任一条件,则返回值与参数hWnd
相同:由hWnd指定的窗口是最近活动的:由hWnd指定的窗口不拥有任何弹出式窗口;由hWnd指定的窗口不是顶层窗口或它属于其他窗口。
速查:Windows:3.1以上版本;Windows:95以上版本:Windows CE:不支持;头文件:winuser.h;
库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetNextWindow

函数功能:该函数返回z序中的前一个或后一个窗口的句柄。下一窗口在指定窗口的下面,前一窗口则在上面。如果指定的窗口是顶端窗口,该函数返回下一个(或前一个)顶端窗口的句柄。如果指定的窗口是顶层窗口,函数返回下一个(或前一个)顶层窗口的句柄。如果函数是子窗口,则函数搜索下一个或前一个子窗口的句柄。
函数原型:HWND GetNextWindow(HWND hWnd,UNIT wCmd);
参数:
hWnd:一个窗口的句柄。窗口句柄在wCmd参数的基础上获得的相对于这个窗口的句柄。
wCmd:指明窗口返回的是前一窗口的句柄还是后一窗口的句柄。该参数可以是下列两个值之一:
GW HWNONEXT:返回在给定窗口的下面窗口的句柄。
GW_HWNDPREV:返回在给定窗口的上面窗口的句柄。
返回值:如果函数成功,返回值是前一窗口(或后一窗口)的句柄。如果前后窗口不存在,则返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。
备注:在设定了GW_HWNDNEXT或GW_GETPREV标志时,调用该函数与调用GetWindow函数相同。
速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:不支持:头文件:Winuer.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetParent

函数功能:该函数获得一个指定子窗口的父窗口句柄。
函数原型:HWND GetParent(HWND hWnd);
参数:
hWnd:子窗口句柄,函数要获得该子窗口的父窗口句柄。
返回值:如果函数成功,返回值为父窗口句柄。如果窗口无父窗口,则函数返回NULL。若想获得更多错误信息,请调用GetLastError函数。
备注:WindowsCE:Windows CE1.0版本不支持除了对话框之外的所属子窗口。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本:头文件:Winuser.h:库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetTopWindow

函数功能:该函数检查与特定父窗口相联的子窗口z序,并返回在z序顶部的子窗口的句柄。
函数原型:HWND GetTopWindow(HWND hWnd);
参数:
hWnd:被查序的父窗口的句柄。如果该参数为NULL,函数返回Z序顶部的窗口句柄。
返回值;如果函数成功,返回值为在Z序顶部的子窗口句柄。如果指定的窗口无子窗口,返回值为NULL。
若想获得更多错误信息,请调用GetLastError函数。
速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:不支持;头文件:Winuser.h:库文件;user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetWindow

函数功能:该函数返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄。
函数原型:HWND GetWindow(HWND hWnd,UNIT nCmd);
参数:
hWnd:窗口句柄。要获得的窗口句柄是依据nCmd参数值相对于这个窗口的句柄。
nCmd:说明指定窗口与要获得句柄的窗口之间的关系。该参数值可以是下列之一:
GW_CHILD:如果指定窗口是父窗口,则获得的是在Z序顶端的子窗口的句柄,否则为NULL。函数仅检查指定父窗口的子窗口,不检查继承窗口。
GW_ENABLEDPOUP:(WindowsNT 5.0)返回的句柄标识了属于指定窗口的处于使能状态弹出式窗口(检索使用第一个由GW_HWNDNEXT 查找到的满足前述条件的窗口);如果无使能窗口,则获得的句柄与指定窗口相同。
GW_HWNDFIRST:返回的句柄标识了在Z序最高端的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在Z序最高端的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在z序最高端的顶层窗口:如果指定窗口是子窗口,则句柄标识了在Z序最高端的同属窗口。
GW_HWNDLAST:返回的句柄标识了在z序最低端的相同类型的窗口。如果指定窗口是最高端窗口,则该柄标识了在z序最低端的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在z序最低端的顶层窗口;如果指定窗口是子窗口,则句柄标识了在Z序最低端的同属窗口。
GW_HWNDNEXT:返回的句柄标识了在Z序中指定窗口下的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口下的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在指定窗口下的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口下的同属窗口。
GW HWNDPREV:返回的句柄标识了在Z序中指定窗口上的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口上的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在指定窗口上的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口上的同属窗口。
GW_OWNER:返回的句柄标识了指定窗口的所有者窗口(如果存在)。
返回值:如果函数成功,返回值为窗口句柄;如果与指定窗口有特定关系的窗口不存在,则返回值为NULL。
若想获得更多错误信息,请调用GetLastError函数。
备注:在循环体中调用函数EnumChildWindow比调用GetWindow函数可靠。调用GetWindow函数实现该任务的应用程序可能会陷入死循环或退回一个已被销毁的窗口句柄。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetWindowPlacement

函数功能:该函数返回指定窗口的显示状态以及被恢复的、最大化的和最小化的窗口位置。
函数原型:BOOL GetWindowPlacement(HWND hWnd,WINDOWPLACEMENT★lpwndpl);
参数:
hWnd: 窗日句柄。
lpwndpl:指向WINDOWPLACEMENT结构的指针,该结构存贮显示状态和位置信息。
在调用GetWindowPlacement函数之前,将WINDOWPLACEMENT结构的长度设为
sizeof(WIDNOWPLACEMENT)。如果lpwndpl->length设置不正确则函数GetWindowPlacement将失败。
返回值;如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetlastError函数。
备注:由该函数获得的WINDOWPLACEMENT结构的flag单元总为0。如果hWnd的窗口被最大化,则showCmd元为 SHOWMZAXMIZED,如果窗口被最小化,则showCmd元为SHOWMINIMIZED,除此之外为SHOWNORMN, WINDOWPLACEMENT长度单元必须置为sizeOf( WINDOWPLACEMENT),如果参数设置不正确,函数返回FALSE。查看设置窗口位置坐标的正确信息,参看WINDOWPLACEMENT。
速查:Windows Nt:3.1以上版本:Windows:95以上版本;Windows CE:不支持;头文件:Winuser.h;库文件:User32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetWindowRect

函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
函数原型:BOOL GetWindowRect(HWND hWnd,LPRECTlpRect);
参数:
hWnd:窗口句柄。
lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。
返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本;头文件:Winuser.h;库文件:User32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetWindowText

函数功能:该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控制,则拷贝控制的文本。但是,GetWindowTeXt不能接收在其他应用程序中的控制文本。
函数原型:Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);
参数:
hWnd:带文本的窗口或控制的句柄。
IpString:指向接收文本的缓冲区的指针。
nMaxCount:指定要保存在缓冲区内的字符的最大个数,其中包含NULL字符。如果文本超过界限,它就被截断。
返回值:如果函数成功,返回值是拷贝的字符串的字符个数,不包括中断的空字符;如果窗口无标题栏或文本,或标题栏为空,或窗口或控制的句柄无效,则返回值为零。若想获得更多错误信息,请调用GetLastError函数。
函数不能返回在其他应用程序中的编辑控制的文本。
备注:如果目标窗口属于当前进程,GetWindowText函数给指定的窗口或控制发送WM_GETTEXT消息。如果目标窗口属于其他进程,并且有一个窗口标题,则GetWindowTeXt返回窗口的标题文本,如果窗口无标题,则函数返回空字符串。
速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:1.0以上版本;头文件:Winuser.h;库文件:user32.lib:Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

IsChild

函数功能:该函数测试一个窗口是否是指定父窗口的子窗口或后代窗口。如果该父窗口是在父窗口的链表上则子窗口是指定父窗口的直接后代。父窗口链表从原始层叠窗口或弹出窗口一直连到该子窗口。
函数原型:BOOL IsChild(HWND hWndParant,HWND hWnd);
参数:
hWndparant:父窗口句柄。
hWnd:将被测试的窗口句柄。
返回值:如果窗口是指定窗口的子窗口或后代窗口,则退回值为非零。如果窗口不是指定窗口的子窗口或后代窗口,则退回值为零。
速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.Iib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetWindowTextLent

函数功能:该函数返回指定窗口的标题文本(如果存在)的字符长度。如果指定窗口是一个控制,函数将返回控制内文本的长度。但是GetWindowTextLength函数不能返回在其他应用程序中的控制的文本长度。
函数原型:nit GetWindowTextLent(HWND hWnd);
参数:
hWnd:窗口或控制的句柄。
返回值:如果函数成功,返回值为文本的字符长度。在一定的条件下,返回值可能比实际的文本长度大。请参看说明。如果窗口无文本,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:如果目标窗口属于当前进程,GetWindowTextLength函数给指定的窗口或控制发送WM_GETTEXT消息。
在一定的条件下,函数GetWindowTextLength的返回值可能比实际的文本长度大。这是由于ANSI和Unlcode的混和使用以及系统允许 DBCS字符在文本内存在的原因,但是函数返回值要至少与文本的实际长度相等,因此可以利用这一点指导缓存区的分配。在应用程序既使用ANSI函数又使用 Unicode的普通对话框时就会有缓存分配的问题;同样,当应用程序在一个Unicode的窗口过程中使用了ANSI的 GetWindowTextLength函数,或在一个ANSI的窗口过程中使用了Unicode的GetWindowTextLength函数的时候也有缓存分配的问题。查看ANSI和Vnicode函数,参考Wind32函数prototypes。
要获得文本的实际长度,使用WM_GETTEXT, LB_GETTEXT或CB_GETLBTBTEXT消息或GetWindowText函数。
速查:Windows NT:3.1以上版本:Windows:95以上版本:Windows CE:1.0以上版本;头文件:Winuser.h;库文件:user32.lib;Unicode:在Windows NT上实现为山Unicode和ANSI两种版本。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

GetWindowThreadProcessld

函数功能:该函数返回创建指定窗口线程的标识和创建窗口的进程的标识符,后一项是可选的。
函数原型;DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpdwProcessld);
参数:
hWnd:窗口句柄。
lpdwProcessld:接收进程标识的32位值的地址。如果这个参数不为NULL,GetWindwThreadProcessld将进程标识拷贝到这个32位值中,否则不拷贝。
返回值:返回值为创建窗口的线程标识。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件;user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

IsIconic

函数功能:该函数确定给定窗口是否是最小化(图标化)的窗口。
函数原型:BOOL IsIconic(HWND hWnd);
参数:
hWnd:被测试窗口的句柄。
返回值:如果窗口已图标化,返回值为非零;如果窗口未图标化,返回值为零。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:不支持;头文件:winuser.h;
库文件:user32.Iib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

isWindow

函数功能:该函数确定给定的窗口句柄是否识别一个已存在的窗口。
因数原型:BOOL isWindow(HWND hWnd);
参数:
hWnd:被测试窗口的句柄。
返回值:如果窗口句柄标识了一个已存在的窗口,返回值为非零;如果窗口句柄未标识一个已存在窗口,返回值为零。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuserhs;库文件:User32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

lswindowUnicode

函数功能:该函数确定指定的窗口是否是一个本地Unicode窗口。
函数原型: BOOL lswindowUnicode(HWND hwndJ;
参数:
hWnd:被测试窗口的句柄。
返回值:如果窗口是一个本地Unicode窗口,返回值为非零;如果窗口不是一个本地Unicode窗口,返回值为零,同时说明窗口是一个ANSI窗口。
备注;一个窗口的字符集是由函数RegosterClass决定的。如果窗口类是以ANSI版的RegisterClass  ( RegjsterClassA)注册的,则窗口字符集是ANSI的;如果窗口类是以Unicode版的Registerclass ( RegisterClassW)注册的,则窗口字符集是Unicode。
系统为窗口消息自动作Unicode和ANSI的双向翻译。例如,如果一个使用Unicode字符集的窗口测到一个ANSI窗口消息,则系统在调用窗口过程之前先将该消息转换为Unicode消息。系统调用lsWindowUnicode函数决定是否翻译消息。
速查:Windows NT:3.1以上版本;Windows: 95以上版本;Windows CE:不支持;头文件:Winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

IsWindowVisible

函数功能:该函数获得给定窗口的可视状态。;
函数原型:BOOL IsWindowVisible(HWND hWnd);
参数;
hWnd:被测试窗口的句柄。
返回值:如果指定的窗口及其父窗口具有WS_VISIBLE风格,返回值为非零;如果指定的窗口及其父窗口不具有WS_VISIBLE风格,返回值为零。由于返回值表明了窗口是否具有Ws_VISIBLE风格,因此,即使该窗口被其他窗口遮盖,函数返回值也为非零。
备注:窗口的可视状态由WS_VISIBLE位指示。当设置了WS_VISIBLE位,窗口就可显示,而且只要窗口具有WS_VISIBLE风格,任何画在窗口的信息都将被显示。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

IsZoomed

函数功能:该函数确定窗口是否是最大化的窗口。
函数原型:BOOL IsZoomed(HWND hWnd);
参数:
hWnd:被测试窗口的句柄。
返回值:如果窗口己最大化,则返回值为非零;如果窗口未最大化,则返回值为零。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:不支持;头文件:Winuer.h;库文件:User32.Iib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

MoveWindow

函数功能:该函数改变指定窗口的位置和尺寸。对于顶层窗口,位置和尺寸是相对于屏幕的左上角的:对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。
函数原型:BOOL MoveWindow(HWND hWnd.int x.int y,int nWidth,int nHeight,BOOL BRePaint);
参数:
hWnd:窗口句柄。
x:指定窗口的新位置的左边界。
Y:指定窗口的新位置的顶部边界。
nWidth:指定窗口的新的宽度。
nHaight:指定窗口的新的高度。
bRepaint: 确定窗口是否被刷新。如果该参数为TRUE,窗口接收一个WM_PAINT消息;如果参数为FALSE,不发生任何刷新动作。它适用于客户区,非客户区(包括标题栏和滚动条),及由于移动子窗口而露出的父窗口的区域。如果参数为FALSE,应用程序就必须明确地使窗口无效或重画该窗口和需要刷新的父窗口。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:如果bRepaint为TRUE,系统在窗口移动后立即给窗口过程发送WM_PAINT消息(即由MoveWindow函数调用 UPdateWindow函数)。如果bRepaint 为FALSE,系统将WM_PAINT消息放在该窗口的消息队列中。消息循环只有在派遣完消息队列中的其他消息时才派遣WM_PAINT消息。
MoveWindow给窗口发送WM_WfNOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE消息,
速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本:头文件:winuser.h;库文件:user32.lib。

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Openlcon

函数功能:该函数将一个最小化窗口恢复到原来的位置和尺寸并且激活该窗口。
函数原型:BOOL Openlcon(HWNDhWnd);
参数:
hWnd:被恢复与激活的窗口的句柄。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:Openlcon向给出的窗口发送WM_QUERYOPEN消息。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:不支持:头文件:winuser.h;库文件:user32.lib。

阅读(1334) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~