终于脱了五条裤衩戴上了一个星罩,庆祝一下,并发一贴。虽已解决但欲求更好的解决办法,因本人为新人,分分不多,有好解决办法可再加100分。谢绝接分。问题系锅样滴:
http://mch.tenpay.com/Login.shtml(腾讯财付通商户登录平台)
里面有个输入密码的ActiveX输入框。
我利用TWebBrowser来自动登录现在是这样实现的:
1.商户号和用户名的输入非常简单了,直接可以赋值;
2.把焦点定位到用户名输入框;
3.然后利用keybd_event发送tab键,使焦点移动到密码输入框上;
4.继续利用keybd_event发送相应的密码,最后发送一个enter键完成登录。这样做有不少问题,所以希望有更好的解决办法。
http://mch.tenpay.com/Login.shtml(腾讯财付通商户登录平台)
里面有个输入密码的ActiveX输入框。
我利用TWebBrowser来自动登录现在是这样实现的:
1.商户号和用户名的输入非常简单了,直接可以赋值;
2.把焦点定位到用户名输入框;
3.然后利用keybd_event发送tab键,使焦点移动到密码输入框上;
4.继续利用keybd_event发送相应的密码,最后发送一个enter键完成登录。这样做有不少问题,所以希望有更好的解决办法。
解决方案 »
- delphi 多层系统开发 接口调用另一接口方法
- 导入Excel模板信息进行数据填充问题
- 深夜在线求救WebBrowser 自动表
- combobox控件 怎样做才能不重复记录。
- Clipboard的问题
- 我用Winsocket连接时,老是出现:10061://连机被拒绝,是不是端口号不对,我用的是211
- 如何在程序中的任意一个页面响应同一个键盘事件?
- 各位,急件,如何调用sqlserver的那个连接向导???
- 怎么 删除数的所有节点
- 竖排报表,分页打印,知道者帮帮忙 ! 急急急急……
- 请问:怎么在form创建时如果不符合条件就关闭
- 我怎么样把把form上的combox和edit的内容插入到后台数据库后,立即在dbgrid中显示出来呢?
----
学wudi的没什么不对吧……
function EnumChildProc(
hwnd: HWND;
lParam: LPARAM
): BOOL; stdcall;
var
vBuffer: array[0..255] of Char;
begin
PInteger(lParam)^ := 0;
GetClassName(hwnd, vBuffer, SizeOf(vBuffer));
if SameText('ATL:Edit', vBuffer) then
begin
PInteger(lParam)^ := hwnd;
Result := False;
end else Result := True;
end; { EnumChildProc }procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
vHandle: THandle;
begin
vHandle := FindWindow('IEFrame', '财付通商户管理系统 - Microsoft Internet Explorer');
if vHandle = 0 then Exit;
EnumChildWindows(vHandle, @EnumChildProc, Integer(@vHandle));
if vHandle = 0 then Exit;
S := '12345';
for I := 1 to Length(S) do
SendMessage(vHandle, WM_CHAR, Ord(S[I]), 0);
end;
这个ActiveX似乎很怪,这种方式送进去的,即使是正确的密码,并把其他参数输全后,点了那个登录按钮后,也报“参数不完整”(跟没有输入密码报的错误是一样的,如果是密码不对它会报密码输入不对的),会不会是这种方式传进去的它并没有真正接收。
并且,如果这种方式送进字符后,我无论在密码部分再乱敲多少,都是会报“参数不完整”,必须要全部清空密码部分后,再乱敲才能报出密码不对来。虽未解决,但结贴时的100分会奉上的。继续抓狂中,还需要继续!另外让我更抓狂的是:csdn每天凌晨1:30到4:00之间一直处于只读状态,在未遭到攻击的情况下实施DoS,真不知在搞什么哩根儿愣。
之后我将这个Edit安装到Delphi中调试
C:\WINDOWS\system32\qqedit\qqedit.dll
发现即使系统时间一样,生成的密码也会不同,估计是随机的
目前研究到此