终于脱了五条裤衩戴上了一个星罩,庆祝一下,并发一贴。虽已解决但欲求更好的解决办法,因本人为新人,分分不多,有好解决办法可再加100分。谢绝接分。问题系锅样滴:
http://mch.tenpay.com/Login.shtml(腾讯财付通商户登录平台)
里面有个输入密码的ActiveX输入框。
我利用TWebBrowser来自动登录现在是这样实现的:
1.商户号和用户名的输入非常简单了,直接可以赋值;
2.把焦点定位到用户名输入框;
3.然后利用keybd_event发送tab键,使焦点移动到密码输入框上;
4.继续利用keybd_event发送相应的密码,最后发送一个enter键完成登录。这样做有不少问题,所以希望有更好的解决办法。

解决方案 »

  1.   

    问题就不看来了。。祝贺一下
    ----
    学wudi的没什么不对吧……
      

  2.   

    解析了,并且通过那个ActiveX生成了传递到下一网页的参数,但总是不一样,即使一样也不行啊,不允许让使用人员输入密码的。
      

  3.   

    //找到输入框句柄,然后模拟消息发送
    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;
      

  4.   

    to zswang(伴水清清)(专家门诊清洁工) 非常感谢!虽然代码不多,但已然看到了高手的风范!写是写进去了,但这招依然不中啊。
    这个ActiveX似乎很怪,这种方式送进去的,即使是正确的密码,并把其他参数输全后,点了那个登录按钮后,也报“参数不完整”(跟没有输入密码报的错误是一样的,如果是密码不对它会报密码输入不对的),会不会是这种方式传进去的它并没有真正接收。
    并且,如果这种方式送进字符后,我无论在密码部分再乱敲多少,都是会报“参数不完整”,必须要全部清空密码部分后,再乱敲才能报出密码不对来。虽未解决,但结贴时的100分会奉上的。继续抓狂中,还需要继续!另外让我更抓狂的是:csdn每天凌晨1:30到4:00之间一直处于只读状态,在未遭到攻击的情况下实施DoS,真不知在搞什么哩根儿愣。
      

  5.   

    没详细看问题,但现在网页上输密码的activeX一般是做了防模拟和防钩子之类的措施的,估计要模拟输入颇有难度
      

  6.   

    发完贴后,我想也没这样简单,就把Edit的掩码取消查看,模拟输入文字不像正常输入的一样被加密,确实做了防模拟的功能
    之后我将这个Edit安装到Delphi中调试
    C:\WINDOWS\system32\qqedit\qqedit.dll
    发现即使系统时间一样,生成的密码也会不同,估计是随机的
    目前研究到此
      

  7.   

    to zswang(伴水清清)(专家门诊清洁工)是的,我当时参考了js里的语句,把参与运算的几个参数从网页中取出并都赋给了安装后的edit,但生成的密码与同一网面抓包得到的密码就是一不致,估计这条路是走不太通了。再次感谢你的深入参与。