RasHangup问题?(200分)

  • 主题发起人 主题发起人 zheng
  • 开始时间 开始时间
Z

zheng

Unregistered / Unconfirmed
GUEST, unregistred user!
用RasHangup(句柄)切断拨号连接,但如果拨号连接不是自己程序用RasDail()拨的号,<br>句柄为空,不能切断拨号连接,怎样才能实现,用win98系统的拨号网络拨号,用自己<br>程序来切断拨号连接?
 
用RasEnumConnections可以获得所有活动连接,返回的结构里包含句柄,<br>用这个句柄调用RasHangUp即可。
 
对不起,这个我已经知道了,200分太冤啦,不过有另外一个问题,<br>我用自己的拨号程序上网之后,Win98总是将我的密码自动保存,<br>“拨号网络”就有到密码,我的密码将泄密,可能被黑客知道,怎样<br>才能使用Win32API拨号,而Win98没有将密码自动保存?谁答就给谁!!<br>
 
Win98将拨号密码保存在哪?怎样才能正确读取?(有没有加密?)怎样删除?
 
用RasSetEntryDialParams设置相应的拨号设置,就可以删除password,<br>(其中第三个参数专门用来干这个)<br><br>你要是再“我已经知道了”,就别指望我再回答你的问题了。<br>
 
温柔一刀:<br>兄弟,对不起,不要生气!你别以为我是来骗的!!<br>这次一定给分你,不过能否把RasSetEntryDialParams的参数,及删除密码的发法,<br>仔细一点给我说,只要一点就行???
 
你就是不答我也给分你!
 
&gt;&gt;你就是不答我也给分你!<br>那太好了,还等什么呢?<br>另:你是广东人吗? 哈哈哈...<br><br>&gt;&gt;你别以为我是来骗的!!<br>我没有啊!我说话向来这样的,不要太在意。<br><br>unit Unit1;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; StdCtrls;<br><br>Const<br>&nbsp; UNLEN = 256;<br>&nbsp; PWLEN = 256;<br>&nbsp; DNLEN = 15;<br>&nbsp; RAS_MaxEntryName &nbsp; = &nbsp;256;<br>&nbsp; RAS_MaxPhoneNumber = 128;<br>&nbsp; RAS_MaxCallbackNumber = &nbsp;RAS_MaxPhoneNumber;<br><br>type<br>&nbsp; TRASDialParams = Record<br> dwSize: DWORD;<br> szEntryName: Array[0..RAS_MaxEntryName] Of Char;<br> szPhoneNumber: Array[0..RAS_MaxPhoneNumber] Of Char;<br> szCallbackNumber: Array[0..RAS_MaxCallbackNumber] Of Char;<br> szUserName: Array[0..UNLEN] Of Char;<br> szPassword: Array[0..PWLEN] Of Char;<br> szDomain: Array[0..DNLEN] Of Char;<br>&nbsp; end;<br><br>TForm1 = class(TForm)<br>&nbsp; &nbsp; Button1: TButton;<br>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; &nbsp;EntryName:string;<br>&nbsp; &nbsp;RASDialParams:TRASDialParams;<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>function RasGetEntryDialParams ( &nbsp;// ANGUS<br> lpszPhonebook:PChar; // pointer to the full path and filename of the phonebook file<br> var lprasdialparams: TRASDIALPARAMS; // pointer to a structure that contains the connection parameters<br> fRemovePassword: BOOL // // indicates whether to remove password from entry's parameters<br> ): DWORD; stdcall;<br><br>function RasSetEntryDialParams ( &nbsp;// ANGUS<br> lpszPhonebook:PChar; // pointer to the full path and filename of the phonebook file<br> var lprasdialparams: TRASDIALPARAMS; // pointer to a structure that contains the connection parameters<br> fRemovePassword: BOOL // // indicates whether to remove password from entry's parameters<br> ): DWORD; stdcall;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>function RasSetEntryDialParams; external 'RASAPI32.DLL' name 'RasSetEntryDialParamsA';<br>function RasgetEntryDialParams; external 'RASAPI32.DLL' name 'RasGetEntryDialParamsA';<br>{$R *.DFM}<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; &nbsp;hr:DWORD;<br>&nbsp; &nbsp;passwd:LongBool;<br>begin<br>&nbsp; &nbsp; &nbsp;fillChar(RASDialParams,SizeOf(RASDialParams),#0);<br>&nbsp; &nbsp; &nbsp;RASDialParams.dwSize:=SizeOf(TRASDialParams);<br>&nbsp; &nbsp; &nbsp;EntryName:='169';<br>&nbsp; &nbsp; &nbsp;StrLCopy(RASDialParams.szEntryName,pchar(EntryName),RAS_MaxEntryName);<br>&nbsp; &nbsp; &nbsp;hr:=RasGetEntryDialParams (nil, RASDialParams, passwd);<br>&nbsp; &nbsp; &nbsp;if hr&gt;0 then exit;<br>&nbsp; &nbsp; &nbsp;hr:=RasSetEntryDialParams (nil, RASDialParams, true);<br>end;<br><br>end.<br><br>由于RasSetEntryDialParams会覆盖你的设置,因此必须把原来的设置用<br>RasGetEntryDialParams读出来,再写回去,大致如此吧。<br>
 
刀哥:<br>谢谢,你的刀真锋利!!!<br>我已把分给你啦。不过另外问个问题:<br>你知不知道“Win98将拨号密码保存在哪?怎样才能正确读取?(有没有加密?)”<br>你答不答都无所谓啦!我都是谢谢啦,真不好意思!!
 
保存在.pwl文件里,有加密,但仍然能读,软件和源代码遍地都是,<br>在大富翁里搜索一下也有。
 
刀兄:<br>&nbsp; 你为何知道我是广东人?你从什么地方看出?我是潮州人,你是那里人?<br>&nbsp; 你的刀有多长?有没“杀”过人(开玩笑)?<br>&nbsp; 你的程序有错:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; &nbsp;hr:DWORD;<br>&nbsp; &nbsp;passwd:LongBool;<br>begin<br>&nbsp; &nbsp; &nbsp;fillChar(RASDialParams,SizeOf(RASDialParams),#0);<br>&nbsp; &nbsp; &nbsp;RASDialParams.dwSize:=SizeOf(TRASDialParams);<br>&nbsp; &nbsp; &nbsp;EntryName:='169';<br>&nbsp; &nbsp; &nbsp;StrLCopy(RASDialParams.szEntryName,pchar(EntryName),RAS_MaxEntryName);<br>&nbsp; &nbsp; &nbsp;hr:=RasGetEntryDialParams (nil, RASDialParams, passwd);<br>&nbsp; &nbsp; &nbsp;if hr&gt;0 then exit;<br>&nbsp; &nbsp; &nbsp;hr:=RasSetEntryDialParams (nil, RASDialParams, true);<br>end;<br>1、passwd没有赋值,我看直接RasGetEntryDialParams (nil, RASDialParams, false)就行<br>2、不知道为什么用RasGetEntryDialParams()是不能将拨号连接的“用户名”等读出,<br>&nbsp; &nbsp;RASDialParams.szUserName总是为空,喔不对!不对!是RasGetEntryDialParams()调用<br>&nbsp; &nbsp;出错,返回值不等于0。<br>3、我自己的(错):var RasDialParams : TRasDialParams;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FillChar(RasDialParams, SizeOf(TRasDialParams), #0);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RasDialParams.dwSize := SizeOf(TRasDialParams);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StrPCopy(RasDialParams.szEntryName, Str);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RasGetEntryDialParams(nil, RasDialParams, False);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Edit1.Text := RasDialParams.szPhoneNumber;<br>
 
&gt;&gt;1、passwd没有赋值,我看直接RasGetEntryDialParams (nil, RASDialParams, false)就行<br>错!passwd是返回值,你如果用false肯定完蛋。<br>&gt;&gt;2、是RasGetEntryDialParams()调用 &nbsp; 出错,返回值不等于0。<br>我不知道,我实验都正确,可以告诉我返回值是多少。(如果是上一个问题引起的,你活该!:-))<br><br>温柔一刀之锋利并不只体现在delphi上,察言观色也是很厉害的哟!<br>具体是那句话泄漏天机,你自己想想? :-)
 
第三个参数又不是Var型的,怎么能返回呢,用你上面的就出现异常
 
告诉我错误返回值是多少!!<br><br>(我用winNT 4.0+D5,没问题)
 
我查了Win32 Api才知道你给我的函数定义错了,应该是:<br>function RasGetEntryDialParams(lpszPhoneBook: PAnsiChar; var lpRasDialParams:<br>&nbsp;TRasDialParams; var lpfPassword: LongBool): Longint; stdcall;<br>&nbsp;external 'rasapi32.dll' name 'RasGetEntryDialParamsA';<br>lpfPassword参数是Var型的,就是因为这里错,导致函数调用失败!<br>(Delphi3.0)
 
大概是这样吧 :-),我疏忽了,总之最后一个参数肯定是输出参数,<br>我也没仔细想为什么没写成var,不好意思。<br><br>另:我是从“你就是不答我也给分你!”猜出你是广东人的,“给分你”这种“语法”<br>只有广东人这样说,我有很多广东同学。怎么样,够锋利吧 :-)<br>
 
&gt;另:我是从“你就是不答我也给分你!”猜出你是广东人的,“给分你”这种“语法”<br>&gt;只有广东人这样说,我有很多广东同学。怎么样,够锋利吧 :-)<br><br>我是特地这样写的,并不是因为是广东人才怎样写,而且我也知道“给分你”的语法<br>有问题,这个我在广州读书时就知道,我们潮州人的语法与北方人差不多,根珠江三角洲<br>不同!<br>
 
&gt;&gt;我是特地这样写的,并不是因为是广东人才怎样写<br><br>对呀,如果你不是广东人,可能根本不会想到这种语法,<br>因此还是证明了... :-)<br><br>我大学有两个同学是广东人,一个潮州,一个阳江,<br>因此对广东话非常了解,我知道潮州话实际上和汕头话更接近(潮汕嘛!),<br>和“珠江三角洲”没什么共同之处。<br><br>ps:我们这样聊天真累,呵呵...
 
你在回答左轻侯的问题“在W2k下如何获得拨号网络的连接速度?”中,看情形你对拨号网络<br>相关内容很熟悉,请问在WIN9X下如何获得拨号网络的连接速度,以及“收到的字节数”和<br>“发送的字节数”;还有能否将WIN系统的拨号网络的图标从系统托盘中隐藏,<br>你如果想拿分,就到“温柔一刀请进来拿分”帖子中来取。给你预备了150分,如果嫌少可以<br>再商量。
 
大富翁的邮件通知又坏了,我看了你那个贴子后,<br>查询已答问题才看到你又在这里加贴,不好意思。<br><br>看看这个你就全明白了,不好意思“骗”了你很多分数,呵呵<br>http://www.delphibbs.com/delphi/attachments/rascomp1.zip<br>(当然,左轻侯的问题不包括在内。)
 
后退
顶部