马大哈 发表于 2005-4-22 12:23:15

[原创]Window按钮突破专家功能之VB实现

网上有一位朋友做了一个叫"Window按钮突破专家"的小程序,可以实现把当前焦点窗口内灰色钮变为可用状态的功能.

这个功能说来是不难的,其中的关键API就是EnableWindow.

使用它就可以控制指定句柄的控件的"Enable"属性(相对VB中控件)

我用VB也做了一个这样的小程序,里面的关键代码如下:Public Sub GoEnable(hWndParent As Long)
Dim hWndChild As Long


hWndChild = GetWindow(hWndParent, GW_CHILD Or GW_HWNDFIRST)


Do While hWndChild <> 0
    EnableWindow hWndChild, 1
    GoEnable hWndChild
    hWndChild = GetWindow(hWndChild, GW_HWNDNEXT)
Loop
End Sub这个子程序只要向它传递一个主窗体句柄,就可以自动把此句柄下所有控件都变为可用.

具体请看代码.


 
以下是本程序的VC++版:
 
http://www.m5home.com/bbs/thread-873-1-1.html

小吧 发表于 2005-4-22 13:24:08

<P>虽然对api懂的好少</P><P>学学 呵呵 </P>

马大哈 发表于 2005-5-10 23:51:32

这个程序是一个对逻辑思维有考验的例子,建议自己去试着实现一下.

马大哈 发表于 2005-6-10 12:13:56

<P>这就是一个典型的递归应用.</P>

马大哈 发表于 2005-6-10 12:21:27

<P>很多地方会用到递归的.</P><P>这种方法很有用的</P>

小吧 发表于 2005-6-10 18:33:03

高手   呵呵顶顶顶虚心请教!!!!!!!!!!!

马大哈 发表于 2005-6-24 22:59:55

<P>wname应该是窗口标题吧?</P><P>这段代码做成一个递归函数,列出的应该是当前所有窗口的标题.</P>

马大哈 发表于 2005-10-22 21:21:10

尽管试试,呵呵.

马大哈 发表于 2005-11-10 14:17:36

也可以有选择,不过那样的话,我有两个思路,你看看:

一,列举出目标窗体上所有可操作控件的句柄与主从关系,放在一个TREEVIEW里,由用户控制;

二,那就是直接用鼠标移动到目标控件上,用热键操作.

你觉得用哪种好呢?

呵呵,其实大家可以自己试着去做!

马大哈 发表于 2005-12-8 00:48:24

唉,如果只是想下载东西,就不用浪费大家的时间来注册了!!!

游客用户名请参见以下地址:

http://www.m5home.com/bbs/announcements.asp?action=showone&boardid=0

马大哈 发表于 2005-12-27 15:46:20

哈哈,这个小东西还是很有意思吧?

马大哈 发表于 2006-2-8 18:46:14

是呀~~一个论坛里总会有这样的人的。

现在我这里也没有什么技术讨论了,唉~~~~~

马大哈 发表于 2006-4-15 19:52:48

不是吧???

马大哈 发表于 2007-6-26 01:50:11

<p>控件其实就是一个子窗体</p><p>具体请看代码,使用了递归,所有子窗体都应该可以被找出来.</p>
页: [1]
查看完整版本: [原创]Window按钮突破专家功能之VB实现