Discador
Olá, estou precisando de ajuda pra fazer um discador no delphi !! :?:
Gvsfox
Curtidas 0
Respostas
Otto
27/03/2004
vou colar aqui pra vc a rotina que eu usei pra fazer o discador de ramais daqui da empresa.. ai vc edita, qualquer coisa me manda um email.
no oncliquew do botao la
olha a rotina e vc vai perceber que estou puxando valor de um edit um bombo, etc...
var hCommFile : THandle; Status : LongBool; NumberWritten : DWORD; Buf : array [0..1023] of Byte; s : string;
no oncliquew do botao la
begin
s := cbPorta.text;
hCommFile:= CreateFile( PChar(s), GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0 );
if hCommFile = INVALID_HANDLE_VALUE then
begin
memo_msg.lines.clear;
memo_msg.lines.add(´Não foi possível abrir a porta selecionada.´);
memo_msg.lines.add(´Discagem não efetuada.´);
CloseHandle(hCommFile);
end
else
begin
memo_msg.lines.clear;
memo_msg.lines.add(´Discando...´);
if radio_tom.checked then//Cria a string de comando
s := ´ATDT´
else
s := ´ATDP´;
s := s + edRamal.text + #1310;
memo_msg.lines.add(s);
NumberWritten := 0;//Envia a String de Comando
Status := WriteFile( hCommFile,PChar(s)[0],
Length(s),
NumberWritten,
nil);
memo_msg.lines.add(´Aguardando Atendimento ...´);
Application.MessageBox(´Retire o telefone do gancho e clique OK para desligar o modem.´,´Atenção´
,+MB_Ok);
WriteFile(hCommFile,´ATH´, 5, NumberWritten,nil);//Desconecta a ligação (Hangup)
CloseHandle(hCommFile); //Fecha a porta de Comunicação
memo_msg.lines.add(´Modem Desconectado.´#1310);
end; // Begin
end; // Begin
end; // Procedure
{ Final do processo de discagem. }
olha a rotina e vc vai perceber que estou puxando valor de um edit um bombo, etc...
GOSTEI 0
Wbb
27/03/2004
Tem essa outra também:
T+
wbb
OBS.: Retirado das dicas do boletim Active News N 125 - Dicas de Programação Delphi.
Procedure TForm1.Disca; begin //Abre a porta de comunicação s:=´Com3´; hCommFile :=CreateFile(PChar(s), GENERIC_WRITE,0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0); // Verifica a abertura da porta if hCommFile = INVALID_HANDLE_VALUE then CloseHandle(hCommFile) else begin s:=´ATDT´; s := s + Edit1.Text + #1310; NumberWritten:=0; Status:= WriteFile( hCommFile,PChar(s)[0],Length(s), NumberWritten, nil); end; end;
Procedure TForm1.Desliga; //Procedure para encerrar a discagem begin WriteFile(hCommFile,´ATH´,5,NumberWritten,nil); CloseHandle(hCommFile); end;
T+
wbb
OBS.: Retirado das dicas do boletim Active News N 125 - Dicas de Programação Delphi.
GOSTEI 0
Wbb
27/03/2004
Esqueci de umas coisas :oops: ... O código completo é:
wbb
type
TForm1 = class(TForm)
Procedure Disca;
Procedure Desliga;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hCommFile: THandle;
Status: LongBool;
NumberWritten: DWORD;
s : string;
implementation
{$R *.DFM}
Procedure TForm1.Disca;
begin
//Abre a porta de comunicação
s:=´Com3´;
hCommFile :=CreateFile(PChar(s), GENERIC_WRITE,0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
// Verifica a abertura da porta
if hCommFile = INVALID_HANDLE_VALUE then CloseHandle(hCommFile)
else
begin
s:=´ATDT´;
s := s + ´nº a ser discado´ + #1310;
NumberWritten:=0;
Status:= WriteFile( hCommFile,PChar(s)[0],Length(s), NumberWritten, nil);
end;
end;
Procedure TForm1.Desliga;
//Procedure para encerrar a discagem
begin
WriteFile(hCommFile,´ATH´,5,NumberWritten,nil);
CloseHandle(hCommFile);
end;
end.wbb
GOSTEI 0
Rodrigo Lima
27/03/2004
Olá amigo, você sabe o código pra saber se a chamada foi atendida ou se deu ocupada?
Valeu
Valeu
GOSTEI 0