
正文
枚举窗口vb.net 枚举窗口句柄易语言
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
VB.NET的枚举求教解决方法
这个功能实现起来其实也很简单,就是通过反射去读取 DescriptionAttribute 的 Description 属性的值,代码如下所示:
/// summary
/// 返回枚举项的描述信息。
/// /summary
/// param name="value"要获取描述信息的枚举项。/param
/// returns枚举想的描述信息。/returns
public static string GetDescription(Enum value)
{
Type enumType = value.GetType();
// 获取枚举常数名称。
string name = Enum.GetName(enumType, value);
if (name != null)
{
// 获取枚举字段。
FieldInfo fieldInfo = enumType.GetField(name);
if (fieldInfo != null)
{
// 获取描述的属性。
DescriptionAttribute attr = Attribute.GetCustomAttribute(fieldInfo,
typeof(DescriptionAttribute), false) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return null;
}
这段代码还是很容易看懂的,这里取得枚举常数的名称使用的是 Enum.GetName() 而不是 ToString(),因为前者更快,而且对于不是枚举常数的值会返回 null,不用进行额外的反射。
当然,这段代码仅是一个简单的示例,接下来会进行更详细的分析。
相关问答
Q1: 在vb.net中,如何枚举一个注册的组件其开放的COM类的接口函数。
为什么增加的回答这么久还没显示。
我想知道你为什么要枚举这些方法,是需要打印出来还是只是为了查看和调用?
1,如果只是为了查看和调用的话,不需要用代码就能知道了。
打开VS,视图-》对象浏览器。然后开了后,点浏览右边的“。。。”,开了后。选COM活页,再在里面选ThunderAgent 1.0 Type Library。再点添加。
添加好之后。在左边的浏览窗口内就有了,展开THUNDERAGENTLib下面有几个类和接口,展开类就有方法了。
2,如果是需要用代码枚举并打印。网上有相关的代码,C#写的。我就不帖了。自己搜一下。改成vb.net相信应该不会太难。
祝你好运。
Q2: vb.net怎么枚举父窗口下所有子窗口
Dim HanStr As String = ""
For Each Form In Me.MdiChildren
HanStr += Form.Handle.ToString
Next
MsgBox(HanStr)
Q3: VB中如何使用GetNextWindow函数枚举所有窗口
1.定义一个模块, 内容为:
Option Explicit
Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function FindWindowa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetForegroundWindow Lib "user32" () As Long
2. 给窗口加一个按钮, 在按钮的click事件里写以下内容:
Option Explicit
Private Sub Command1_Click()
Dim hwnd As Long
hwnd = GetForegroundWindow ' FindWindowa("Notepad", "新建 文本文档.txt - 记事本")
Dim str1 As String, len1 As Long
str1 = Space(255) '定义接收字串.
GetWindowText hwnd, str1, 1024
Do While hwnd 0
hwnd = GetNextWindow(hwnd, 2) '只有2才表示找下一个窗口
len1 = GetWindowText(hwnd, str1, Len(str1))
If (InStr(1, str1, "记事", 1) 0) Then
MsgBox "你要的窗口找到了, 它是:" + str1
Exit Sub '这一句看情况修改
End If
Loop
MsgBox "很遣憾, 没有你要找的窗口"
End Sub
3. 测试, 一定会通过.
Q4: VB里面怎么用简单的办法枚举父窗口下所有的子窗口句柄
Private Sub Command1_Click()
Dim h
Do
h = FindWindowEx(Me.hWnd, h, vbNullString, vbNullString)
If h 0 Then
List1.AddItem h
End If
Loop Until h = 0
End Sub
比如这样,就是枚举了当前窗体的所有子窗体(控件),如果需要获得其他窗体的子窗体句柄,把Me.hwnd改成父窗体句柄就行了
枚举窗口vb.net的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于枚举窗口句柄易语言、枚举窗口vb.net的信息别忘了在本站进行查找喔。







