利用VB编程突破“灰色按钮”限制
科技情报开发与经济 SC1一TECH INFORMATION DEVELOPMENT&ECONOMY 2006年 第 l6卷 第l0期
文章编号:1005—6033(2006)10-0216-02
利用VB编程突破 “ I 色按钮"限制
杨 剀,黄玲玲
(南华大学计算机科学与技术学院,湖南衡阳,421001)
摘 要:介绍了在 VB环境中如何利用Windows API函数更改其他应用程序窗口中按
钮的活动状态。
关键词:灰色按钮;API;窗口句柄
中图分类号:TP31 文献标识码:A
随着计算机技...
科技情报开发与经济 SC1一TECH INFORMATION DEVELOPMENT&ECONOMY 2006年 第 l6卷 第l0期
文章编号:1005—6033(2006)10-0216-02
利用VB编程突破 “ I 色按钮"限制
杨 剀,黄玲玲
(南华大学计算机科学与技术学院,湖南衡阳,421001)
摘 要:介绍了在 VB环境中如何利用Windows API函数更改其他应用程序窗口中按
钮的活动状态。
关键词:灰色按钮;API;窗口句柄
中图分类号:TP31 文献标识码:A
随着计算机技术的不断发展,用户能够使用的软件数量也不断增
加。然而在这些软件的使用过程中经常会遇到某些按钮为灰色不可用状
态。造成这种现象的原因大致有两类:一类是病毒或者是恶意代码,例
如,不小心浏览了含有恶意代码的网页后,会使IE浏览器的起始主页被
修改,并且IE的主页设置选项变为灰色不能修改。另一类是该软件必须
注册才能使用这些功能,例如,某些软件在安装过程中要输入序列号,如
果没有序列号,则安装过程就无法继续。无论是何种原因,软件中的灰色
按钮总会对用户造成不便。本文简单地介绍了如何利用VB编程突破灰
色按钮限制。在Windows中每个应用程序窗13都有一个唯一的窗13句
柄,同时应用程序窗13中的每个控件(轻量控件除外)也分配了一个窗13
句柄。因此,要突破灰色按钮限制,首先就要获取应用程序窗13的窗13句
柄;然后通过应用程序窗13的窗13句柄获取灰色按钮的窗13句柄;最后
通过使用相应的Windows APt函数更改按钮的活动状态。这样就能突破
灰色按钮限制了。
l 获取应用程序窗口的窗口句柄
利用VB编程突破灰色按钮限制,首先需要获取应用程序窗13的窗
13句柄。获取应用程序窗口的窗口句柄的方法很多,本文简单介绍两种。
方法一:用FindWindow函数获取指定应用程序窗口的句柄。获取某
个指定的应用程序窗13的窗口句柄可用Windows API函数FindWindow
(4)建立内控监督机构,加强内控队伍建设。内控监督机构对每个岗
位、每个部门和各项业务实施全面监督反馈
,实现与行政管理交叉
控制,加强内部监控。内部控制必须被监督。监督是一种随着时问的推移
而评估制度、执行质量监督的过程。只有施行切实可靠的监控,才能及时
发现和解决内部控制过程中出现的问胚。
(5)建立一个有效的会计系统。一个有效的会计系统,实施会计控制
是内部控制制度的关键。会计系统的建立也就是企业会计制度的
。
会计制度的设计不仅包括规定会汁账户、账簿、会汁报
等内容的编制
说明,还包括发生在企业各部门间各类经营管理活动中会计处理程序的
具体规定,把内部控制抽象性、要索性的方法和程序融化为企业会计制
度中具体可操作的方法与程序。
(6)加强企业的内部审计制度。内部审计作为企业内部控制体系的一
个重要方面,其主要任务是监督本企业的生产经营活动是否按照所制定
的方针政策和计划执行,会计记录是否按国家颁布的会计准则进行,会计
收稿 日期:2006—03—15
直接获取。在使用FindWindow函数之前必需在模块中做如下声明:
Declare Function FindWindow t,ib “user32’’Alias“FindWindowA”
(ByVal lpClassName As String.ByVal lpWindowName As String)As Long
该函数的返回值是找到窗13的句柄,如未找到相符窗13,则返回零。
该函数有两个参数lpClassName和lpWindowName,lpClassName指向包
含了窗口类名的空中止(C语言)字串的指针,或设为零,表示接收任何
类;lpWindowName指向包含了窗 13文本(或标签)的空中止(C语言)字
串的指针,或设为零,表示接收任何窗口标
。
只要知道指定应用程序窗口的窗口标题就可用此函数获取窗 口句
柄。例如要想获取“Internet属性”窗体的句柄可用以下语句实现:
hwndlEAttrib=FindWindow(vbNullString.“Inlernet属性”)
方法二:用GetForegroundWindow函数获取前台应用程序活动窗口
的句柄。Windows API函数GetForegroundWindow可以获取前台应用程序
活动窗口的窗口句柄。在使用GetForegroundWindow函数之前必须在模
块中作如下声明:
Declare1~’unctionGetForegroundWindowLib‘'user32’'Alias‘‘GetForeground
Window”()As Long
该函数的返回值是前台应用程序活动窗口的窗口句柄。
可用以下语句获取当前活动窗口句柄 ;
hwndForeWindOW=GetForegroundWindow
报表能否正确反映企业的财务状况和经营,本企业的生产经营有无违反国
家财经法纪等。它在履行审计职能,监督经济活动,加强经济管理.提高经
济效益等方面发挥着重要作用。然而,由于我国的内部审计人员向厂长、经
理负责,且当前有较多企业轻视内部审计的作用。同时有不少企业在人员
的编制上,将企业内部审计人员由企业会计人员兼任,或是兼管某一业务,
这就使得企业内部审计无法发挥作用。如果要发挥企业内部审计的作用,
就必须将内部审计人员从会计、财务人员中分离出来,直接对董事会负责,
这样才能真正发挥内审人员的作用,监督和保护企业的资产 、财产安全,监
督企业朝着合理、合法的良性方向发展。
(实习编辑:王永胜)
第一作者简介:陶春海,男,1967年6月生,1987年毕业于山西省第
二人民警察学校,会计师,阳泉一监二监区,山西省阳泉市郊区荫营镇,
04501l,
Discussion on the Internal Control of Enterprise
TAo chun-hai
ABSTRACT:This paper analyzes on the problems existing in the internal control of enterprise,and puts forward some
suggestions on strengthening the internal control of enterprise.
KEY W ORDS:enterprise management;internal control;internal audit
216
维普资讯 http://www.cqvip.com
杨 剀,黄玲玲 利用vB编程突破“灰色按钮”限制 本刊E-maihbjb@mail.sxinfo.net 信患技术
2 获取灰色按钮的窗口句柄
获取应用程序窗口的窗口句柄之后,可以利用 Windows API函数
EnumChildWindows获取灰色按钮的窗口句柄。在使用 EnumChild
Windows函数之前必须在模块中作如下声明:
Declare Function EnumChildWindows Lib “user32”Alias“Enum Child
Windows”(ByVM hWndParent As Long,ByVal lpEnumFunc As Long,ByVal
1P~am As Long)As Long
该函数的作用是为指定的父窗I=I枚举子窗I=I。该函数有 3个参数,
hWndParent欲枚举子窗I=I的父窗I=I的句柄;lpEnumFune为每个子窗口
调用的函数的指针 用Addmss Of运算符获得函数在一个标准模块中的
地址 ;lParam这个值的含 义是由程序员规定的。EnumChildWindows函
数的第二个参数是一个函数的指针,在VB中必须用AddressOf运算符
获得函数j生标准模块中的地址,该函数(可命名为EnumChildProc)将被
每个子窗I=I调用。对于EnumChildProc函数的定义和使用是有一定要
求的,EnumChildProc函数首先必须是一个有返回值的函数,若不成功
则返回零.若成功则返回非零;其次它必须有两个参数,第一个参数是
由父窗口指定的子窗口句柄,第二个参数的值由EnumChildWindows函
数的第三个参数 ~aram确定。因此 EnomChildProc函数必须按以下格
式编写:
Function EnumChildProc(ByVal hwnd As Long,ByVal 1Param As Long)
AsLong
End Function
用以下语句可枚举应用程序窗I=I的所有子窗1:3:
hwndFW=Enum Child Windows(hwndForeWindow.Address Of Enum
ChildProc.0)
3 更改按钮的活动状态
因为EnumChildWindows函数能获取应用程序窗口中的每个控件的
窗口句柄,并执行 EnumChildProc函数,所以在 EnumChildProc函数中使
用相应的Windows AP1函数更改按钮的活动状态,便可突破灰色按钮限
制。在这里要使用的Windbws API函数是E blewindUw函数。在使用
EnableWil·dow函数之前必须在模块中作如下声明:
Declare Funetion EnableWindow Lib “user32’’Alias“EnableWindow”
(ByVal hwndAsLong,ByValfEnableAsLong)AsLong
该函数的作用是在指定的窗口里允许或禁止所有鼠标及键盘输入。
该函数有两个参数hwnd和fEnable.hwnd欲操作的窗I=I句柄;fEnable的
值为零时窗口禁止所有鼠标及键盘输入.非零时窗口允许所有鼠标及键
盘输入。
因此只要在EnumChildProc函数中对灰色按钮执行语句“Enable
Windowhwnd,1”,就可突破灰色按钮限制了。
在VB编程过程中,可将代码放人一个窗体模块和一个标准模块中。
在标准模块中声明对需要用到的 Windows API函数的引用:
Public Declare Function GetForegroundWindow Lib“user32”()As Long
Public Declare Function EnumChildWindows Lib “user32”(ByVal
hWndParent As Long,ByVal lp·EnumFunc As Long,ByVal 1Param As Long)
AsLong
Public Declare Function lsWindowEnabled Lib“user32”(ByVal hwnd As
Long)AsLong
Public Declare Function EnableWindow Lib “user32”fByVal hwnd As
Long,ByVal fEnable As Long)As Long
Public Declare Function FindWindow Lib"IISer32”Alias“FindWindowA”
(ByVal lpClassName As String,ByVal lpWindowName As String)As Long
另外,更改按钮的活动状态的函数过程 EnumChildProc也可在标准
模块中定义:
Function EnumChildProc(ByVal hwnd As Long,ByVal 1Param As
Long)As Long
’如果窗口是不活动状态,则激活它。
If lsWindowEnabled(hwnd)=0 Then EnableWindow hwnd,1
EnumChildPrOC l
End Function
在窗体模块中主要就是利用 Windows API函数 FindWindow或
GetForegroundWindow获取应用程序窗 I=I句柄 ,然后调用函数 Enum
ChildWindows将不活动窗口激活。
例如,要想激活“[nternet属性”窗体中的灰色按钮 ,可在窗体模块中
添加一个命令按钮并添加如下代码:
Private Sub Commandl
— Click()
Dim hwndlEAttrib As Long
HwndlEAttrib=FindWindow(vhNullString,“Intemet属性”)
hwndlEAttrib=EnumChildWindows (hwndlEAttrib,AddressOf Enum
ChildProc.0)
End Sub
如果要想激活前台应用程序窗1:3中的灰色按钮,可在窗体模块中添
加一个命令按钮和一个定时器并添加如下代码:
Private Sub Commandl
—
Click()
l'imer1.Enabled=True
End Sub
Private Sub Timerl
— Timer()
Dim hwAsLong
hw=GetForegroundWindow
If hw=Me.hwnd fhen Exit Sub
hw:EnumCbildWindows(hw.AddressOf EnumChildProc,0)
End Sub
综上所述,灰色按钮就是处于不活动状态的控件,只要找到它的窗
口句柄,使用WindowsAP1函数 EnableWindow更改按钮的活动状态.就
可以突破灰色按钮限制了。
(实习编辑:王永胜)
第一作者简介:杨 剀,男,1979年2月生.2000年毕业于湖南师范
大学理学院.助教,南华大学计算机学院。湖南省衡阳市,421001.
To Break through the Limitation of the“Grey Button’’by VB
YANG Kai,HUANG Ling-ling
ABSTRACT:This paper introduces how to use Windows API function to change the active status of the button in the
\
window of the other application programs in VB environment.
KEY W ORDS:grey button;API;handle of window
217
维普资讯 http://www.cqvip.com
本文档为【利用VB编程突破“灰色按钮”限制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。