本页主题: 编写灰色按钮激活者(不是偷来的喔!) 打印 | 加为IE收藏 | 复制链接 | 收藏主题 | 上一主题 | 下一主题

now1000
我是a'Gao
级别: 论坛版主


精华: 0
发帖: 126
威望: 137 点
VB币: 47 个
贡献值: 0 点
在线时间:12(小时)
注册时间:2008-06-21
最后登录:2008-10-07

 编写灰色按钮激活者(不是偷来的喔!)

重播
原理简单!
如果看不懂就发信到707133699@qq.com一起研究!
下面是代码和源代码:
模块代码:
Copy code
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
   
Public Const WM_GETTEXTLENGTH = &HE
Public Const WM_GETTEXT = &HD

Public Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Public Declare Function IsWindowEnabled Lib "user32" (ByVal hwnd As Long) As Long

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
        x As Long
        y As Long
End Type

Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long

 
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202



代码:
Copy code
Private Sub Command1_Click()
Command1.Enabled = False
Command2.Enabled = True

Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Command2.Enabled = False
Command1.Enabled = True

Timer1.Enabled = False
End Sub





Private Sub Form_Load()
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
End Sub

Private Sub Timer1_Timer()

Dim Cursor As POINTAPI
GetCursorPos Cursor    '获取坐标
Dim a As String
  a = "当前坐标为: " & Cursor.y & "," & Cursor.y    '储存坐标
  List1.List(0) = a
 
  Dim b As Long
    b = WindowFromPoint(Cursor.x, Cursor.y)
  List1.List(1) = "当前句柄为: " & b
 
 
 
  Dim longs As Long    '这一步是用来获取控件的内容
    longs = SendMessage(b, WM_GETTEXTLENGTH, 0, 0) '获取内容长度
    Dim Data As String
      Data = String(longs, 0)  '缓冲区
      SendMessage b, WM_GETTEXT, longs + 1, ByVal Data  '获取控件内容
      Dim c As String
      c = Data
      List1.List(2) = "当前指标内容为: " & c
     
   
   
    Dim d As Long, e As String * 256    '这一步是用来获取控件的类
    d = GetClassName(b, e, 255)
    List1.List(3) = "当前控件的类为: " & e
   
Dim f As Long, g As Long
f = GetParent(b)                '获取该窗口的父窗口句柄
  List1.List(4) = "该窗口的父窗口句柄为: " & f
  SendMessage f, WM_GETTEXT, longs + 1, ByVal Data '获取控件内容
    List1.List(5) = "该窗口的父窗口标题为: " & Data
    g = FindWindowEx(f, b, e, vbNullString) '从当前句柄去查找下一子窗口,所以只有用鼠标指向灰色按钮的上一个窗口,灰色按钮才会被激活,就好像本程序一样,当按钮"开始"为灰色时,用鼠标指向按钮"结束",按钮"开始" 就会被激活

      List1.List(6) = "下一个窗口句柄为: " & g
     
      SendMessage g, WM_GETTEXT, longs + 1, ByVal Data
      List1.List(6) = "下一个窗口标题为: " & Data
     
      Dim h As Long
        h = IsWindowEnabled(g)
       
          If h > 0 Then
            List1.List(7) = "是否要激活            否"
              Else
                      List1.List(7) = "是否要激活      是 "
                  EnableWindow g, 1  '激活灰色按钮
                   
                    End If
End Sub



呵呵!各位请不要见笑,只不过是用了几API吧了!!
[ 此贴被now1000在2008-07-31 06:50重新编辑 ]
许多事情都是注定的!
Posted: 2008-07-19 11:16 | [楼 主]
now1000
我是a'Gao
级别: 论坛版主


精华: 0
发帖: 126
威望: 137 点
VB币: 47 个
贡献值: 0 点
在线时间:12(小时)
注册时间:2008-06-21
最后登录:2008-10-07

 Re:编写灰色按钮激者(不是偷来的喔!)


许多事情都是注定的!
Posted: 2008-07-19 12:05 | 1 楼
now1000
我是a'Gao
级别: 论坛版主


精华: 0
发帖: 126
威望: 137 点
VB币: 47 个
贡献值: 0 点
在线时间:12(小时)
注册时间:2008-06-21
最后登录:2008-10-07

 

只有二个或以上同类的控件!(才能激活!
许多事情都是注定的!
Posted: 2008-07-23 15:21 | 2 楼
now1000
我是a'Gao
级别: 论坛版主


精华: 0
发帖: 126
威望: 137 点
VB币: 47 个
贡献值: 0 点
在线时间:12(小时)
注册时间:2008-06-21
最后登录:2008-10-07

 

许多事情都是注定的!
Posted: 2008-07-31 06:50 | 3 楼
lihai123
级别: 新手上路


精华: 0
发帖: 5
威望: 16 点
VB币: 4 个
贡献值: 0 点
在线时间:2(小时)
注册时间:2008-07-26
最后登录:2008-08-06

 

感觉不错.
Posted: 2008-08-01 08:46 | 4 楼
叶子红了
级别: 新手上路


精华: 0
发帖: 11
威望: 12 点
VB币: 2 个
贡献值: 0 点
在线时间:1(小时)
注册时间:2008-08-10
最后登录:2008-08-10

 

额.这个......拿来研究研究
Posted: 2008-08-10 17:44 | 5 楼
帖子浏览记录 版块浏览记录
VB家园 » 『API资料专区』



中华人民共和国信息产业部许可证编号:粤ICP备08023639号 
Powered by PHPWind v6.0 Certificate Code © 2003-07 PHPWind.com Corporation