mars 发表于 2004-9-9 14:57:55

WR读到的PassWord框里的星号显示密码是加密的

WR读到的PassWord框里的星号显示密码是加密的,我想用数据向导把Password里的数据递加1,该怎样做。

pcl2004_27 发表于 2004-9-9 17:09:26

你的操作是如何做呢!
验证点?
我觉得如果要是录制的脚本,只是把密码数据加1后,输入到密码框里就可以了

flower 发表于 2004-9-13 14:49:55

password显示为加密串有时是因为不能正确识别此控件,比如java,我就遇到过此情况,加了java add-in后显示的就是实际输入文本.

pcl2004_27 发表于 2004-9-14 09:08:45

一般windows控件经过加密处理,在控件的消息中加入了对WM_GETTEXT进行处理,所以一般想得到密码框的文本都是加密的字符串!java可能处理方式不同
这里是个delphi对密码框处理WM_GETTEXT 消息的代码,你可以从中看到其中的奥秘!

下边是得到password密码框密码的源代码!你可以通过这段delphi代码得到你要的得到的password框的代码
// 显示鼠标当前所在的文本框内容
function ShowWindowText():string;
var
    pPoint:TPoint;
    WinText:string;
    mText:PChar;
    hWnd:Integer;
begin
    GetCursorPos(pPoint);
    SetLength(WinText,256);
    hWnd:=WindowFromPoint(pPoint);
    GetWindowText(hWND,PChar(WinText),256);
    SetLength(WinText,StrLen(PChar(WinText)));
    result:=WinText;
end;

而windows有的密码框控件对这个消息进行了处理,下边是一个控件的代码:
unit uCEdit;

interface

uses Windows,StdCtrls,Messages,Classes;

TYPE
    TCEdit=class(TEdit)
    private
      bEnable:boolean;            // 允许使用
      procedure WndProc(var Msg: TMessage);override;
    public
      constructor Create(AOwner: TComponent); override;

      function MyGetText():string;
    published

    end;

procedure Register;

implementation

{ CEdit }

//注册控件
procedure Register;
begin
    RegisterComponents('Additional', );
end;

constructor TCEdit.Create(AOwner: TComponent);
begin
    inherited Create(AOwner);
    // 禁止使用
    bEnable:=false;
end;

function TCEdit.MyGetText: string;
begin
    // 程序本身还是用允许的
    bEnable:=true;
   
    result:=Text;
end;

procedure TCEdit.WndProc(var Msg: TMessage);
begin
    if (Msg.Msg=WM_GETTEXT) or (Msg.Msg=EM_GETLINE)then
    begin
      if bEnable then
      begin
            bEnable:=false;
            inherited;
      end;
    end
    else inherited;
end;

end.

所以你遇到这样的控件你是很难得到他的password的!其实winrunner获得属性,得到密码的情况类似!

对于java的情况我没有做实验,所以无法得出具体的情况!不过从自动化实现上来说我觉得得到一个密码框的密码,我觉得这需要考虑!

mars 发表于 2004-9-14 10:20:26

谢谢大家的帮助!

mars 发表于 2004-9-14 10:27:58

谢谢大家的帮助!

girl04 发表于 2004-10-30 21:40:15

其实这个问题很简单.

用password_encrypt()就可以了

girl04 发表于 2004-10-30 21:43:04

如:password_edit_set("QQ密码:", password_encrypt(ddt_val(table,"QQ密码")));

详见我的帖:QQ登陆脚本的录制

www.super.zc 发表于 2005-11-11 15:38:20

丢得多

password_edit_set改称edit_set就什么问题都没了!麻烦得要命!

feiyi_feiyi 发表于 2006-1-6 10:01:20

我也是像楼上这样做的,很简单,除非不想让别人知道这个软件的密码是什么,才需要那么麻烦吧

zhangtao 发表于 2006-10-26 18:00:04

呵呵

password_edit_set改成edit_set还是我照edit_username改的,试一下还真的可以,不过好象有人研究出来了,呵呵~~~~~~~~~
页: [1]
查看完整版本: WR读到的PassWord框里的星号显示密码是加密的