📄 dialerform.~pa
字号:
unit DialerForm;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, IniFiles, Dialogs, WinTypes, WinProcs, Messages;
type
TComPort = (dpCOM1,dpCOM2,dpCOM3,dpCOM4);
TfrmDialer = class(TForm)
btnOK: TButton;
btnCancel: TButton;
Label1: TLabel;
btnSetup: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure btnSetupClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
FComPort : TComPort;
FNumberToDial: string;
FNameToDial: string;
public
property NumberToDial : string read FNumberToDial write FNumberToDial;
property NameToDial : string read FNameToDial write FNameToDial;
end;
var
frmDialer: TfrmDialer;
implementation
uses DialerSetupForm;
{$R *.DFM}
procedure TfrmDialer.FormClose(Sender: TObject; var Action: TCloseAction);
begin
btnOK.setfocus;
end;
procedure TfrmDialer.FormShow(Sender: TObject);
begin
label1.caption := 'Phone ' + '''' + FNameToDial + '''' + #13 + 'at ' + FNumberToDial;
end;
procedure TfrmDialer.btnSetupClick(Sender: TObject);
begin
application.createform (TfrmDialerSetup,frmDialerSetup);
frmDialerSetup.ShowModal;
end;
procedure TfrmDialer.btnOKClick(Sender: TObject);
var
s : string;
hCommFile : THandle;
Status : LongBool;
NumberWritten : DWORD;
BS1ini: TIniFile;
strPort: string;
begin
if FNumberToDial = '' then exit;
BS1Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'BS1.ini'); //Get port (override previous property).
strPort := BS1Ini.ReadString('General', 'DialerPort', 'com1');
BS1Ini.Free;
if strPort = 'com1' then FComPort:=dpCom1
else if strPort = 'com2' then FComPort:=dpCom2
else if strPort = 'com3' then FComPort:=dpCom3
else if strPort = 'com4' then FComPort:=dpCom4;
s:='COM'+Chr(49+Ord(FComPort)); //Open Com Port.
hCommFile:= CreateFile( PChar(s), GENERIC_WRITE,
0, {not shared}
nil, {no security ??}
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0 {template} );
if hCommFile=INVALID_HANDLE_VALUE then begin
MessageDlg('Unable to open '+s,mtError,[mbOk], 0);
Exit;
end;
s:='ATDT'+FNumberToDial+#13+#10; //Create a string to send to modem.
NumberWritten:=0; //Send phone number to modem.
Status:=WriteFile( hCommFile,PChar(s)[0],
Length(s),
NumberWritten,
nil);
if Status then begin
Self.Hide;
MessageDlg('Pick up the phone.' + #13 + 'Click OK after dialing has completed.',mtInformation,[mbOk], 0);
WriteFile(hCommFile,'ATH'^M^J,5,NumberWritten,nil);
end else MessageDlg('Unable to dial number.',mtError,[mbOk], 0);
CloseHandle(hCommFile); //Close communication port.
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -