用什么软件可以查到控件的ID?

geoffrey9043 2002-05-18 06:37:27
用什么软件可以查到控件的ID?
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-05-18
  • 打赏
  • 举报
回复

Public Function GetCaption(hWnd As Long) As String
Dim TempLng As Long
Dim TempStr As String
Dim Rc As Long

TempLng = 260
TempStr = Space(TempLng)

Rc = GetWindowText(hWnd, TempStr, TempLng)

GetCaption = StrConv(LeftB$(StrConv(TempStr, vbFromUnicode), Rc), vbUnicode)

End Function

Public Function GetClassNameStr(hWnd As Long) As String
Dim TempLng As Long
Dim TempStr As String
Dim Rc As Long

TempLng = 260
TempStr = Space(TempLng)

Rc = GetClassName(hWnd, TempStr, TempLng)

GetClassNameStr = StrConv(LeftB$(StrConv(TempStr, vbFromUnicode), Rc), vbUnicode)

End Function

Private Sub FindWnd()
Dim TemphWnd As Long
Dim TempLI As ListItem

LV1.ListItems.Clear

TemphWnd = hWndDir
Set TempLI = LV1.ListItems.Add(, , ".")
TempLI.SubItems(1) = TemphWnd
TempLI.SubItems(2) = GetClassNameStr(TemphWnd)
TempLI.SubItems(3) = GetDlgCtrlID(TemphWnd)
LV1_ItemClick TempLI

TemphWnd = GetParent(hWndDir)
If TemphWnd = 0 Then TemphWnd = GetWindow(hWndDir, GW_OWNER)
If TemphWnd Then
Set TempLI = LV1.ListItems.Add(, , "..")
TempLI.SubItems(1) = TemphWnd
TempLI.SubItems(2) = GetClassNameStr(TemphWnd)
TempLI.SubItems(3) = GetDlgCtrlID(TemphWnd)
End If
CmdUp.Enabled = TemphWnd

TemphWnd = GetWindow(hWndDir, GW_CHILD)
TemphWnd = GetWindow(TemphWnd, GW_HWNDFIRST)
Do While TemphWnd
Set TempLI = LV1.ListItems.Add(, , GetCaption(TemphWnd))
TempLI.SubItems(1) = TemphWnd
TempLI.SubItems(2) = GetClassNameStr(TemphWnd)
TempLI.SubItems(3) = GetDlgCtrlID(TemphWnd)

TemphWnd = GetWindow(TemphWnd, GW_HWNDNEXT)

Loop

End Sub

Private Sub CmdMe_Click()
hWndDir = GetDesktopWindow
FindWnd

End Sub

Private Sub CmdOpen_Click()
LV1_DblClick

End Sub

Private Sub CmdSX_Click()
FindWnd
End Sub

Private Sub CmdUp_Click()
Dim TemphWnd As Long

TemphWnd = GetParent(hWndDir)
If TemphWnd = 0 Then TemphWnd = GetWindow(hWndDir, GW_OWNER)
If TemphWnd Then
hWndDir = TemphWnd
FindWnd
End If

End Sub

Private Sub Form_Load()
LV1.View = lvwReport
LV1.ColumnHeaders.Add , , "标题", 1200
LV1.ColumnHeaders.Add , , "hWnd", 540
LV1.ColumnHeaders.Add , , "类名", 2100
LV1.ColumnHeaders.Add , , "ID", 420

CmdMe_Click

End Sub

Private Sub Form_Resize()
If Me.WindowState = 1 Then Exit Sub
On Error Resume Next

LV1.Width = Me.ScaleWidth
LV1.Height = Me.ScaleHeight - 300 - FraInfo.Height

FraInfo.Top = LV1.Height + 300
FraInfo.Width = Me.ScaleWidth
'FraInfo.Height = LV1.Height

End Sub

Private Sub LV1_DblClick()
Dim TempLI As ListItem
Dim TemphWnd As Long

If LVB = 1 Then
'Debug.Print "1"
Set TempLI = LV1.SelectedItem
If (TempLI Is Nothing) = False Then
'Debug.Print "2"
If TempLI.Text <> "." Then
'Debug.Print "3"
TemphWnd = CLng(TempLI.SubItems(1))

If GetWindow(TemphWnd, GW_CHILD) Then
'Debug.Print "4"
hWndDir = TemphWnd
FindWnd

End If

End If

End If

End If

End Sub

Private Sub LV1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim TemphWnd As Long
Dim rct As RECT

TemphWnd = CLng(Item.SubItems(1))
GetWindowRect TemphWnd, rct

TxtCap.Text = GetCaption(TemphWnd)
TxthWnd.Text = TemphWnd
TxtID.Text = GetDlgCtrlID(TemphWnd)
TxtClass.Text = GetClassNameStr(TemphWnd)
TxtX.Text = rct.Left
TxtY.Text = rct.Top
TxtW.Text = rct.Right - rct.Left
TxtH.Text = rct.Bottom - rct.Top

CmdOpen.Enabled = GetWindow(TemphWnd, GW_CHILD)

End Sub

Private Sub LV1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
LVB = 1
LV1_DblClick
LVB = 0
End If

End Sub

Private Sub LV1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
LVB = Button
LVX = x
LVY = y

End Sub
zyl910 2002-05-18
  • 打赏
  • 举报
回复
FrmMain.frm
====================================================================
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form FrmMain
Caption = "查找窗口"
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = "Form1"
LockControls = -1 'True
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton CmdOpen
Caption = "打开"
Height = 300
Left = 2550
TabIndex = 21
Top = 0
Width = 840
End
Begin VB.Frame FraInfo
Caption = "信息"
Height = 1455
Left = 0
TabIndex = 4
Top = 1710
Width = 4635
Begin VB.TextBox TxtH
Height = 270
Left = 3825
TabIndex = 19
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtW
Height = 270
Left = 2640
TabIndex = 17
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtY
Height = 270
Left = 1350
TabIndex = 15
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtID
Height = 270
Left = 2820
TabIndex = 13
Text = "Text1"
Top = 510
Width = 1750
End
Begin VB.TextBox TxtX
Height = 270
Left = 300
TabIndex = 11
Text = "Text1"
Top = 1110
Width = 750
End
Begin VB.TextBox TxtClass
Height = 270
Left = 540
TabIndex = 9
Text = "Text1"
Top = 810
Width = 4035
End
Begin VB.TextBox TxthWnd
Height = 270
Left = 540
TabIndex = 7
Text = "Text1"
Top = 510
Width = 1750
End
Begin VB.TextBox TxtCap
Height = 270
Left = 540
TabIndex = 5
Text = "Text1"
Top = 210
Width = 4035
End
Begin VB.Label LblH
AutoSize = -1 'True
Caption = "高:"
Height = 180
Left = 3480
TabIndex = 20
Top = 1170
Width = 360
End
Begin VB.Label LblW
AutoSize = -1 'True
Caption = "宽:"
Height = 180
Left = 2310
TabIndex = 18
Top = 1170
Width = 360
End
Begin VB.Label LblY
AutoSize = -1 'True
Caption = "Y:"
Height = 180
Left = 1110
TabIndex = 16
Top = 1170
Width = 270
End
Begin VB.Label LblID
AutoSize = -1 'True
Caption = " ID:"
Height = 180
Left = 2340
TabIndex = 14
Top = 570
Width = 540
End
Begin VB.Label LblX
AutoSize = -1 'True
Caption = "X:"
Height = 180
Left = 60
TabIndex = 12
Top = 1170
Width = 270
End
Begin VB.Label LblClass
AutoSize = -1 'True
Caption = "类名:"
Height = 180
Left = 60
TabIndex = 10
Top = 870
Width = 540
End
Begin VB.Label LblhWnd
AutoSize = -1 'True
Caption = "hWnd:"
Height = 180
Left = 60
TabIndex = 8
Top = 570
Width = 540
End
Begin VB.Label LblCap
AutoSize = -1 'True
Caption = "标题:"
Height = 180
Left = 60
TabIndex = 6
Top = 270
Width = 540
End
End
Begin VB.CommandButton CmdUp
Caption = "向上"
Height = 300
Left = 1710
TabIndex = 3
Top = 0
Width = 840
End
Begin VB.CommandButton CmdMe
Caption = "恢复"
Height = 300
Left = 840
TabIndex = 2
Top = 0
Width = 840
End
Begin VB.CommandButton CmdSX
Caption = "刷新"
Height = 300
Left = 0
TabIndex = 1
Top = 0
Width = 840
End
Begin MSComctlLib.ListView LV1
Height = 1395
Left = 0
TabIndex = 0
Top = 300
Width = 2745
_ExtentX = 4842
_ExtentY = 2461
LabelEdit = 1
LabelWrap = -1 'True
HideSelection = 0 'False
FullRowSelect = -1 'True
GridLines = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
BorderStyle = 1
Appearance = 1
NumItems = 0
End
End
Attribute VB_Name = "FrmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Const GW_HWNDFIRST = 0 '为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口
Private Const GW_HWNDLAST = 1 '为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口
Private Const GW_HWNDNEXT = 2 '为源窗口寻找下一个兄弟窗口
Private Const GW_HWNDPREV = 3 '为源窗口寻找前一个兄弟窗口
Private Const GW_OWNER = 4 '寻找窗口的所有者
Private Const GW_CHILD = 5 '寻找源窗口的第一个子窗口

Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetDlgCtrlID Lib "user32" (ByVal hWnd As Long) As Long

Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long

Private Type RECT
Left As Long
Top As Long
Right As Long
zyl910 2002-05-18
  • 打赏
  • 举报
回复
用记事本打开,粘贴保存

FindhWnd.vbp
====================================================================
Type=Exe
Form=FrmMain.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\WINDOWS\SYSTEM\StdOle2.Tlb#OLE Automation
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
IconForm="FrmMain"
Startup="FrmMain"
ExeName32="FindhWnd.exe"
Command32=""
Name="FindhWnd"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="91"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
geoffrey9043 2002-05-18
  • 打赏
  • 举报
回复
我也知道不复杂,但是有些要求是我不能办到的

一,必须在公用的电脑上用,但这台电脑无软驱,只有联网下载
二,我就是要查这几个API 函数的用法啊

是查窗体上的控件的ID,以及窗体的叵柄
多谢谢大家指教啊
zyl910 2002-05-18
  • 打赏
  • 举报
回复
是窗体上的控键的ID
还是系统ID
zyl910 2002-05-18
  • 打赏
  • 举报
回复
自己写一个
不复杂
zyl910 2002-05-18
  • 打赏
  • 举报
回复
自己写一个
不复杂
gis_men 2002-05-18
  • 打赏
  • 举报
回复
用注册表
搜索控件的名称

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧