请大家帮忙.
解决方案 »
- 如何判断鼠标的单击?
- 如何让text文本框显示数据库内容?
- 关于VBScript调用COM组件的问题?
- 如何在图片控件中显示png格式图片
- 如果系统中已经有相同的实例在运行,那么如何将这个实例恢复到正常运行时的窗口界面
- 请教:ChildWindowFromPoint(hwnd, xPoint, yPoint)中的xPoint, yPoint单位是象素,怎么样转化为厘米?另外,它们是相对软件的位置还是相对屏
- Help!!!各位高手帮忙了。
- 那位大侠能告诉我怎么读word文档,一行一行的读入一个字符串里。显示在richtext 或text控件中。而且不是乱码。
- 袁飞打印预览控件升级到 3.0 版
- 关于ADO连接的问题,望高手指教!!!
- 如何通过InstallShield 实现向开始菜单和桌面上添加快捷方式
- 怎样用vb调用网站服务器上的access数据库
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 Const WM_SETTEXT = &HCSendMessage 需要改变值的文本框的hwnd, WM_SETTEXT, 0, ByVal 你指定的文本
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 LongPrivate 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 Const WM_PASTE = &H302
Private Const WM_SETTEXT = &HCPrivate Sub Command1_Click()
Dim TemphWnd As Long
TemphWnd = FindWindow("Notepad", vbNullString)
TemphWnd = FindWindowEx(TemphWnd, 0, "Edit", vbNullString)
If TemphWnd Then
''-- 将Text1中的文本粘贴到记事本
'VB.Clipboard.SetText Text1.Text
'SendMessage TemphWnd, WM_PASTE, 0, ByVal 0&
'把记事本的内容设置为Text1中的文本
SendMessage TemphWnd, WM_SETTEXT, 0, ByVal CStr(Text1.Text)
End If
End Sub
' 不过我发现它好像不是一个标准的TextOption Explicit
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 Const WM_SETTEXT = &HCPrivate Sub Command1_Click()
Dim Handle As Long ' 窗口句柄
Dim ParentHandle As Long ' 父窗口句柄
Shell "calc.exe", vbNormalFocus
ParentHandle = FindWindow("SciCalc", "计算器") ' 获得父窗口句柄
Handle = FindWindowEx(ParentHandle, 0&, "Edit", vbNullString) ' 获得窗口句柄
SendMessage Handle, WM_SETTEXT, 0, ByVal "设置另一个程序的文本框中的文本"
End Sub
在介绍你几个API吧:'获取鼠标指针的当前位置
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'返回包含了指定点的窗口的句柄
Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
'为指定的窗口取得类名
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long'获取窗口文本字符长度
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
'获取窗口文本
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 Const GW_HWNDFIRST = 0 '为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口
Public Const GW_HWNDLAST = 1 '为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口
Public Const GW_HWNDNEXT = 2 '为源窗口寻找下一个兄弟窗口
Public Const GW_HWNDPREV = 3 '为源窗口寻找前一个兄弟窗口
Public Const GW_OWNER = 4 '寻找窗口的所有者
Public Const GW_CHILD = 5 '寻找源窗口的第一个子窗口
'获取指定窗口句柄
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
lpClassName '窗口类名
lpWindowName '窗口名
有了这些API你就可以找出你想要的窗口了,加上楼上那位仁兄的SendMessage函数,就可以满足你的要求了,还有其实TextBox这些可具有焦点的对象都可以把他们看作是一个子窗口来处理的。好好运用这些函数你还可以作出很多不错的东西来呢。
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 Const WM_SETTEXT = &HC
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const WM_NCLBUTTONUP = &HA2
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const BM_CLICK = &HF5
'Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Sub command1_click()
Dim Handle As Long ' 窗口句柄
Dim s As String
Dim ParentHandle As Long ' 父窗口句柄
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
Dim f As Integer, g As Integer, h As Integer, i As Integer, j As Integer
Dim a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, e1 As Integer
Dim f1 As Integer, g1 As Integer, h1 As Integer, i1 As Integer, j1 As Integer
Dim INI As String
ParentHandle = FindWindow("FNWNS370", "系统名称")'这里可以找到一个主窗口的句柄
Handle = FindWindowEx(ParentHandle, 0&, "PBEDIT70", vbNullString)'这里可以得到一个文本框的值
SendMessage Handle, WM_SETTEXT, 0, ByVal "1234556"'改变文本框的值
Handle = FindWindowEx(ParentHandle, 0&, "Button", "确定(&O)")
'SendMessage Handle, WM_KEYDOWN, 32, &H11C0001
'SendMessage Handle, WM_KEYUP, 32, &H11C0001 '这两句模拟回车
SendMessage Handle, BM_CLICK, 0, 0'模拟单击
end sub'Private Sub command1_click()
'Dim Handle As Long ' 窗口句柄
'Dim s As String
'Dim ParentHandle As Long ' 父窗口句柄
'ParentHandle = FindWindow("FNWNS370", "系统注册")
'While True
' Handle = GetWindow(ParentHandle, 6) '得到对话框的句柄.这里是我试出来的,等于6时刚好可以取到.
' Handle = FindWindowEx(Handle, 0&, "Button", "确定")
' SendMessage Handle, BM_CLICK, 0, 0 '模拟单击,我不知道为什么要单击两下.
' SendMessage Handle, BM_CLICK, 0, 0
' DoEvents
'Wend
'End Sub
我想这可能就是你想要的.你是不是在破密码或注册码什么的呢?呵呵.给分吧.我的已经实现了.
用这几个api,OpenFileMapping,MapViewOfFile,UnmapViewOfFile