vb常用函数 下载本文

请用ChildWindowFromPoint函数。

=========== 获取屏幕上某个窗口内某点的颜色值: GetPixel函数 该函数在指定设备场景中取得1个象素的颜色RGB值。 声明:

Public Declare Function GetPixel Lib \hdc As Long, ByVal x As Long, ByVal y As Long) As Long 参数:

hDC--指定一个设备场景(即显示设备描述表)的句柄。

x,y--某点在该设备场景中的(x,y)坐标。以该设备场景的坐标系统来度量。 调用如: ??

hDC=GetDC(hwnd)

lxn=GetPixel(hDC,50,50) Picture1.BackColor=lxn

注:指定的点不能位于设备场景的区域外。如上例(50,50)在hDC所属窗口区域内 ====

EnableWindow函数:让窗口拒绝接受鼠标和键盘事件

使用此函数,可以让1个窗口不响应任何鼠标键盘操作。如果是VB内部的窗体或控件,则相当于它的Enabled属性。 声明:

Private Declare Function EnableWindow Lib \As Long) As Long

调用如: Call EnableWindow(Form1.hwnd, 0)为拒绝接受鼠标和键盘事件, 调用如: Call EnableWindow(Form1.hwnd, 1)为允许接受键盘和鼠标事件。

参数:hwnd不用说,就是一个窗口句柄,fEnable参数:窗口是否响应操作。为零禁止操作窗口,非零允许操作窗口。 =====

ShowWindow函数:显示或隐藏指定句柄的窗口

将1个隐藏的窗口显示出来,有意思,相当于VB自身内部控件的visible属性。而且超越于此,它还能指定显示时是否最大化,最小化等,声明如下:

Public Declare Function ShowWindow Lib \As Long) As Long 调用如:

Const SW_HIDE = 0 参数nCmdShow之一,隐藏窗口 Const SW_SHOW = 5 显示窗口

i = ShowWindow(form1.hwnd, SW_HIDE) 参数:

hwnd: Long,窗口句柄,要向这个窗口应用由nCmdShow指定的命令

nCmdShow: Long,为窗口指定显示或隐藏的一个命令。请用下述任何一个常数 SW_HIDE 隐藏窗口,活动状态给令一个窗口 SW_MINIMIZE 最小化窗口,活动状态给令一个窗口

SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态 SW_SHOW=5 用当前的大小和位置显示一个窗口,同时令其进入活动状态 SW_SHOWMAXIMIZED=3 最大化窗口,并将其激活

SW_SHOWMINIMIZED=2 最小化窗口,并将其激活 SW_SHOWDEFAULT=10 按窗口本来的方式显示,并激活。 SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口 SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口

SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 SW_SHOWNORMAL 与SW_RESTORE相同

注:各常数的值请查阅API浏览器中的constants(常数列表)。 ======

关闭指定句柄的窗口:SendMessageA的WM_CLOSE消息

SendMessageA的声明在前面有,消息WM_CLOSE的值为&H10,后两个参数为空,用0&。函数返回值若为0表示程序处理了此消息。调用如下:

Private Declare Function SendMessage Lib \Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const WM_CLOSE = &H10 Private Sub Command1_Click()

SendMessage Form1.hwnd, WM_CLOSE, 0&, 0& End Sub

还有一个强制从内存中清除窗口的函数:DestroyWindow函数

其功能是直接清除掉内存中的1个窗口,返回非0表示成功,返回0表示失败。声明: Public Declare Function DestroyWindow Lib \) 很简单,参数只是指定1个窗口句柄。调用如:DestroyWindow Form1.hwnd。 =====

寻找窗口列表中第一个符合条件的父窗口: FindWindowA函数

Declare Function FindWindow Lib \String, ByVal lpWindowName As String) As Long

函数返回找到的窗口的句柄。比如要查找标题为\未命名-记事本\的窗口句柄:

hWndTmp = FindWindowA(vbNullString,\未命名-记事本\二个参数均为字符串,如果某个为空,则用vbNullString或0&补上。 参数:

lpClassName:某窗口类名,或设为零或vbNullString,表示接收任何类

lpWindowName:某窗口标题,或设为零或vbNullString,表示接收任何窗口标题 。 该函数常用来查找ThunderRTMain窗口类的隐藏窗口的句柄。例如: Dim hw&, cnt&

Dim rttitle As String * 256

hw& = FindWindowA(\cnt = GetWindowText(hw&, rttitle, 255)

MsgBox Left$(rttitle, cnt), 0, \=====

根据1个窗口句柄返回另1个相关窗口句柄 :GetWindow函数

传入一个源窗口句柄,返回另1个与之有关的窗口句柄,如源窗口的下1个兄弟窗口,第1个子窗口等。声明:

Declare Function GetWindow Lib \hwnd As Long, ByVal wCmd As Long) As Long 调用如:

Const GW_HWNDNEXT = 2

hWndlxn = GetWindow(hWndTmp, GW_HWNDNEXT) 参数:hwnd:源窗口句柄。

wCmd参数:指定结果窗口与源窗口的关系,它们建立在下述常数基础上: GW_CHILD 寻找源窗口的第一个子窗口

GW_HWNDFIRST 为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口 GW_HWNDLAST 为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口 GW_HWNDNEXT 为源窗口寻找下一个兄弟窗口 GW_HWNDPREV 为源窗口寻找前一个兄弟窗口 GW_OWNER 寻找窗口的所有者 注解

兄弟或同级是指在整个分级结构中位于同一级别的窗口。如某个窗口有五个子窗口,那五个窗口就是兄弟窗口。尽管GetWindow可用于枚举窗口,但倘若要在枚举过程中重新定位、创建和清除窗口,那么EnumWindows和EnumChildWindows更为可靠。 =====

GetWindowLongA函数:获得指定窗口某方面的结构信息(返回长整数)。

问题:什么叫\窗口的结构数据信息\?就是1个窗口的诸方面情况吧,象人有姓名性别年龄等一样,窗口有\扩展样式(包含标题栏,如在Form1中表现为BorderStyle属性,有标题栏缩小、无标题栏等的组合值)\,\样式(包含滚动条、系统菜单、边框等可设置)\,\父窗口\,\子窗口\,\窗口函数\等诸多方面,见下面nIndex参数值。这些方面的内容(每1方面只能有1个当前值)就构成了窗口的结构信息。

该函数从附加窗口内存中返回1个长整数值。 声明:

Public Declare Function GetWindowLong Lib \As Long, ByVal nIndex As Long) As Long

此函数用来获取指定窗口的某方面\结构数据\信息。 函数返回值由参数nIndex来决定要返回哪个方面的当前值。若出错则返回0。 调用如:Const GWL_STYLE = -16 Private Sub Command1_Click()

X = GetWindowLongA(Form1.hwnd, GWL_STYLE) Print X End Sub 参数:

hwnd: Long,欲获取信息的窗口的句柄

nIndex: Long,欲取回此窗口哪方面的信息,可以是下述任何一个常数: GWL_EXSTYLE 扩展窗口样式

(可能包含有:WS_EX_TOOLWINDOW=&H80标题栏缩小可变大小,相当于BorderStyle=5; WS_EX_TRANSPARENT=&H20&隐藏绘图区,但显示其上的子控件。有意思。等,别的我也不太清楚,好象要去查MSDN才可查到) GWL_STYLE 窗口样式

(可能值有:WS_VSCROLL=?垂直滚动条,WS_HSCROLL=?水平滚动条, WS_MAXIMIZEBOX=?标题栏右边最大化纽,WS_MINIMIZEBOX=?最小化纽等等) GWL_WNDPROC 该窗口的窗口函数的地址 GWL_HINSTANCE 拥有窗口的实例的句柄

GWL_HWNDPARENT 该窗口之父的句柄。不要用SetWindowWord来改变这个值

GWL_ID 对话框中一个子窗口的标识符 GWL_USERDATA 含义由应用程序规定 DWL_DLGPROC 这个窗口的对话框函数地址

DWL_MSGRESULT 在对话框函数中处理的一条消息返回的值 DWL_USER 含义由应用程序规定 -----

SetWindowLongA函数:为窗口设置窗口结构信息

常用此函数来动态地设置窗口的风格(如样式,滚动条等等)。即不在属性窗口中设置。而在API中设置。 声明:

Public Declare Function SetWindowLong Lib \As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 调用如:

Public Const WS_EX_TOOLWINDOW = &H80 lStyle = WS_EX_TOOLWINDOW

lRet = SetWindowLongA(Me.hwnd, GWL_EXSTYLE, GetWindowLongA(Me.hwnd, GWL_EXSTYLE) Or lStyle) 注:这里有1个Or\或\操作。为何要用OR呢?这是因为一个窗口的GWL_EXSTYLE包含了多项设置值的和(如同时可能有滚动条,标题栏等值的组合,如为262400),用or就可只改动其部分值,而保留其他方面原设置不变。 参数:

hwnd Long,欲设置信息的窗口的句柄

nIndex Long,请参考GetWindowLong函数的nIndex参数的说明 dwNewLong Long,由nIndex指定的窗口信息的新值 -------

GetWindowWord函数:获得指定窗口的结构信息(返回字值) 该函数从附加窗口内存中返回字值。与GetWindowLong相似。 声明:

Declare Function GetWindowWord Lib \Alias \As Long, ByVal nIndex As Long) As Integer 调用如:

Const GWL_HWNDPARENT = -8

parent = GetWindowWord(Form1.hwnd, GWL_HWNDPARENT)

这里调用后parent返回Form1的上一级父窗口的句柄。再例如command1在form1中, x=GetWindowWord(command1.hwnd,GWL_HWNDPARENT)返回的x就等于form1.hwnd. 参数见GetWindowLong. ======

获得指定窗口所属的窗口类名称:GetClassNameA函数 声明:

Declare Function GetClassName Lib \ByVal lpClassName As String, ByVal nMaxCount As Long) As Long 调用如--求Form1所属的窗口类的名称 : pclass = Space(31)

nlen = GetClassNameA(form1.hwnd, pclass, 32) pclass = Left(pclass, nlen)