求DELPHI5.0拨号程序代码

小K-最佳损友 2003-09-03 04:08:44
不是直接调用WINDOWS拨号界面,利用传入值进行连接

谢谢各位大虾 sybase@vip.sina.com 第一名调试成功,立即散分!!!
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小K-最佳损友 2003-09-03
  • 打赏
  • 举报
回复
我自己解决了,放分
zjqyb 2003-09-03
  • 打赏
  • 举报
回复
编译应该可以
小K-最佳损友 2003-09-03
  • 打赏
  • 举报
回复
小弟不才,请问楼上第一位^HRASConn未能够识别,我该怎么办啊?

留下你的QQ好吗?方便我联系你
fhuibo 2003-09-03
  • 打赏
  • 举报
回复
一个简单的拨号控件
unit Dialer;
interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs;

type

TComPort = (dpCOM1,dpCOM2,dpCOM3,dpCOM4);

TMethod = (dmTone,dmPulse);

TDialer = class(TComponent)

private

{ Private declarations }

FComPort : TComPort;

FNumberToDial : string;

FConfirm : boolean;

FMethod : TMethod;

protected

{ Protected declarations }

public

{ Public declarations }

procedure Execute;

published

property ComPort : TComPort read FComPort

write FComPort;

property Confirm : boolean read FConfirm

write FConfirm;

property Method : TMethod read FMethod

write FMethod;

property NumberToDial : string read FNumberToDial

write FNumberToDial;

{ Published declarations }

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('Samples', [TDialer]);

end;

procedure TDialer.Execute;

var

s : string;

CId : Integer;

Status : Integer;

Buf : array[1..32] of Char;

begin

if FConfirm then

begin

if MessageDlg('About to dial the number '+FNumberToDial+'. Are you sure?',

mtConfirmation, [mbYes,mbNo], 0)=mrNo then Exit;

end;

{Create a string to send to modem}

s:=Concat('ATDT',FNumberToDial,^M^J);

if FMethod=dmPulse then s[4]:='P';

{Open Com Port}

StrPCopy(@Buf,'COM ');

Buf[4]:=Chr(49+Ord(FComPort));

CId:=OpenComm(@Buf,512,512);

if CId<0 then

begin

MessageDlg('Unable to open '+StrPas(@Buf),mtError,

[mbOk], 0);

Exit;

end;

{Send phone number to modem}

StrPCopy(@Buf,s);

Status:=WriteComm(CId,@Buf,StrLen(@Buf));

if Status>=0 then

begin

MessageDlg('Pick up the phone',mtInformation,

[mbOk], 0);

WriteComm(CId,'ATH'^M^J,5);

end

else

MessageDlg('Unable to dial number',mtError,

[mbOk], 0);

{Close communication port}

CloseComm(CId);

end;

end.

使用举例:

procedure TForm1.Button1Click(Sender: TObject);

var

TempDialer : TDialer;

begin

TempDialer:=TDialer.Create(Self);

with TempDialer do

begin

ComPort:=dpCom4;

Confirm:=true;

Method:=dmTone;

NumberToDial:='1(222)333-4444';

Execute;

Free;

end;

end;
cgh1970 2003-09-03
  • 打赏
  • 举报
回复
我有老外写的原代码,留下你的信箱,我发给你。
zjqyb 2003-09-03
  • 打赏
  • 举报
回复

Unit ras_api;

Interface
uses windows;

Const
UNLEN = 256;
PWLEN = 256;
DNLEN = 15;
RAS_MaxEntryName = 256;
RAS_MaxDeviceName = 128;
RAS_MaxDeviceType = 16;

RAS_MaxPhoneNumber = 128;
RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;


PHRASConn = ^HRASConn;
HRASConn = DWORD;

const
RASDialEvent = 'RASDialEvent';
WM_RASDialEvent = $0CCCD;
{ Enumerates intermediate states to a Connection. (See RasDial) }
RASCS_Paused = $1000;
RASCS_Done = $2000;

RASBase = 600;
Success = 0;

Const
RASCS_OpenPort = 0;
RASCS_PortOpened = 1;
RASCS_ConnectDevice = 2;
RASCS_DeviceConnected = 3;
RASCS_AllDevicesConnected = 4;
RASCS_Authenticate = 5;
RASCS_AuthNotify = 6;
RASCS_AuthRetry = 7;
RASCS_AuthCallback = 8;
RASCS_AuthChangePassword = 9;
RASCS_AuthProject = 10;
RASCS_AuthLinkSpeed = 11;
RASCS_AuthAck = 12;
RASCS_ReAuthenticate = 13;
RASCS_Authenticated = 14;
RASCS_PrepareForCallback = 15;
RASCS_WaitForModemReset = 16;
RASCS_WaitForCallback = 17;

RASCS_Interactive = RASCS_Paused;
RASCS_RetryAuthentication = RASCS_Paused + 1;
RASCS_CallbackSetByCaller = RASCS_Paused + 2;
RASCS_PasswordExpired = RASCS_Paused + 3;

RASCS_Connected = RASCS_Done;
RASCS_DisConnected = RASCS_Done + 1;

Type
{ Identifies an active RAS Connection. (See RasConnectEnum) }
PRASConn = ^TRASConn;
TRASConn = record
dwSize: DWORD;
rasConn: HRASConn;
szEntryName: Array[0..RAS_MaxEntryName] Of Char;
szDeviceType : Array[0..RAS_MaxDeviceType] Of Char;
szDeviceName : Array [0..RAS_MaxDeviceName] of char;
end;

PRASConnStatus = ^TRASConnStatus;
TRASConnStatus = Record
dwSize: LongInt;
rasConnstate: Word;
dwError: LongInt;
szDeviceType: Array[0..RAS_MaxDeviceType] Of Char;
szDeviceName: Array[0..RAS_MaxDeviceName] Of Char;
End;

PRASDIALEXTENSIONS= ^TRASDIALEXTENSIONS;
TRASDIALEXTENSIONS= Record
dwSize: DWORD;
dwfOptions: DWORD;
hwndParent: HWnd;
reserved: DWORD;
end;

PRASDialParams = ^TRASDialParams;
TRASDialParams = Record
dwSize: DWORD;
szEntryName: Array[0..RAS_MaxEntryName] Of Char;
szPhoneNumber: Array[0..RAS_MaxPhoneNumber] Of Char;
szCallbackNumber: Array[0..RAS_MaxCallbackNumber] Of Char;
szUserName: Array[0..UNLEN] Of Char;
szPassword: Array[0..PWLEN] Of Char;
szDomain: Array[0..DNLEN] Of Char;
end;

PRASEntryName = ^TRASEntryName;
TRASEntryName = Record
dwSize: LongInt;
szEntryName: Array[0..RAS_MaxEntryName] Of Char;
// Reserved: Byte;
End;


Function RasDial(
lpRasDialExtensions : PRASDIALEXTENSIONS ; // pointer to function extensions data
lpszPhonebook: PChar; // pointer to full path and filename of phonebook file
lpRasDialParams : PRASDIALPARAMS; // pointer to calling parameters data
dwNotifierType : DWORD; // specifies type of RasDial event handler
lpvNotifier: DWORD; // specifies a handler for RasDial events
var rasConn: HRASConn // pointer to variable to receive connection handle
): DWORD; stdcall;

function RasEnumConnections(RASConn: PrasConn; { buffer to receive Connections data }
var BufSize: DWord; { size in bytes of buffer }
var Connections: DWord { number of Connections written to buffer }
): LongInt; stdcall;

Function RasEnumEntries (
reserved: PChar; // reserved, must be NULL
lpszPhonebook: PChar ; // pointer to full path and filename of phonebook file
lprasentryname: PRASENTRYNAME ; // buffer to receive phonebook entries
var lpcb : DWORD;// size in bytes of buffer
var lpcEntries : DWORD// number of entries written to buffer
) : DWORD; stdcall;

function RasGetConnectStatus(RASConn: hrasConn; { handle to Remote Access Connection of interest }
RASConnStatus: PRASConnStatus { buffer to receive status data }
): LongInt; stdcall;

function RasGetErrorString(ErrorCode: DWord; { error code to get string for }
szErrorString: PChar; { buffer to hold error string }
BufSize: DWord { sizeof buffer }
): LongInt; stdcall;

function RasHangUp(RASConn: hrasConn { handle to the Remote Access Connection to hang up }
): LongInt; stdcall;

function RasGetEntryDialParams(
lpszPhonebook:PChar; // pointer to the full path and filename of the phonebook file
VAR lprasdialparams:TRASDIALPARAMS; // pointer to a structure that receives the connection parameters
VAR lpfPassword : BOOL // indicates whether the user's password was retrieved
): DWORD; stdcall;

implementation

const
RAS_DLL = 'RASAPI32.DLL';

function RasDial; external RAS_DLL name 'RasDialA';
function RasEnumConnections; external RAS_DLL name 'RasEnumConnectionsA';
function RasEnumEntries; external RAS_DLL name 'RasEnumEntriesA';
function RasGetConnectStatus; external RAS_DLL name 'RasGetConnectStatusA';
function RasGetErrorString; external RAS_DLL name 'RasGetErrorStringA';
function RasHangUp; external RAS_DLL name 'RasHangUpA';
function RasGetEntryDialParams; external RAS_DLL name 'RasGetEntryDialParamsA';
end.

//win98 passed
function Mydialup(const pppuser,ppppasswd,telno:string) :boolean;
var
dialpara:TRASDialParams;
begin
try
fillchar(dialpara,sizeof(dialpara),#0);
with dialpara do
begin
dwSize:=sizeof(TRASDialParams);
strcopy(szPhoneNumber,pchar(telno));
szCallbackNumber:='';
strcopy(szUserName,pchar(pppuser));
strcopy(szPassword,pchar(ppppasswd));
szDomain:='';
rashandle:=0;
result:=RasDial(nil,'',@dialpara,$FFFFFFFF,0,rashandle)=0;
end;
except
result:=false;
end;
end;
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧