你把需要输入的用户名和密码写入注册表,或者是.ini文件里, 在登录的时
候读取就是了

解决方案 »

  1.   

    用INI是不是会不安全
    程序最重要是不要有中间过程呀
      

  2.   

    找到用户EDIT的句柄和密码EDIT的句柄,发WM_SETTEXT消息,就完了,要不染再送一个鼠标单击消息给按钮,这样更简单哦
      

  3.   

    你自己编一个程序,用FindWindow找到它的句柄,
    再FindWindowEx找到密码框的句柄Wnd,
    对它发SendMessage(Wnd,WM_char,asc,0);
    asc为密码字符的ASC码
    密码有六个字符就发六次
      

  4.   

    我用的是2000,进系统时就要输入用户名密码,应该安全.如果程序还要,安全得过份了.我想把帐号密码放在注册表里.
    用FindWindow,FindWindowEx,SendMessage,就可以了吗?我这就试试.
    能给我一段找edit句柄的源程序吗?
    如果还有发消息的源程序就更好了.
    谢谢大家了.
      

  5.   

    我知你的意思了,
     因为你装的是2K,
     而如果不登录系统的话程序是不能自动运行的,
     除非你的程序是系统服务程序,并已被设为系统服务
     就像IIS等一些服务程序 我想你的程序一定不是上面的,
      你想的一定是:
       WINDOWS系统不登录,你的程序自动运行,
     如要想达到你的想法是一定不行了,
     要解决只有下列方法了:
      将2K设为不需用户名自动登录,
      然后将你的“程序 1”设为自启动,让WINDOWS 2K 进入后就运行
      再编一个“程序2”用FindWindow找到它的句柄,
      再FindWindowEx找到密码框的句柄Wnd,
      对它发SendMessage(Wnd,WM_char,asc,0);
      让“程序 1”正常登录数据库系统,
      然后“程序2”再发一条消息将WINDOWS系统锁定&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      你有SPY++ 就可以看到你的“程序 1”的类名或CAPTION
    以及“程序 1”下面的控件子父关系和它们的类名,
    有了类名,就有FindWindowEx调用吧,看看MSDN,DELPHI帮助$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$要么将你的程序发给我,几百K噢,我没用宽带
    [email protected]
      

  6.   

    给你一个思路
    你可以把连接的参数写入注册表。 然后读取就是了。给你一个例子:写入注册表, 然后再读取.
    procedure TForm1.Button1Click(Sender: TObject);  //写入注册表 把访问用户名和密码。 及计算机名称写入注册表 var Reg: TRegistry; 
    begin 
    Reg := TRegistry.Create;
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('SoftWare\MyKey',True);
    Reg.WriteString('User',edtUser.Text);   //用户名
    Reg.WriteString('Password',edtPassword.Text);//密码
    Reg.WriteString('ip',edtip.Text);  //服务器名称,如果是win98则填用计算机名就行了。 也可以直接用函数读取计算机名。存于editp.text;Reg.WriteString('S_User',edit1.Text);
    Reg.WriteString('S_Password',edit2.Text);
    Reg.WriteString('S_ip',edit3.Text);Reg.Free; end;procedure TForm1.button2Click(Sender: TObject);  // 把注册表里的内容读取出来。存放到三个不同变量里头。, 然后把字符串连起来,var Reg: TRegistry; 
    begin 
    Reg := TRegistry.Create;
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('SoftWare\MyKey',True);
    label1.Caption := Reg.ReadString('User');
    label2.Caption := Reg.ReadString('Password');
    label11.Caption := Reg.ReadString('ip');
    label12.Caption:= Reg.ReadString('S_User');
    label13.caption:= Reg.ReadString('S_Password');
    label14.caption:= Reg.ReadString('S_ip');
    Reg.Free; end;procedure TForm1.Button3Click(Sender: TObject);  //获取计算机名称 
    var
    sBuffer: PChar;
    sSize: Cardinal;
    begin
    sSize := 255;
    GetMem(sBuffer, sSize + 1);
    try
    if GetComputerName(sBuffer, sSize) then
    edtip.Text := sBuffer;
    finally
    FreeMem(sBuffer);
    end;
    end;最后把所有变量连接起来。 在form的create事件中调用ADOtable1.ConnectionString:='Provider=SQLOLEDB.1;Password='+b_password+';'+'Persist Security Info=True;User ID='+b_user+';'+'Initial Catalog=POS_MORE;Data Source='+b_ip+';';
    type 
    adotable1.active:=True;
    except
    application.Terminate;
    exit;
    end;这就搞定了。
      

  7.   

    噢,好复杂.不过大概的思路我已经有了.抱歉,我还没着手编呢.
    我刚刚试了一下findwindow,能找到窗口句柄.但用findwindowex没有找到edit的句柄,这个能教我一下吗?
    再次谢谢大家,谢谢了.