⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 该源代码是有关modem 拨号
💻 PAS
字号:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, registry, TAPILine;

const
  CM_DIAL=WM_USER+1;

type
  TformMain = class(TForm)
    TAPILine: TTAPILine;
    Label1: TLabel;
    Label2: TLabel;
    PhoneNumber: TEdit;
    SelectedLine: TComboBox;
    Bevel1: TBevel;
    DialButton: TBitBtn;
    PhoneImage: TImage;
    procedure FormCreate(Sender: TObject);
    procedure TAPILineDropCall(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DialButtonClick(Sender: TObject);
    procedure SelectedLineChange(Sender: TObject);
  private
    { Private declarations }
    WasParam: boolean;
    procedure Dial(Var Message: TMessage); message CM_DIAL;
  public
    { Public declarations }
    Procedure ReadSettings;
    Procedure WriteSettings;
  end;

var
  formMain: TformMain;
  AppName: string;

implementation

{$R *.DFM}

procedure TformMain.FormCreate(Sender: TObject);
Var
  i: integer;
  s: string;
begin
  AppName:='PFDialer 1.03';
  Caption:=AppName;
  TAPILine.FillTAPILine(SelectedLine.Items);
  ReadSettings;

  // to draw Modem icon
  SelectedLineChange(nil);

  // take program parametrs:
  // AutoDialer /Dial:7179328
  WasParam:=False;
  for i:=0 to ParamCount do
  Begin
    s:=ParamStr(i);
    if Pos('/DIAL:', UpperCase(ParamStr(i)))<>0 Then
    Begin
      WasParam:=True;
      PhoneNumber.Text:=Copy(s, Pos(':', s)+1, Length(s));
      PostMessage(handle, CM_DIAL, 0, 0);
    End;
  End;
end;

procedure TformMain.TAPILineDropCall(Sender: TObject);
begin
  TAPILine.Close;
end;

procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WriteSettings;
end;

Procedure TformMain.ReadSettings;
Var
  RegKey: TRegistry;
Begin
  RegKey := TRegistry.Create;
  RegKey.RootKey := HKEY_LOCAL_MACHINE;
  RegKey.OpenKey('Software', True);
  RegKey.OpenKey('PROFOUND', True);
  RegKey.OpenKey('AutoDialer', True);

  if RegKey.ValueExists('SelectedLine') then
    SelectedLine.ItemIndex:=SelectedLine.Items.IndexOf(RegKey.ReadString('SelectedLine'));
  if RegKey.ValueExists('PhoneNumber') then
    PhoneNumber.Text:=RegKey.ReadString('PhoneNumber');

  RegKey.CloseKey;
  RegKey.Free;
End;

Procedure TformMain.WriteSettings;
Var
  RegKey: TRegistry;
Begin
  RegKey := TRegistry.Create;
  RegKey.RootKey := HKEY_LOCAL_MACHINE;
  RegKey.OpenKey('Software', True);
  RegKey.OpenKey('PROFOUND', True);
  RegKey.OpenKey('AutoDialer', True);

  if SelectedLine.Text<>'' Then
    RegKey.WriteString('SelectedLine', SelectedLine.Text);
  if PhoneNumber.Text<>'' Then
    RegKey.WriteString('PhoneNumber', PhoneNumber.Text);

  RegKey.CloseKey;
  RegKey.Free;
End;

procedure TformMain.DialButtonClick(Sender: TObject);
begin
  if SelectedLine.ItemIndex=-1 Then
    raise Exception.Create('You have to choose line to dial.');
  if PhoneNumber.Text='' Then
    raise Exception.Create('You have to enter number to dial.');

  try
    TAPILine.DevIdToInitialize:=SelectedLine.ItemIndex;
    TAPILine.Open;
    try
      // try to make voice outbound call...
      TAPILine.MediaModes := [lmmInteractiveVoice];
      TAPILine.MakeCall(PhoneNumber.Text);
    except
      // if problems, last try with DataModem...
      TAPILine.MediaModes := [lmmDataModem];
      TAPILine.MakeCall(PhoneNumber.Text);
    end;
  except
    On E:Exception do
      MessageBox(handle, PChar('Modem returned error: '+E.Message), PChar(AppName), MB_OK or MB_ICONEXCLAMATION);
  end;
end;

procedure TformMain.SelectedLineChange(Sender: TObject);
begin
   try
      PhoneImage.Picture.Icon.Handle:=TAPILine.GetIcon(SelectedLine.ItemIndex);
   except
   end;
end;

procedure TformMain.Dial(Var Message: TMessage);
Begin
  DialButton.Click;
End;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -