找到QQ发送框的句柄,然后用Sendmessage发送消息
解决方案 »
- 帮帮忙吧,Function 怎样在vb中使用
- 16位的字符串如何使用单DES来加密
- 数据导入问题,大虾快来帮忙呀!急!!!
- 保存网页文件
- 为什么我的MDI主窗体显示时子窗体也显示,我没有加代码啊。
- 关于利用控件,显示winXP的窗口界面的
- 为什么listview没有选择时,listview就默认选了第一个item?
- 怎样判断listBox中的复选框被选中?
- 如何替换HTML文件中的脚本????????
- 谁知道{[北大青鸟]和印度的APTECH合办的教育中心}来者有分
- 急啊!怎样让我的image支持*.tif,*.psd 啊,还有怎样显gif动画啊,我的动不了。倾情送分!
- To 斑竹playyuer:你用什么魔法成为本月第一的?昨天上午你的分数才600,下午就成1902了.
findwindow
findwindowex
sendmessage
-------- 以上 API 用于查找QQ窗口句柄并可发消息给它
bringwindowtotop
setforegroundwindow
-------- 用于击活QQ窗口便于下面SENDKEYS函数工作 ^-^
sendkeys "%S"
-------- 模拟按键,让QQ自动发消息。
[email protected]
'用Ctrl+鼠标右键弹出菜单,
'全部源代码如下
Option ExplicitPrivate Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As IntegerPrivate Sub addtxt_Click()
SendKeys Text1.Text
SendKeys " ^{ENTER}"
End SubPrivate Sub mnuExit_Click()
Unload Me
End SubPrivate Sub Timer1_Timer()
If GetAsyncKeyState(17) And GetAsyncKeyState(2) Then
PopupMenu aaa
End If
End Sub
SendKeys Text1.Text是什么呀?
PopupMenu aaa又是什么?
我现在就是不知道类名是怎么一回事,不知道我要找的QQ对话框中的类名是
什么,要知道我想可以用findwindowex函数得到句柄。
完全代码:需要一个command1,2个textbox(text1,text2),1个Timer1
'''''''''''''''''''Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Const EM_GETLINECOUNT = &HBA
Private Const WM_GETTEXT = &HD
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXTLENGTH = &HE
Dim hd As Long, chd As Long
Private Sub Command1_Click()
Dim tt$
BringWindowToTop hd
SetForegroundWindow hd
tt = Text1.Text
SendMessage chd, WM_SETTEXT, 0, ByVal tt
SendKeys "%S"
End SubPrivate Sub Timer1_Timer()
hd = FindWindow(vbNullString, "发送消息")
If hd <> 0 Then
chd = FindWindowEx(hd, 0, "EDIT", vbNullString)
If SendMessage(chd, EM_GETLINECOUNT, 0, 0) <> 0 Then Me.Caption = "QQ SendBox hWnd = " & CStr(chd)
Text1.Enabled = True: Command1.Enabled = True
Text2.Text = GetText(chd)
Else
Me.Caption = "Can't find QQ SendBox"
Text1.Enabled = False: Command1.Enabled = False
Text2.Text = ""
End If
End Sub
Public Function GetText(ByVal hWndNow As Long) As String '获取文本的子程序
On Error Resume Next
Dim bArr() As Byte, bArr2() As Byte
hLength = SendMessage(hWndNow, WM_GETTEXTLENGTH, 0, 0)
If hLength > 0 Then
ReDim bArr(hLength + 1) As Byte, bArr2(hLength - 1) As Byte
Call CopyMemory(bArr(0), hLength, 2)
Call SendMessage(hWndNow, WM_GETTEXT, hLength + 1, bArr(0))
Call CopyMemory(bArr2(0), bArr(0), hLength)
GetText = StrConv(bArr2, vbUnicode)
Else
GetText = ""
End If
End Function
楼上错的太多,
SendKeys Text1.Text是什么呀?
PopupMenu aaa又是什么?
你可以自己猜啊,
你说的都不是错误啊。
我只是用最简单的方法做一个程序,
虽然不是很好用。
但是我调试好了。