var hCommFile : THandle;procedure TForm1.Button1Click(Sender: TObject); var PhoneNumber : string; CommPort : string; NumberWritten : LongInt; begin PhoneNumber := 'ATDT 1-555-555-1212' + #13 + #10; CommPort := 'COM2'; {Open the comm port} hCommFile := CreateFile(PChar(CommPort), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if hCommFile=INVALID_HANDLE_VALUE then begin ShowMessage('Unable to open '+ CommPort); exit; end; {Dial the phone} NumberWritten:=0; if WriteFile(hCommFile, PChar(PhoneNumber)^, Length(PhoneNumber), NumberWritten, nil) = false then begin ShowMessage('Unable to write to ' + CommPort); end; end;procedure TForm1.Button2Click(Sender: TObject); begin {Close the port} CloseHandle(hCommFile); end;
拨号控件: unit Dialer;interfaceuses 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;implementationprocedure 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;
hCommFile : THandle;procedure TForm1.Button1Click(Sender: TObject);
var
PhoneNumber : string;
CommPort : string;
NumberWritten : LongInt;
begin
PhoneNumber := 'ATDT 1-555-555-1212' + #13 + #10;
CommPort := 'COM2';
{Open the comm port}
hCommFile := CreateFile(PChar(CommPort),
GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hCommFile=INVALID_HANDLE_VALUE then
begin
ShowMessage('Unable to open '+ CommPort);
exit;
end; {Dial the phone}
NumberWritten:=0;
if WriteFile(hCommFile,
PChar(PhoneNumber)^,
Length(PhoneNumber),
NumberWritten,
nil) = false then begin
ShowMessage('Unable to write to ' + CommPort);
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
{Close the port}
CloseHandle(hCommFile);
end;
unit Dialer;interfaceuses
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;implementationprocedure 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;
你要这是不是这个?
OpenComm
CloseComm
WriteComm
有新的吗?
能否给我一个ras api
[email protected] 谢谢