jlen100
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
13
17 mai 2006 à 21:09
il y a aussi une petite unité dont je ne retrouve plus le lien la voici donc:
//*********************************************************
unit dialerPlus;
interface
uses
Windows, SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,
Controls, Forms, Dialogs;
type
TMode =(mDirect,mTapi);
TComPort = (dpCOM1,dpCOM2,dpCOM3,dpCOM4);
TLanguage = (dlEnglish, dlDutch, dlGerman, dlFrench, dlItalian, dlSpanish);
TDialer = class(TComponent)
private
{ Private declarations }
FComPort : TComPort;
FNumberToDial : string;
FConfirm : boolean;
FMethod : String;
FLanguage : TLanguage;
FMode : TMode;
protected
{ Protected declarations }
public
{ Public declarations }
Function Execute :String;
published
property ComPort : TComPort read FComPort
write FComPort;
property Confirm : boolean read FConfirm
write FConfirm;
property NumberToDial : string read FNumberToDial
write FNumberToDial;
property Language : TLanguage Read FLanguage
write FLanguage;
property DialCommand : string read FMethod
write FMethod;
property Mode : Tmode read FMode
write FMode;
{ Published declarations }
end;
procedure Register;
function tapiRequestMakeCall(pDestAddress,pAppName,pCalledParty,pComment: PChar): LongInt; stdcall;
implementation
function tapiRequestMakeCall(pDestAddress,pAppName,pCalledParty,pComment: PChar): LongInt; stdcall; external 'TAPI32.DLL';
const
TAPIERR_CONNECTED=0;
TAPIERR_NOREQUESTRECIPIENT=-2;
TAPIERR_REQUESTQUEUEFULL=-3;
TAPIERR_INVALDESTADDRESS=-4;
TAPIMAXDESTADDRESSSIZE=80;
procedure Register;
begin
RegisterComponents('Samples', [TDialer]);
end;
function TDialer.Execute :String;
var
ErrorCode:LongInt;
szNR : Array[0..TAPIMAXDESTADDRESSSIZE] of Char;
sText : String;
s : string;
hCommFile : THandle;
Status : LongBool;
NumberWritten : DWORD;
SMessage : string;
DialCommand :PChar;
HangUpCommand: PChar;
begin
if Fmode=mDirect then begin
if FConfirm then
begin
Case FLanguage of
dlEnglish: SMessage := 'About to dial the number '+FNumberToDial+'. Are you sure?';
dlDutch: SMessage := 'Weet u zeker dat u nummer '+FNumberToDial+' wilt kiezen ?';
dlGerman: SMessage := 'Wollen Sie die Nummer '+FNumberToDial+' wählen ?';
dlFrench: SMessage := 'Composer le numéro ' +FNumberToDial+' ?';
dlItalian: SMessage := 'Comporre il numero ' +FNumberToDial+' ?';
dlSpanish: SMessage := '¿ Marcar el número ' +FNumberToDial+' ?';
end;
if MessageDlg(SMessage,
mtConfirmation, [mbYes,mbNo], 0)=mrNo then Exit;
end;
{Open Com Port}
s:='COM'+Chr(49+Ord(FComPort));
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
Case FLanguage of
dlEnglish: SMessage := 'Unable to open '+s;
dlDutch: SMessage := 'Kan '+s+ ' niet openen';
dlGerman: SMessage :=
'Fehler beim Ansprechen des COM '+s+' Ports. Bitte überprüfen Sie, ob
das Modem richtig angeschlossen ist und ob keine weitere
Kommunikationssoftware aktiv ist.';
dlFrench: SMessage := 'Echec à l''ouverture de '+s;
dlItalian: SMessage := 'Impossibile aprire la porta '+s;
dlSpanish: SMessage := 'Imposible abrir el puerto ' +s;
end;
Result:='COMOPENERROR';
MessageDlg(SMessage,mtError,[mbOk], 0);
Exit;
end;
{Create a string to send to modem}
s:=FMethod+FNumberToDial+#13+#10;
//if FMethod=dmPulse then s[4]:='P';
{Send phone number to modem}
NumberWritten:=0;
Status:=WriteFile( hCommFile,PChar(s)[0],
Length(s),
NumberWritten,
nil);
if Status then
begin
Case FLanguage of
dlEnglish: SMessage := 'Pick up phone and click OK';
dlDutch: SMessage := 'Pak de telefoon op';
dlGerman: SMessage :=
'Nummer gewählt - Bitte nehmen Sie den Hörer ab und klicken dann auf
OK';
dlFrench: SMessage := 'Décrochez puis cliquez sur OK';
dlItalian: SMessage := 'Alza e clicca su OK';
dlSpanish: SMessage := 'Descuelgue y haga clic en el botón OK';
end;
MessageDlg(SMessage,mtInformation,[mbOk], 0);
Result:='OK';
WriteFile(hCommFile,'ATH'^M^J,5,NumberWritten,nil);
end
else
Begin
Case FLanguage of
dlEnglish: SMessage := 'Unable to dial number';
dlDutch: SMessage := 'Kan dit nummer niet kiezen';
dlGerman: SMessage := 'Kann die angegebene Nummer nicht erreichen !';
dlFrench: SMessage := 'Impossible de composer le numéro demandé';
dlItalian: SMessage := 'Impossibile comporre il numero chiesto';
dlSpanish: SMessage := 'Imposible marcar el número solicitado'
end;
MessageDlg(SMessage,mtError,[mbOk], 0);
Result:='DIALERROR';
end;
{Close communication port}
CloseHandle(hCommFile);
end
else
begin
FillChar(szNR,SizeOf(szNR),#0);
StrPCopy(szNR,FNumberToDial);
ErrorCode:=TAPIRequestMakeCall(szNr,'TDialer','','');
Case ErrorCode of
TAPIERR_CONNECTED:Result:='TapiConnected';
TAPIERR_NOREQUESTRECIPIENT:Result:='TapiNotAvailable';
TAPIERR_REQUESTQUEUEFULL:Result:='TapiFull';
TAPIERR_INVALDESTADDRESS:Result:='TapiInvalidAddress';
End;
end;
end;
end.
//**************************************************************
@+
jlen