读书人

请教各位怎么获得一个标题带文字+quot;+

发布时间: 2012-01-24 23:11:54 作者: rapoo

请问各位,如何获得一个标题带文字+"+时间日期的窗体句柄
这个标题很复杂 总问大家有些不好意思,不过确实很无奈,我都愁死了手头还没有相关的书
G1 "A" "B" "C" SETUP PROGRAM 2010-03-12 08:06:31
时间和日期同步更新
用wnd = FindWindow(vbNullString, "****")好像不能实现吧。

另外我从网上找到一个,控制“按键”的程序:
Private Sub Command1_Click()
hpwnd = FindWindow(vbNullString, "12345")
hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定")
SetForegroundWindow hcwnd
iResult = SendMessage(hcwnd, WM_LBUTTONDOWN, 0, 0&)
iResult = SendMessage(hcwnd, WM_LBUTTONUP, 0, 0&)
End Sub
当我Command1_Click时,目标软件确实有反应,但不是按“确定”键操作的反应,只是窗体闪了闪,
正常按“确定”应该弹出msgbox的。
是SendMessage那错了吗?

[解决办法]
发鼠标消息还是用PostMessage吧

VB code
Option ExplicitConst MK_LBUTTON = 1Private Sub Command1_Click()Dim hpwnd As Long, hcwnd As Long, iresult As Longhpwnd = FindWindow(vbNullString, "12345")hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定")SetForegroundWindow hcwndiresult = PostMessage(hcwnd, WM_LBUTTONDOWN, ByVal MK_LBUTTON, ByVal 0&)iresult = PostMessage(hcwnd, WM_LBUTTONUP, ByVal 0&, ByVal 0&)End Sub
[解决办法]
掉了一个函数
VB code
'取一个程序的真正根进程HwndPrivate Function GetRootParent(ByVal hChdWnd As Long) As Long    Dim lRt     As Long    Dim lParent As Long    lRt = GetParent(hChdWnd)    If lRt = 0 Then       lRt = GetNextWindow(hChdWnd, GW_OWNER)    End If    lParent = lRt    Do Until lRt = 0            lRt = GetParent(lParent)        If lRt = 0 Then           lRt = GetNextWindow(lParent, GW_OWNER)        End If        If lRt = 0 Then            GetRootParent = lParent            Exit Do        Else            lParent = lRt        End If    Loop    If GetRootParent = 0 Then        GetRootParent = hChdWnd    End IfEnd Function
[解决办法]
VB code
'窗体Form1代码Option Explicit'窗体上添加一个命令按钮Command1,一个列表框List1Private Sub Command1_Click()        EnumWindows AddressOf EnumWindowsProc, ByVal 0&End SubPrivate Sub Form_Load()End Sub'标准模块Option ExplicitPublic Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As BooleanPrivate Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPrivate Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As LongPublic Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean       Dim windowCaption As String, LengthCaption As Long       LengthCaption = GetWindowTextLength(hwnd)       windowCaption = Space(LengthCaption)       Call GetWindowText(hwnd, windowCaption, LengthCaption + 1)              '查找窗口标题包含文字"SETUP PROGRAM"的窗口。这个地方可以自己改。       If InStr(1, windowCaption, "SETUP PROGRAM") > 0 Then          Debug.Print "这个句柄就是你要找的:"; hwnd       End If              Form1.List1.AddItem Str$(hwnd) + "   " + windowCaption       EnumWindowsProc = TrueEnd Function 

读书人网 >VB

热点推荐