- 积分
- 73649
- 明经币
- 个
- 注册时间
- 2001-6-7
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
- Option Explicit
- '相关 API 函数声明
- 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 GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long '取得窗口句柄
- Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long '获取父窗口句柄
- Const GW_CHILD = 5
- Const GW_HWNDNEXT = 2
- Const WM_GETTEXT = &HD
- Const WM_GETTEXTLENGTH = &HE
- '获取命令行窗口句柄的示例
- Sub MC_GetCommandLineSample()
- Debug.Print GetCommandLineWindows(GetAcadHwnd)
- End Sub
- '获取AutoCAD主窗口句柄
- Public Function GetAcadHwnd() As Long
- GetAcadHwnd = GetParent(GetParent(ThisDrawing.hwnd))
- End Function
- '遍查子窗口,判断窗口是否为命令行窗口,并返回命令行窗口句柄
- Public Function GetCommandLineWindows(Window_Hwnd As Long) As Long
- Dim Buf As String
- Dim BufLen As Long
- Dim Child_hwnd As Long
- Dim Children() As Long
- Dim Num_Children As Integer
- Dim i As Integer
- Dim TitleText As String * 1024
- Dim TitleLeng As Long
- Dim Title As String
- Dim CHwnd As Long
-
- TitleLeng = GetWindowText(Window_Hwnd, TitleText, Len(TitleText))
- Title = Left$(TitleText, TitleLeng)
- If Left(Title, 3) = "命令行" Or Left(Title, 12) = "Command Line" Then
- GetCommandLineWindows = Window_Hwnd
- Exit Function
- End If
-
-
- Num_Children = 0
- Child_hwnd = GetWindow(Window_Hwnd, GW_CHILD) '取得第 1 个子窗口的句柄
- Do While Child_hwnd <> 0 '如果有子窗口
- Num_Children = Num_Children + 1
- ReDim Preserve Children(1 To Num_Children)
- Children(Num_Children) = Child_hwnd
- Child_hwnd = GetWindow(Child_hwnd, GW_HWNDNEXT) '取得下一个兄弟窗口的句柄
- Loop
-
- For i = 1 To Num_Children
- CHwnd = GetCommandLineWindows(Children(i))
- If CHwnd <> 0 Then GetCommandLineWindows = CHwnd
- Next i
-
- End Function
|
评分
-
查看全部评分
|