当前位置:编程学习 > C#/ASP.NET >>

自动点击即操控这些按钮?

有一个弹出窗口,JAVA APPLET WINDOW   这个窗口里面有很多按钮,如打印,退出等,现在是我该如何才能自动点击即操控这些按钮?
下述方法肯定不行:
1.用FINDWIDOW 找控件句柄,找不到,SPY++也发现不了控件句柄
2.用网页CLICK等,无法获取网页源码,得不到按钮的TAGNAME,INNERTEXT等。
请问高手高手高高手,该如何办? --------------------编程问答-------------------- 使用模拟提交, HttpWebRequest 想地址发送需要的参数,先抓包,看看都提交了什么内容 --------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
使用模拟提交, HttpWebRequest 想地址发送需要的参数,先抓包,看看都提交了什么内容


是的,看他提交的内容和提交的链接 --------------------编程问答-------------------- 如何使用HttpWebRequesT?是否想要我获取JAVA APPLET WINDOW 源码?如果是这样,可能会徒劳,得不到源码的。我查了资料,该项窗口的源码是封闭的。退一步说,即使查到了源码,也无法操作。我用了一下该网页框架的DOUCMENT.ALL.LENGTH,很可惜,只有5个,可见用DOUCMENT去操作,这条路行不通的。 --------------------编程问答--------------------
源码:
<BODY onload=callback();></BODY>
<BODY onload=print()><APPLET id=PrintApplet codeBase=. height=0 archive=printclient.jar width=0 code=com.neusoft.report.engine.export.docprint.client.applet.PrintApplet.class tscriptable="true"><PARAM NAME="_cx" VALUE="5080"><PARAM NAME="_cy" VALUE="5080"></APPLET> </BODY>
<BODY></BODY>
没有BUTTON,也没有TAGNAME,没有打印字样, --------------------编程问答-------------------- 看来很有难度 --------------------编程问答-------------------- 这有什么难的!
第一步:打开你这个窗口,然后获取整个屏幕的截图,在截图上确定你要点击的按钮的坐标(只需获取的坐标在按钮范围内即可),记录这个坐标,并进行编号。获取坐标这一步是手动的。屏幕可用代码截图,放在另一人对话框中获取按钮位置,完了把这个对话框关掉。
第二步:然后根据这些坐标设置坐标所对应的按钮的功能,放入一个listbox中,你要点哪个按钮,就在屏幕上的该坐标位置触发一下鼠标按下的事件。 --------------------编程问答-------------------- 另外一个思路:获取com.neusoft.report.engine.export.docprint.client.applet.PrintApplet.class这个网页类,然后加以分析。这个类你不一定在你看到的页面原代码中看到,它是整个网站共享的,你可以通过首页找到这个类文件所在的可能路径。 --------------------编程问答--------------------
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam 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 ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd 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 FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
'Public Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Public Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Public Declare Function SearchTreeForFile Lib "imagehlp.dll" _
                          (ByVal lpRoothPath As String, ByVal lpInputName As String, ByVal lpOutputName As String) As Long
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As String, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
Public Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
Public Declare Function ObjectFromLresult Lib "oleacc" (ByVal lResult As Long, riid As UUID, ByVal wParam As Long, ppvObject As Any) As Long
Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Declare Function GetCursorPos Lib "user32" (ipPOINT As POINTAPI) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const BM_CLICK = &HF5&
Public Const MK_LBUTTON = &H1&

Public Type POINTAPI
XX As Long
YY As Long
End Type

Public Type RECT
    bottom As Long
    left As Long
    right As Long
    top As Long
End Type

'Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, _
   'ByVal lpBaseAddress As Long, ByRef lpBuffer As Any, _
   'ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
'Public Const MK_LBUTTON = &H1
Public Const TB_GETITEMRECT = &H41D
Public Const MEM_RELEASE = &H8000&
Public Const PAGE_READWRITE = &H4
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const PROCESS_VM_WRITE = &H20
Public Const PROCESS_VM_OPERATION = &H8
Public Const PROCESS_VM_READ = &H10
Public Const MEM_RESERVE = &H2000&
Public Const MEM_COMMIT = &H1000&
Public Const SW_SHOW = 5
Public Const SW_HIDE = 0
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const OPEN_EXISTING = 3
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const INVALID_HANDLE_VALUE = -1
Public Const WM_CLOSE = &H10
Public Const GW_CHILD = 5
Public Const GW_HWNDNEXT = 2
Public Const WM_GETTEXT = &HD
Public Handle As LongDim pt As POINTAPI
Dim wfp As WINDOWPLACEMENT
Dim myhwnd As Long
Dim r As Long
Dim vSmallPoint As POINTAPI
Dim vNumberOfBytesRead As Long
Dim vrect As RECT
MHANDLE = FindWindow(vbNullString, "按钮")
QW = GetWindowThreadProcessId(MHANDLE, pid)
 vProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, pid)
vPointer = VirtualAllocEx(vProcess, 0, 10000000, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
SendMessage MHANDLE, TB_GETITEMRECT, 1, vPointer
RPM = ReadProcessMemory(vProcess, vPointer, vrect, LenB(RECT), vNumberOfBytesRead)
Dim AAA As Long
AAA = 65536 * 101 + 97
SendMessage MHANDLE, WM_LBUTTONDOWN, MK_LBUTTON, ByVal AAA
SendMessage MHANDLE, WM_LBUTTONUP, MK_LBUTTON, ByVal AAA
vfe = VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE)
CloseHandle (vProcess)
MsgBox "LAST"
Exit Sub --------------------编程问答-------------------- 通过读取内存的方式,向窗体中某一坐标(即某一按钮)发送点击,实现按钮被按下。这窗体的句柄是知道的,按钮无句柄。上述程序谁帮忙改改。如果成功,给300元人民币酬谢。QQ:915980115
--------------------编程问答-------------------- 通过读取内存的方式,向窗体中的某一坐标发送点击MOUSE消息。按钮正好就在那位置。按钮可能有或无句柄,但请不要去查它的句柄,这个谁都会。谁帮我把上述程序改改,给人民币300元酬谢!QQ:915980115 
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,