社区
网络通信/分布式开发
帖子详情
高分求救
laocaomail
2003-10-18 10:24:15
怎样用DELPHI建立拨号器?
...全文
37
7
打赏
收藏
高分求救
怎样用DELPHI建立拨号器?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
很土
2003-10-19
打赏
举报
回复
楼上的都说了, 其实很简单的.
pankun
2003-10-19
打赏
举报
回复
电话拨号
1。创建新的拨号连接。
参数:
hwn PROCEDURE TForm1.button1click(Sender:TObject);
VAR dwhandle:word;
aaa:integer;
begin
aaa:=getactivewindow();
dwResult:=RasCreatePhonebookEntryA(handle,'');
或DWresult:=RasCreatePhonebookEntryA(aaa,'');
if dwResult=0 then
memo1.lines.add('新建拨号连接成功!')
ELSE
memo1.lines.add('新建拨号连接失败!')
end;
2.修改指定拨号连接的属性。
Function RasEditPhonebookEntryA(hwnd:Thandle;lpszPhonebook:pchar;lpszEntryName:pchar):Dword;
stdcall; {位于Interface的USES 下 TYPE。。。end 之外}
lpszEntryName(pchar):要修改的拨号连接的名称,如‘163’,‘169’等。
函数返回值:0表示成功,否则为错误。
例:PROcedure TForm1.button2click(Sender:TObject);
如上。
3.获取当前系统中可用的拨号连接名称.。
在建立了拨号连接后,WIN9X将拨号连接的名称和属性写了注册表中,我们可以从注册表中可用的拨号连接名称
及InterNet Explorer中的默认连接名称。
在注册表的HKEY_USERS.DEFAULT下,列出了已经在拨号网络中建立的拨号连接
的名称及其属性设置,其中各项目的名称即为可用的拨号连接的名称;各项目的值即为各连接的属性设置.
如果在InterNet Explorer 中设置了默认连接名称(Internet 选项=>>连接=>>设置=>>使用以下拨号网络连接)
则在注册表的HKEY_USERS.Default下,有一个字符串类型的键值,键值名InternetProfile,其值
即为Internet Explorer中设置的默认连接名称.
{在Uses中增加Registry单元,用于操作注册表}
procedure TForm1.button3click(Sender:TObject);
var
registrytemp:TRegistry;
stringtemp:TStringlist;
intindex:integer;
begin
registrytemp:=TRegistry.Create;
stringTemp:=Tstringlist.Create;
with registryTemp DO
BEGIN
RootKey:=HKEY_USERS; //根键置为HKEY_USERS
//如果存在于子键.Default
if OpenKey('.Default',false) then
getValueNames(stringsTemp); //读出各项目的名称,即拨号连接名称
closekey;
end;
memo1.lines.add( '************当前系统中有'+IntTostr(stringsTemp.count)'
+'各可用的拨号连接如下******');
for intindex:=0 to stringsTemp.count-1 do
memo1.lines.add(stringstemp.strings[intindex]); //列出Internet explorer中默认连接名称.
if registrytemp.Openkey('.Default',false') then
mome1.lines.add('Internet explorer中默认连接名称为'+Registry.readstring('InternetProfile'));
//释放内存
RegistryTemp.free;
StringsTemp.free;
end;
4.用指定的拨号连接拨号
winexec('rundll32.exe rnaui.dll,RnaDial 163',SW_SHOWNORMAL);
其中字符串中的最后一个参数'163'为拨号连接的名称.
Procedure TForm1.botton4click(Sender:TObject);
var
strDiaName:string;
begin
strDiaName:='163';
memo1.lines.add('*****用拨号连接'+strDiaName+'实现拨号上网******');
winexec('rundll32.exe rnaui.dll,RnaDial 163',SW_SHOWNORMAL);
end;
end;
用以下API函数:(代码为VB)
'AutoDial是一个使用Tapi函数拨号的范例
'
Option Explicit
Private Declare Function tapiRequestMakeCall& Lib "TAPI32.DLL" (ByVal DestAddress$, ByVal AppName$, ByVal CalledParty$, ByVal Comment$)
Private Const TAPIERR_NOREQUESTRECIPIENT = -2&
Private Const TAPIERR_REQUESTQUEUEFULL = -3&
Private Const TAPIERR_INVALDESTADDRESS = -4&
Private Sub cmdDial_Click()
Dim buff As String
Dim nResult As Long
‘在此拨号
nResult = tapiRequestMakeCall&(Trim$(txtNumber), CStr(Caption), "Test Dial", "")
If nResult <> 0 Then
buff = "Error dialing number : "
Select Case nResult
Case TAPIERR_NOREQUESTRECIPIENT
buff = buff & "No Windows Telephony dialing application is running and none could be started."
Case TAPIERR_REQUESTQUEUEFULL
buff = buff & "The queue of pending Windows Telephony dialing requests is full."
Case TAPIERR_INVALDESTADDRESS
buff = buff & "The phone number is not valid."
Case Else
buff = buff & "Unknown error."
End Select
MsgBox buff
End If
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub Form_Load()
Move (Screen.Width - Width) 2, (Screen.Height - Height) 2
EnableDial
End Sub
Private Sub txtNumber_Change()
EnableDial
End Sub
Private Sub EnableDial()
cmdDial.Enabled = Len(Trim$(txtNumber)) > 0
End Sub
Tapi的拨号功能和通话工能是最强的,但也比较繁。
不过如果只是拨号,那么用tapiRequestMakeCall()是非常方便的!
当然,如过要进行更复杂的组合拨号和电话控制就要涉及更复杂的tapi函数,如lineMakCall()
lineDial()和消息处理
详见msdn
pankun
2003-10-19
打赏
举报
回复
转:
DELPHI中如何调用拨号函数
A: 可以执行下面的语句:
winexec('rundll32.exe rnaui.dll,RnaDial '+'我的连接',9),其中我的连接为拨号网络中的名字。
另外,如果需要写电话拨号方面的程序,可以参照以下程序代码。注意:调试以下程序需要ras单元,还要加入一个私有变量dialparams: TRasDialParams;
1.得到机器的调制解调器列表
var
buffer: Pointer;
devices: LPRasDevInfo;
devSize, ndevs: Integer;
begin
devSize := 0;
ndevs := 0;
if RasEnumDevices(nil, devSize, ndevs) <> ERROR_BUFFER_TOO_SMALL then
ShowMessage('RasEnumDevices failed.');
buffer := AllocMem(devSize);
try
devices := buffer;
devices^.dwSize := SizeOf(TRasDevInfo);
if RasEnumDevices(buffer, devSize, ndevs) = 0 then
begin
while ndevs > 0 do
begin
cbo_Device.Items.Add(Format('%s=%s', [devices^.szDeviceName, devices^.szDeviceType]));
Inc(devices);
Dec(ndevs);
end;
end
else
ShowMessage('RasEnumDevices failed.');
finally
FreeMem(buffer);
end;
end;
2.如何拨号
var
r: integer;
c: Array[0..100] of Char;
hRas: THRasConn;
begin
Screen.Cursor := crHourglass;
FillChar(dialparams, SizeOf(TRasDialParams), 0);
with dialparams do
begin
dwSize := Sizeof(TRasDialParams);
//StrPCopy(szEntryName, lstEntrys.Items[lstEntrys.ItemIndex]);
StrPCopy(szUserName, edt_User.Text);//改变用户名
StrPCopy(szPassword, edt_Password.Text+'1234');//改变密码
StrPCopy(szPhoneNumber,edt_phone.Text);//改变电话号码
end;
hRas := 0;
r := RasDial(nil, nil,dialparams,0,nil,hRas);
if r <> 0 then
begin
RasGetErrorString(r, c, 100);
ShowMessage('错误: ' + c);
end;
Screen.Cursor := crDefault;
注意你要有RAS.pas unit
pankun
2003-10-19
打赏
举报
回复
是建立拨号,还是调用拨号?
chinawzg
2003-10-19
打赏
举报
回复
直接调用RAS 的函数,就可以了
hthunter
2003-10-18
打赏
举报
回复
你说的拨号器指的是什么?直接调用Windows的拨号程序能满足要求不?
laocaomail
2003-10-18
打赏
举报
回复
各位大侠,帮帮忙!!!
软考高项论文50分秘籍——心法篇
讲师以52分和53分通过论文,2次
高分
通过,方法论经得起考验
access大量数据迁移到mysql,
高分
求救
(access数据迁移到mysql有关问题)
当前位置:我的异常网» J2EE»
高分
求救
(access数据迁移到mysql有关问题)
高分
求救
(access数据迁移到mysql有关问题)www.myexceptions.net网友分享于:2013-01-25浏览:22次
高分
求救
(access数据迁移到mysql问题)需要把...
用过TWEBBROWSER的请进来,
高分
求救
用过TWEBBROWSER的请进来,
高分
求救
VCL组件开发及应用http://www.delphi2007.net/DelphiVCL/html/delphi_20061222111048196.html 用TWEBBROWSER做了一个浏览器,调用本机的两个网页文件 ...
高分
求救
,微软屏传开源的项目,里面也有屏传的代码,是用C#实现的。
高分
求救
微软屏传开源的项目,里面也有屏传的代码,是用C#实现的,这个项目叫什么啊
java数据库插入冒号_
高分
求救
,请问各高手怎么把下面的值,读入access数据库,下面冒号前面的为字段名,后面为对应的值?...
收录日期:2021/02/27 07:58:00 时间:2016/05/21 14:42:15 标签:Web 开发请问各高手怎么把下面的值,读入access数据库,下面冒号前面的为字段名,后面为对应的值?要做到有分行一定要把分行也一起读入数据库,请教...
网络通信/分布式开发
1,593
社区成员
32,963
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章