Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dialer Avanzado-Ayuda (https://www.clubdelphi.com/foros/showthread.php?t=86701)

pr0sper0 19-09-2014 04:35:32

Dialer Avanzado-Ayuda
 
Hola aqui les dejo un proyecto q estoy haciendo, si pueden hechenle una ojeada y denme idea para terminarlo que no se como hacerlo.

Casimiro Notevi 19-09-2014 09:58:36

¿Idea sobre qué, para hacer qué? :confused:

Neftali [Germán.Estévez] 19-09-2014 10:26:17

Difícil poder ayudarte. Tal y como comenta Casimiro no dices nada del proyecto ni los problemas que tienes.
Además por lo que he visto en el código utilizas componentes TSui...
Por lo que intentar abrir el proyecto para los que no lostenemos instalados se hace imposible.

Un saludo.

gatosoft 19-09-2014 20:29:20

Intente abrir el proyecto y como dice Neftali tiene requerimientos de clases o componentes no nativos...

Podrías empezar con una breve descripción del objetivo y una guía de instalación / Ejecución....

Un saludo,

pr0sper0 22-09-2014 23:49:28

Hola amigo
 
Me hace falata que el moderador del foro me quite el adjunto este junto con el mensaje que me hace falta poner otro adjunto y no tengo espacio, gracias.

Neftali [Germán.Estévez] 23-09-2014 08:36:39

Cita:

Empezado por pr0sper0 (Mensaje 481899)
Me hace falata que el moderador del foro me quite el adjunto este junto con el mensaje que me hace falta poner otro adjunto y no tengo espacio, gracias.

Eliminado el adjunto.
Un saludo.

Casimiro Notevi 23-09-2014 09:38:09

No hacía falta pedirlo a todo el mundo en posts, mensajes privados, mensaje al email de contacto de los foros... :p

pr0sper0 24-09-2014 06:22:29

Marcador para conexión a Internet por modem
 
Hola necesito su ayuda con este código, lo que necesito esta comentado en el mismo y el proyecto lo pueden descargar en

terawiki.clubdelphi.com/Delphi/Proyectos/?download=Dialer.rar

Código Delphi [-]
unit Dialer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMan, ExtCtrls, ComCtrls, Buttons, StdCtrls, jpeg, shellapi;

type
  TFPrincipal = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    PageControl2: TPageControl;
    TabSheet3: TTabSheet;
    Label6: TLabel;
    Label8: TLabel;
    LabelSpeed: TLabel;
    Label10: TLabel;
    LabelOnline: TLabel;
    GroupBox4: TGroupBox;
    ConnList: TListBox;
    doHangup: TButton;
    doDial: TButton;
    GroupBox5: TGroupBox;
    Label14: TLabel;
    Label15: TLabel;
    ETiempoConexion: TPanel;
    ETiempoConsumido: TPanel;
    GroupBox11: TGroupBox;
    ETiempoContratado: TPanel;
    ConnLog: TMemo;
    TabSheet6: TTabSheet;
    Label3: TLabel;
    PageControl1: TPageControl;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    SpeedButton2: TSpeedButton;
    GroupBox2: TGroupBox;
    edtUser: TEdit;
    GroupBox3: TGroupBox;
    edtPhone: TEdit;
    BitBtn1: TBitBtn;
    GroupBox6: TGroupBox;
    edtPass: TEdit;
    TabSheet5: TTabSheet;
    BitBtn2: TBitBtn;
    GroupBox1: TGroupBox;
    Edit4: TEdit;
    UpDown1: TUpDown;
    TabSheet7: TTabSheet;
    Label2: TLabel;
    GroupBox7: TGroupBox;
    Edit5: TEdit;
    GroupBox8: TGroupBox;
    Edit6: TEdit;
    BitBtn3: TBitBtn;
    TabSheet1: TTabSheet;
    Button2: TButton;
    GroupBox10: TGroupBox;
    Panel3: TPanel;
    TabSheet8: TTabSheet;
    Label12: TLabel;
    Panel6: TPanel;
    Label9: TLabel;
    DateTimePicker1: TDateTimePicker;
    Panel7: TPanel;
    Label11: TLabel;
    DateTimePicker2: TDateTimePicker;
    BitBtn4: TBitBtn;
    GroupBox9: TGroupBox;
    SpeedButton1: TSpeedButton;
    Edit7: TEdit;
    Button1: TButton;
    TabSheet4: TTabSheet;
    Label7: TLabel;
    Panel4: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    Image4: TImage;
    Edit8: TEdit;
    Button3: TButton;
    XPManifest1: TXPManifest;
    TUnSegundo: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure doDialClick(Sender: TObject);
    procedure doHangupClick(Sender: TObject);
    procedure TUnSegundoTimer(Sender: TObject);
    procedure Image2Click(Sender: TObject);
  private
  InicioConexion, TiempoConsumidoAlIniciarAplicacion : TDateTime;
  TiempoConexion, TiempoConsumido,TiempoContratado : TDateTime;
  procedure ActualizaDatos;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPrincipal: TFPrincipal;

implementation

{$R *.dfm}
uses IniFiles;
const
  RAS_MaxEntryName = 256;
  RASBASE = 600;
  ERROR_BUFFER_TOO_SMALL = RASBASE + 3;
  ERROR_INVALID_SIZE = RASBASE + 32;

type
  PRasEntryName = ^TRasEntryName;
  TRasEntryName = record
    dwSize: Longint;
    szEntryName: array [0..RAS_MaxEntryName] of Char;
  end;

function RasEnumEntriesA(reserved: PChar; lpszPhonebook: PChar;
          lpRasEntryName: PRasEntryName; var lpcb: DWORD;
          var lpcEntries: DWORD): DWORD; stdcall; external 'RASAPI32.DLL';
procedure GetRasEntries(List: TStrings);
var
  RasEntryNames: array of TRasEntryName;
  Err, Size, Entries: DWORD;
  i: Integer;
begin
  List.Clear;
  SetLength(RasEntryNames, 1);
  Size := SizeOf(TRasEntryName);
  RasEntryNames[0].dwSize := Size;
  Err := RasEnumEntriesA(nil, nil, @RasEntryNames[0], Size, Entries);
  if (Err = ERROR_BUFFER_TOO_SMALL) and (Entries > 0) then begin
    Assert(Size = SizeOf(TRasEntryName) * Entries);
    SetLength(RasEntryNames, Entries);
    Err := RasEnumEntriesA(nil, nil, @RasEntryNames[0], Size, Entries);
    if Err = 0 then
      for i := 0 to Length(RasEntryNames) do
        List.Add(RasEntryNames[i].szEntryName);
  end else
    List.Add(RasEntryNames[0].szEntryName);
end;
procedure TFPrincipal.ActualizaDatos;
begin
  // Calculo el tiempo de conexion
  TiempoConexion := Now - InicioConexion;
  TiempoConsumido := TiempoConsumidoAlIniciarAplicacion + TiempoConexion;

  // Actualizo el formulario
  ETiempoContratado.Caption:= TimeToStr(TiempoContratado);
  ETiempoConsumido.Caption:= TimeToStr(TiempoConsumido);
  ETiempoConexion.Caption:= TimeToStr(TiempoConexion);

  // Si el tiempo contratado se ha consumido cierro la aplciacion
  if (TiempoContratado < TiempoConsumido) then
     Close;
end;

procedure TFPrincipal.FormCreate(Sender: TObject);
begin
GetRasEntries(ConnList.Items);
end;

procedure TFPrincipal.doDialClick(Sender: TObject);
var
Ini : TIniFile;
cmd, par, fil, dir: PChar;
begin
cmd := 'open';
fil := 'rasdial.exe';
par := PChar(edtUser.Text + ' ' + edtPass.Text + ' ' + edtPhone.Text);
dir := 'C:';
// llamar a rasdial.exe con Shellexecute
//Necesito que lo q pasa en la ventana de cmd me lo muestre en ConnLog:TMemo como lo hago
//Necesito incorporar el ConnList a la cadena de PChar(edtUser.Text + ' ' + edtPass.Text + ' ' + edtPhone.Text)
//para que puedan utilizar la conexción que deseen.
//Necesito me expliquen como trabajar con los usuarios y contraseñas en la parte administrativa,
//como se guardan, como desde esta parte se puede implementar para que el usuario pueda cambiar la contraseña
//y como lograr que cuando den marcar y el modem no este conectado o la linea ocupada el tiempo
//no empieze a descontar
{SW_SHOWMINNOACTIVE ou SW_HIDE ou SW_SHOWNORMAL};
ShellExecute(Self.Handle, cmd, fil, par, dir, SW_SHOWNORMAL);
 // Hora de inicio de la conexion
  InicioConexion := Now;
  // Lee datos guardados
  Ini := TIniFile.Create('C:\Windows\System32\BRCL06.dll');
  try
     TiempoContratado := StrToTime(Ini.ReadString('Datos', 'TiempoContratado', '00:03:00')); //Este tiempo necesito asignarlo a traves de la pestaña Tiempo de conexiçon de la administración no se hacerlo.
     TiempoConsumidoAlIniciarAplicacion := StrToTime(Ini.ReadString('Datos', 'TiempoConsumido', '00:00:00'));
  finally
     Ini.Free;
  end;

  ActualizaDatos;

  // Inicio el Timer
  TUnSegundo.Enabled := True;
  doDial.Enabled:=false;
  doHangup.Enabled:=true;
end;
procedure TFPrincipal.doHangupClick(Sender: TObject);
var
cmd, par, fil, dir: PChar;
begin
// Desconectar la conexión a Internet
cmd := 'open';
fil := 'rasdial.exe';
par := PChar( ' /DISCONNECT');
//como agrego la conexion que este usandose en el ConnList
dir := 'C:';
ShellExecute(Self.Handle, cmd, fil, par, dir, SW_SHOWMINNOACTIVE);
TUnSegundo.Enabled:=false;
doDial.Enabled:=true;
doHangup.Enabled:=false;
end;

procedure TFPrincipal.TUnSegundoTimer(Sender: TObject);
var
  Ini : TIniFile;
begin
  ActualizaDatos;

  // Actualizo el tiempo consumido
  Ini := TIniFile.Create('C:\Windows\System32\BRCL06.dll');
  try
     Ini.WriteString('Datos', 'TiempoConsumido', TimeToStr(TiempoConsumido));
  finally
  Ini.Free;

  end;
end;

procedure TFPrincipal.Image2Click(Sender: TObject);
var
cmd, par, fil, dir: PChar;
begin
MessageDlg( 'Su conexción terminará.', mtInformation, [ mbOK ],0);
// Desconectar la conexión a Internet
cmd := 'open';
fil := 'rasdial.exe';
par := PChar( ' /DISCONNECT');
//como agrego la conexion que este usandose en el ConnList
dir := 'C:';
ShellExecute(Self.Handle, cmd, fil, par, dir, SW_SHOWMINNOACTIVE);
TUnSegundo.Enabled:=false;
Close;
end;
end.

Casimiro Notevi 24-09-2014 11:21:50

No abras hilos nuevos para seguir con lo mismo, sigue en este que comenzaste. Gracias ;)

FideRosado 27-09-2014 06:47:44

respuesta
 
sabes que si cierras la aplicacion por el administrador de tareas la conexion sigue conectada y tu app no le hace nada..

FideRosado 27-09-2014 07:02:58

respuesta
 
Código Delphi [-]
ConnList: TListBox;
// este cod obtiene un string con los valores solo que te queda debajo del otro
ConnList.Items.Text
// con este te queda separado por coma en una sola linea
ListBox1.Items.DelimitedText
// al igual ke este
ListBox1.Items.CommaText

pr0sper0 27-09-2014 16:00:15

Y que puedo hacer para que cuando cierren la aplicacion por el administrador de tareas se caiga la conexión.


La franja horaria es GMT +2. Ahora son las 20:06:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi