怎么向程序发送用户名及密码? 你把需要输入的用户名和密码写入注册表,或者是.ini文件里, 在登录的时候读取就是了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用INI是不是会不安全程序最重要是不要有中间过程呀 找到用户EDIT的句柄和密码EDIT的句柄,发WM_SETTEXT消息,就完了,要不染再送一个鼠标单击消息给按钮,这样更简单哦 你自己编一个程序,用FindWindow找到它的句柄,再FindWindowEx找到密码框的句柄Wnd,对它发SendMessage(Wnd,WM_char,asc,0);asc为密码字符的ASC码密码有六个字符就发六次 我用的是2000,进系统时就要输入用户名密码,应该安全.如果程序还要,安全得过份了.我想把帐号密码放在注册表里.用FindWindow,FindWindowEx,SendMessage,就可以了吗?我这就试试.能给我一段找edit句柄的源程序吗?如果还有发消息的源程序就更好了.谢谢大家了. 我知你的意思了, 因为你装的是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] 给你一个思路你可以把连接的参数写入注册表。 然后读取就是了。给你一个例子:写入注册表, 然后再读取.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); //获取计算机名称 varsBuffer: PChar;sSize: Cardinal;beginsSize := 255;GetMem(sBuffer, sSize + 1);tryif GetComputerName(sBuffer, sSize) thenedtip.Text := sBuffer;finallyFreeMem(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;exceptapplication.Terminate;exit;end;这就搞定了。 噢,好复杂.不过大概的思路我已经有了.抱歉,我还没着手编呢.我刚刚试了一下findwindow,能找到窗口句柄.但用findwindowex没有找到edit的句柄,这个能教我一下吗?再次谢谢大家,谢谢了. 远程注入dll时候被注入程序里生成按钮后按钮发生点击事件发生问题 delphi如何得到某个文件夹下的文件列表? Form销毁自己的问题 在NT服务中,如何得到服务程序所在的路径? 如何将数据写入已做好格式的Excel报表中 如何让Webbrowser的窗口大小不受网页代码控制? 请教如何实现cxDateEdit控件只能通过下拉框选择日期,无法再编辑框输入日期 如何攻击中国程序员网站? 查询中的大小些问题 送分,关于类关系 向高手求购,在dbgrid中要实现的一个功能???? 菜菜鸟的小问题。
程序最重要是不要有中间过程呀
再FindWindowEx找到密码框的句柄Wnd,
对它发SendMessage(Wnd,WM_char,asc,0);
asc为密码字符的ASC码
密码有六个字符就发六次
用FindWindow,FindWindowEx,SendMessage,就可以了吗?我这就试试.
能给我一段找edit句柄的源程序吗?
如果还有发消息的源程序就更好了.
谢谢大家了.
因为你装的是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]
你可以把连接的参数写入注册表。 然后读取就是了。给你一个例子:写入注册表, 然后再读取.
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;这就搞定了。
我刚刚试了一下findwindow,能找到窗口句柄.但用findwindowex没有找到edit的句柄,这个能教我一下吗?
再次谢谢大家,谢谢了.