乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 84|回复: 4

[函数]获取AutoCAD命令行窗口句柄的函数

[复制链接]

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-12-3 10:31:00 | 显示全部楼层 |阅读模式
  1. Option Explicit
  2. '相关 API 函数声明
  3. Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, _
  4.         ByVal lpString As String, ByVal cch As Long) As Long '取得指定窗口的标题
  5. Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long '取得窗口句柄
  6. Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long '获取父窗口句柄
  7. Const GW_CHILD = 5
  8. Const GW_HWNDNEXT = 2
  9. Const WM_GETTEXT = &HD
  10. Const WM_GETTEXTLENGTH = &HE
  11. '获取命令行窗口句柄的示例
  12. Sub MC_GetCommandLineSample()
  13.     Debug.Print GetCommandLineWindows(GetAcadHwnd)
  14. End Sub
  15. '获取主窗口句柄
  16. Public Function GetAcadHwnd() As Long
  17.     GetAcadHwnd = GetParent(GetParent(ThisDrawing.hwnd))
  18. End Function
  19. '遍查子窗口,判断窗口是否为命令行窗口,并返回命令行窗口句柄
  20. Public Function GetCommandLineWindows(Window_Hwnd As Long) As Long
  21.     Dim Buf As String
  22.     Dim BufLen As Long
  23.     Dim Child_hwnd As Long
  24.     Dim Children() As Long
  25.     Dim Num_Children As Integer
  26.     Dim i As Integer
  27.     Dim TitleText As String * 1024
  28.     Dim TitleLeng As Long
  29.     Dim Title As String
  30.     Dim CHwnd As Long
  31.    
  32.     TitleLeng = GetWindowText(Window_Hwnd, TitleText, Len(TitleText))
  33.     Title = Left$(TitleText, TitleLeng)
  34.     If Left(Title, 3) = "命令行" Or Left(Title, 12) = "Command Line" Then
  35.         GetCommandLineWindows = Window_Hwnd
  36.         Exit Function
  37.     End If
  38.    
  39.    
  40.     Num_Children = 0
  41.     Child_hwnd = GetWindow(Window_Hwnd, GW_CHILD) '取得第 1 个子窗口的句柄
  42.     Do While Child_hwnd  0 '如果有子窗口
  43.         Num_Children = Num_Children + 1
  44.         ReDim Preserve Children(1 To Num_Children)
  45.         Children(Num_Children) = Child_hwnd
  46.         Child_hwnd = GetWindow(Child_hwnd, GW_HWNDNEXT) '取得下一个兄弟窗口的句柄
  47.     Loop
  48.    
  49.     For i = 1 To Num_Children
  50.         CHwnd = GetCommandLineWindows(Children(i))
  51.         If CHwnd  0 Then GetCommandLineWindows = CHwnd
  52.     Next i
  53.    
  54. End Function
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-12-3 10:35:00 | 显示全部楼层
该函数进行一些改造,还可以取得AutoCAD窗口中任何一个控件的句柄。
回复

使用道具 举报

3

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-12-11 13:00:00 | 显示全部楼层
获得后可用来做什么?
回复

使用道具 举报

21

主题

97

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
181
发表于 2012-12-14 09:53:00 | 显示全部楼层
这是一个好方法啊,只是我想获取命令行中所输入的内容应该怎么做呢?请教一下老大。
回复

使用道具 举报

31

主题

227

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
351
发表于 2013-1-1 23:47:00 | 显示全部楼层
谢谢找控件的分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 22:27 , Processed in 1.456640 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表