读书人

★来一起探讨,挑战VC++的程序★

发布时间: 2012-03-12 12:45:33 作者: rapoo

★★★★高手进来一起探讨,挑战VC++的程序★★★★
Form1为VC++所写的程序,其中有两个文本框.其中两个文本的句柄都为Edit,能否通过VB在后台中传输数据过去,使得文本框一为 "VB " ,文本框二为 "VC "?其中的有一个按扭,不知道是什么来的句柄跟窗体句柄一个样的,无法取出,更何谈发送指令?
各位能人,请发言!

[解决办法]
很简单,先用FindWindow获取QQ窗口句柄,再用用SendMessage给QQ窗口发消息

SendMessage(qqID_hWnd, WM_SETTEXT, 0, (LPARAM)qqid);
SendMessage(qqPass_hWnd, WM_SETTEXT, 0, (LPARAM)qqpass);
SendMessage(ButtonLogin, BM_CLICK, 0, 0);

[解决办法]
Option Explicit

Private Declare Function SendMessage Lib "user32.dll " Alias "SendMessageA " (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function GetDlgItem Lib "user32.dll " (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Const WM_SETTEXT As Long = &HC
Private Const BM_CLICK As Long = &HF5&

Public Function SendQQ(ByVal QQMainHwnd As Long, ByVal QQNum As String, ByVal QQPwd As String)
Dim hQQNum As Long, hQQPwd As Long, hQQLoginButton As Long
Dim lRet As Long

hQQNum = GetDlgItem(QQMainHwnd, 138) 'QQ号框的ID是8A
hQQPwd = GetDlgItem(QQMainHwnd, 0) 'QQ密码框ID是0????
hQQLoginButton = GetDlgItem(QQMainHwnd, 16032) 'QQ登录按钮ID为3EA0

If hQQNum <> 0 Then
lRet = SendMessage(hQQNum, WM_SETTEXT, ByVal 0, ByVal QQNum)
End If

If hQQPwd <> 0 Then
lRet = SendMessage(hQQPwd, WM_SETTEXT, ByVal 0, ByVal QQPwd)
End If

If hQQLoginButton <> 0 Then
lRet = SendMessage(hQQLoginButton, BM_CLICK, ByVal 0, ByVal 0)
End If
End Function

把这个放一模块里

然后作如下调用:

SendQQ [QQ主窗体句柄], [账号], [密码]

至于那几个QQ控件的ID,在不同的版本有可能不一样,你自己用SPY++确认一下.

读书人网 >VB

热点推荐