📄 exlibmd0.pas
字号:
(***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is TurboPower Async Professional
*
* The Initial Developer of the Original Code is
* TurboPower Software
*
* Portions created by the Initial Developer are Copyright (C) 1991-2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** *)
unit ExLibMd0;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Menus,
AdLibMdm, OOMisc;
type
TForm1 = class(TForm)
popModemList: TPopupMenu;
Deletemodem1: TMenuItem;
popDetailFiles: TPopupMenu;
Deletefile1: TMenuItem;
Newfile1: TMenuItem;
lbxModemList: TListBox;
lbxDetailFiles: TListBox;
lblModemListCount: TLabel;
lblDetailLoadTime: TLabel;
lblDetailFileCount: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
edtModemCapFolder: TEdit;
tvDetails: TTreeView;
procedure FormCreate(Sender: TObject);
procedure lbxDetailFilesClick(Sender: TObject);
procedure lbxModemListDblClick(Sender: TObject);
procedure Deletemodem1Click(Sender: TObject);
procedure Deletefile1Click(Sender: TObject);
procedure Newfile1Click(Sender: TObject);
procedure lbxDetailFilesDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
procedure lbxDetailFilesDragDrop(Sender, Source: TObject; X,
Y: Integer);
procedure lbxModemListMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
StartTime : DWORD;
procedure RefreshDetailList;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
// edtModemCapFolder.Text := GetEnvironmentVariable('MODEMCAP');
if edtModemCapFolder.Text = '' then
edtModemCapFolder.Text := 'e:\modemcap';
RefreshDetailList;
end;
procedure TForm1.RefreshDetailList;
var
sr: TSearchRec;
begin
lbxDetailFiles.Items.Clear;
if FindFirst(edtModemCapFolder.Text + '/*.xml', faAnyFile, sr) = 0 then begin
lbxDetailFiles.Items.Add(sr.Name);
while FindNext(sr) = 0 do
lbxDetailFiles.Items.Add(sr.Name);
end else
ShowMessage('Modemcap detail files not found');
FindClose(sr);
lblDetailFileCount.Caption := IntToStr(lbxDetailFiles.Items.Count) + ' files';
end;
procedure TForm1.lbxDetailFilesClick(Sender: TObject);
var
LibModem : TApdLibModem;
ModemList : TStringList;
I : Integer;
begin
if lbxDetailFiles.ItemIndex > -1 then begin
LibModem := nil;
ModemList := TStringList.Create;
Screen.Cursor := crHourglass;
try
lbxModemList.Clear;
LibModem := TApdLibModem.Create(Self);
LibModem.LibModemPath := edtModemCapFolder.Text;
StartTime := AdTimeGetTime;
ModemList.Assign(LibModem.GetModems(lbxDetailFiles.Items[lbxDetailFiles.ItemIndex]));
for I := 0 to pred(ModemList.Count) do
lbxModemList.Items.Add(ModemList[I]);
lblModemListCount.Caption := IntToStr(lbxModemList.Items.Count) + ' modems' + #13#10 +
Format('%f3 seconds', [(AdTimeGetTime - StartTime) / 1000]);
tvDetails.Items.Clear;
finally
LibModem.Free;
ModemList.Free;
Screen.Cursor := crDefault;
end;
end;
end;
procedure TForm1.lbxModemListDblClick(Sender: TObject);
var
LibModem : TApdLibModem;
LmModem : TLmModem;
i : Integer;
j : Integer;
CurModem : TTreeNode;
TempNode1 : TTreeNode;
TempNode2 : TTreeNode;
TempNode3 : TTreeNode;
begin
if lbxModemList.ItemIndex = -1 then exit;
LibModem := nil;
Screen.Cursor := crHourglass;
try
LibModem := TApdLibModem.Create(self);
LibModem.LibModemPath := edtModemCapFolder.Text;
StartTime := AdTimeGetTime;
i :=Libmodem.GetModem(lbxDetailFiles.Items[lbxDetailFiles.ItemIndex],
lbxModemList.Items[lbxModemList.ItemIndex], LmModem);
lblDetailLoadTime.Caption := Format('%f3 seconds', [(AdTimeGetTime - StartTime) / 1000]);
tvDetails.Items.Clear;
if i <> ecOK then begin
ShowMessage('Modem not found, i = ' + IntToStr(i));
Exit;
end;
with LmModem do begin
CurModem := tvDetails.Items.Add (nil, FriendlyName);
tvDetails.Items.AddChild (CurModem, 'Manufacturer = ' + Manufacturer);
tvDetails.Items.AddChild (CurModem, 'Model = ' + Model);
tvDetails.Items.AddChild (CurModem, 'Modem ID = ' + ModemID);
tvDetails.Items.AddChild (CurModem, 'Provider Name = ' + ProviderName);
tvDetails.Items.AddChild (CurModem, 'Inheritance = ' + Inheritance);
tvDetails.Items.AddChild (CurModem, 'Attached To = ' + AttachedTo);
tvDetails.Items.AddChild (CurModem, 'Inactivity Format = ' + InactivityFormat);
tvDetails.Items.AddChild (CurModem, 'Reset = ' + Reset);
tvDetails.Items.AddChild (CurModem, 'DCB = ' + DCB);
tvDetails.Items.AddChild (CurModem, 'Properties = ' + Properties);
tvDetails.Items.AddChild (CurModem, 'Forwared Delay = ' + IntToStr (ForwardDelay));
tvDetails.Items.AddChild (CurModem, 'Variable Terminator = ' + VariableTerminator);
tvDetails.Items.AddChild (CurModem, 'Inf Path = ' + InfPath);
tvDetails.Items.AddChild (CurModem, 'Inf Section = ' + InfSection);
tvDetails.Items.AddChild (CurModem, 'Driver Description = ' + DriverDesc);
tvDetails.Items.AddChild (CurModem, 'Responses Key Name = ' + ResponsesKeyName);
tvDetails.Items.AddChild (CurModem, 'Default = ' + Default);
tvDetails.Items.AddChild (CurModem, 'Call Setup Fail Timeout = ' + IntToStr (CallSetupFailTimeout));
tvDetails.Items.AddChild (CurModem, 'Inactivity Timeout = ' + IntToStr (InactivityTimeout));
if SupportsWaitForBongTone then
tvDetails.Items.AddChild (CurModem, 'Supports Bong Tone = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Bong Tone = False');
if SupportsWaitForQuiet then
tvDetails.Items.AddChild (CurModem, 'Supports Wait forQuiet = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Wait for Quiet = False');
if SupportsWaitForDialTone then
tvDetails.Items.AddChild (CurModem, 'Supports Wait for Dial Tone = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Wait for Dial Tone = False');
if SupportsSpeakerVolumeLow then
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Low = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Low = False');
if SupportsSpeakerVolumeMed then
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Med = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Med = False');
if SupportsSpeakerVolumeHigh then
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume High = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume High = False');
if SupportsSpeakerModeOff then
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Off = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Off = False');
if SupportsSpeakerModeOn then
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode On = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode On = False');
if SupportsSpeakerModeSetup then
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Setup = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Setup = False');
if SupportsSetDataCompressionNegot then
tvDetails.Items.AddChild (CurModem, 'Supports Set Data Compression Negotiation = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Data Compresssion Negotiation = False');
if SupportsSetErrorControlProtNegot then
tvDetails.Items.AddChild (CurModem, 'Supports Set Error Control Protocol Negotiation = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Error Control Protocol Negotiation = False');
if SupportsSetForcedErrorControl then
tvDetails.Items.AddChild (CurModem, 'Supports Set Forced Error Control = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Forced Error Control = False');
if SupportsSetCellular then
tvDetails.Items.AddChild (CurModem, 'Supports Set Cellular = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Cellular = False');
if SupportsSetHardwareFlowControl then
tvDetails.Items.AddChild (CurModem, 'Supports Set Hardware Flow Control = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Hardware Flow Control = False');
if SupportsSetSoftwareFlowControl then
tvDetails.Items.AddChild (CurModem, 'Supports Set Software Flow Control = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Software Flow Control = False');
if SupportsCCITTBellToggle then
tvDetails.Items.AddChild (CurModem, 'Supports Set CCITT Bell Toggle = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set CCITT Bell Toggle = False');
if SupportsSetSpeedNegotiation then
tvDetails.Items.AddChild (CurModem, 'Supports Set Speed Negotiation = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Speed Negotiation = False');
if SupportsSetTonePulse then
tvDetails.Items.AddChild (CurModem, 'Supports Set Tone Pulse = True')
else
tvDetails.Items.AddChild (CurModem, 'Supports Set Tone Pulse = False');
if SupportsBlindDial then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -