 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
joseluisbz Lt Cmdr

Registrado: 31 Ene 2003Mensajes: 101Ubicación: Medellín - Colombia de Barranquilla
|
Publicado: Dom 19 Oct, 2003 4:59 am Asunto: Administrador de Conexiones de Internet (Solucionado) |
|
|
Bueno, parte del codigo que inicalmente estaba utilizando no me sirvio.. pero ahí se los dejo...
La solución que dio Leo me sirvio, complementado con lo que había encontrado....
El codigo no está optimizado....
lo que pasa es que necesitaba que mi computador se conectara internet y se quedar así toda la noche a través de Módem.. y no madrugar...
Si tienen alguna sugerencia me dicen.... _________________ Please Response to:joseluisbz@bigfoot.com |
|
| Volver arriba |
|
 |
joseluisbz Lt Cmdr

Registrado: 31 Ene 2003Mensajes: 101Ubicación: Medellín - Colombia de Barranquilla
|
Publicado: Dom 19 Oct, 2003 5:01 am Asunto: El Codigo |
|
|
| Código: |
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include <ras.h>
#include <winbase.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void CrearConexionRas(String sNombreConexion, String sUsuario, String sClave,
String sTelefono, RASIPADDR dns1, RASIPADDR dns2)
{
String sModem;
// Selecciona el primer modem que encuentra
DWORD dwLength, dwNumDispositivos;
RasEnumDevices(NULL, &dwLength, &dwNumDispositivos);
RASDEVINFO *pRdi = new RASDEVINFO[dwNumDispositivos];
pRdi->dwSize = sizeof(*pRdi);
RasEnumDevices(pRdi, &dwLength, &dwNumDispositivos);
for (DWORD i=0; i<dwNumDispositivos; i++)
{
if (!stricmp(pRdi[i].szDeviceType, RASDT_Modem))
{
sModem = pRdi[i].szDeviceName;
break;
}
}
delete[] pRdi;
// Crea o modifica una nueva conexión RAS
RASENTRY TheRasEntry;
ZeroMemory(&TheRasEntry, sizeof(TheRasEntry));
TheRasEntry.dwSize = sizeof(TheRasEntry);
TheRasEntry.dwfOptions =
RASEO_ModemLights | RASEO_SwCompression | RASEO_SpecificNameServers |
RASEO_RemoteDefaultGateway | RASEO_IpHeaderCompression |
RASEO_PreviewPhoneNumber | RASEO_PreviewUserPw | RASEO_ShowDialingProgress;
// Dispositivo
strcpy(TheRasEntry.szDeviceName, sModem.c_str());
strcpy(TheRasEntry.szDeviceType, RASDT_Modem);
// Número de telefono
strcpy(TheRasEntry.szLocalPhoneNumber, sTelefono.c_str());
// Protocolo TCP/IP
TheRasEntry.dwfNetProtocols = RASNP_Ip;
TheRasEntry.dwFramingProtocol = RASFP_Ppp;
// DNS primario IP: a.b.c.d
TheRasEntry.ipaddrDns.a = dns1.a;
TheRasEntry.ipaddrDns.b = dns1.b;
TheRasEntry.ipaddrDns.c = dns1.c;
TheRasEntry.ipaddrDns.d = dns1.d;
// DNS secundario IP: a.b.c.d
TheRasEntry.ipaddrDnsAlt.a = dns2.a;
TheRasEntry.ipaddrDnsAlt.b = dns2.b;
TheRasEntry.ipaddrDnsAlt.c = dns2.c;
TheRasEntry.ipaddrDnsAlt.d = dns2.d;
DWORD fRet;
fRet = RasSetEntryProperties(NULL, sNombreConexion.c_str(),
&TheRasEntry, sizeof(TheRasEntry), NULL, 0);
if (fRet != 0)
throw Exception("Error :: RasSetEntryProperties");
// Añade el nombre de usuario y clave a la entrada creada
RASDIALPARAMS TheRasDialParams;
ZeroMemory(&TheRasDialParams, sizeof(TheRasDialParams));
TheRasDialParams.dwSize = sizeof(TheRasDialParams);
strcpy(TheRasDialParams.szEntryName, sNombreConexion.c_str());
strcpy(TheRasDialParams.szUserName, sUsuario.c_str());
strcpy(TheRasDialParams.szPhoneNumber, sTelefono.c_str());
strcpy(TheRasDialParams.szPassword, sClave.c_str());
strcpy(TheRasDialParams.szDomain, "");
fRet = RasSetEntryDialParams(NULL, &TheRasDialParams, false);
if (fRet != 0)
throw Exception("Error :: RasSetEntryDialParams");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonListarEntradasClick(TObject *Sender)
{
MessagesManager("");
ListBoxListarEntradas->Clear();
RASENTRYNAME *TheRasEntryName = new RASENTRYNAME[30];
DWORD entries, dwLength;
if(!TheRasEntryName)
{
MessagesManager("There's no enough memory.");
return;
}
TheRasEntryName[0].dwSize = sizeof(RASENTRYNAME);
dwLength = 30 * sizeof(RASENTRYNAME);
dwError = RasEnumEntries(NULL, NULL, TheRasEntryName, &dwLength,&entries);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(dwError);
return;
}
if(!entries)
{
MessagesManager("No hay conexiones disponibles.");
ButtonDesconectarActiva->Enabled=false;
ButtonConectarEntradas->Enabled=false;
return;
}
ButtonDisponerAutoconexion->Enabled=true;
for(int x = 0; x < (int)entries; x++)
ListBoxListarEntradas->Items->Add(TheRasEntryName[x].szEntryName);
return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonBorrarEntradasClick(TObject *Sender)
{
MessagesManager("");
if(ListBoxListarEntradas->ItemIndex != -1)
{
String StrEntry = ListBoxListarEntradas->Items->Strings[ListBoxListarEntradas->ItemIndex];
dwError = RasDeleteEntry(NULL, StrEntry.c_str());
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(dwError);
return;
}
ListBoxListarEntradas->Clear();
ButtonListarEntradasClick(Sender);
}
else
MessagesManager("Seleccione una conexion para borrar.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonConectarEntradasClick(TObject *Sender)
{
MessagesManager("");
if(ListBoxListarEntradas->ItemIndex != -1)
{
ButtonConectarEntradas->Enabled = false;
ConectarEntrada(ListBoxListarEntradas->Items->Strings[ListBoxListarEntradas->ItemIndex]);
}
else
MessagesManager("Seleccione una conexion para activar");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonConsultarActivasClick(TObject *Sender)
{
MessagesManager("");
ButtonListarEntradasClick(Sender);
ListViewEntradasActivas->Clear();
RASCONN TheRasConn[30];
DWORD dwLength, connections;
TheRasConn[0].dwSize = sizeof(RASCONN);
dwLength = 30 * sizeof(RASCONN);
dwError = RasEnumConnections(TheRasConn, &dwLength,&connections);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
if(!connections)
{
MessagesManager("No hay conexiones activas.");
ButtonConectarEntradas->Enabled=true;
ButtonDesconectarActiva->Enabled=false;
return;
}
for(int x = 0; x < (int)connections; x++)
{
TListItem *item = ListViewEntradasActivas->Items->Add();
item->Caption = TheRasConn[x].szEntryName;
item->SubItems->Add(TheRasConn[x].szDeviceName);
RASCONNSTATUS TheRasConnStatus;
TheRasConnStatus.dwSize = sizeof(RASCONNSTATUS);
dwError = RasGetConnectStatus(TheRasConn[x].hrasconn,&TheRasConnStatus);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
else
if(TheRasConnStatus.rasconnstate == RASCS_Connected)
{
item->SubItems->Add("Yes");
ButtonConectarEntradas->Enabled=false;
ButtonDesconectarActiva->Enabled=true;
}
else
{
item->SubItems->Add("No");
}
}
return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonDesconectarActivaClick(TObject *Sender)
{
MessagesManager("");
if(ListViewEntradasActivas->ItemIndex!=-1)
{
RASCONN TheRasConn[30];
DWORD dwLength, connections;
TheRasConn[0].dwSize = sizeof(RASCONN);
dwLength = 30 * sizeof(RASCONN);
dwError = RasEnumConnections(TheRasConn, &dwLength,&connections);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
if(!connections)
{
MessagesManager("No hay conexiones activas.");
return;
}
for(int x = 0; x < (int)connections; x++)
{
RASCONNSTATUS TheRasConnStatus;
TheRasConnStatus.dwSize = sizeof(RASCONNSTATUS);
dwError = RasGetConnectStatus(TheRasConn[x].hrasconn,&TheRasConnStatus);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
else
{
if(TheRasConnStatus.rasconnstate == RASCS_Connected)
{
if(
ListViewEntradasActivas->Items->Item[
ListViewEntradasActivas->ItemIndex
]->Caption == TheRasConn[x].szEntryName
)
{
dwError = RasHangUp(TheRasConn[x].hrasconn);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
MessagesManager(
ListViewEntradasActivas->Items->Item[
ListViewEntradasActivas->ItemIndex
]->SubItems->Text + " Cerrada"
);
Sleep(5000);
}
}//Fin conectado
}
}//Fin For
}
else
{
MessagesManager("Seleccione una conexión");
return;
}
ButtonConsultarActivasClick(Sender);
Sleep(3000);
return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
ButtonConsultarActivasClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ButtonListarEntradasClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonCrearEntradaClick(TObject *Sender)
{
MessagesManager("");
RASIPADDR dns1 = {edtDns1a->Text.ToIntDef(0), edtDns1b->Text.ToIntDef(0),
edtDns1c->Text.ToIntDef(0), edtDns1d->Text.ToIntDef(0)};
RASIPADDR dns2 = {edtDns2a->Text.ToIntDef(0), edtDns2b->Text.ToIntDef(0),
edtDns2c->Text.ToIntDef(0), edtDns2d->Text.ToIntDef(0)};
try
{
CrearConexionRas(
edtNombreConexion->Text,
edtNombreUsuario->Text,
edtClave->Text,
edtTelefono->Text,
dns1,
dns2
);
ButtonListarEntradasClick(Sender);
}
catch(...)
{
MessagesManager("Error :: no se pudo crear la conexión.");
}
}
//---------------------------------------------------------------------------
void TForm1::MessagesManager(AnsiString Mensaje)
{
StatusBarEstado->Panels->Items[0]->Text = Mensaje;
}
void __fastcall TForm1::ButtonDisponerAutoconexionClick(TObject *Sender)
{
if(ListBoxListarEntradas->ItemIndex != -1)
{
StatusBarEstado->Panels->Items[2]->Text = ListBoxListarEntradas->Items->Strings[ListBoxListarEntradas->ItemIndex];
ButtonDisponerAutoconexion->Enabled=false;
ButtonConsultarActivasClick(Sender);
}
else
MessagesManager("Seleccione una conexión.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerConectorTimer(TObject *Sender)
{
ButtonConsultarActivasClick(Sender);
if (!ButtonConectarEntradas->Enabled)
return;
if (StatusBarEstado->Panels->Items[2]->Text == "")
return;
ConectarEntrada(StatusBarEstado->Panels->Items[2]->Text);
}
//---------------------------------------------------------------------------
void TForm1::ConectarEntrada(AnsiString entryConnect)
{
DWORD entrysize, configsize;
BYTE configbuffer[128];
bool password;
RASENTRY TheRasEntry;
RASDIALPARAMS TheRasDialParams;
configsize = sizeof(configbuffer);
entrysize = sizeof(RASENTRY);
TheRasEntry.dwSize = sizeof(RASENTRY);
dwError = RasGetEntryProperties(NULL, entryConnect.c_str(), &TheRasEntry,&entrysize, configbuffer, &configsize);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
memset(&TheRasDialParams, 0, sizeof(RASDIALPARAMS));
TheRasDialParams.dwSize = sizeof(RASDIALPARAMS);
strcpy(TheRasDialParams.szEntryName, entryConnect.c_str());
dwError = RasGetEntryDialParams(NULL, &TheRasDialParams,(LPBOOL)&password);
if(dwError)
{
RasGetErrorString(dwError, cBuffer, sizeof(cBuffer));
MessagesManager(cBuffer);
return;
}
HRASCONN hrasconn = 0;
RasDial(0, 0, &TheRasDialParams, 0, 0, &hrasconn);
ButtonConsultarActivasClick(this);
}
|
_________________ Please Response to:joseluisbz@bigfoot.com |
|
| Volver arriba |
|
 |
joseluisbz Lt Cmdr

Registrado: 31 Ene 2003Mensajes: 101Ubicación: Medellín - Colombia de Barranquilla
|
Publicado: Dom 19 Oct, 2003 5:02 am Asunto: El archivo Cabecera |
|
|
| Código: |
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TBevel *Bevel1;
TPanel *Panel1;
TLabel *Label1;
TButton *Button2;
TBevel *Bevel2;
TEdit *edtNombreConexion;
TEdit *edtNombreUsuario;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TEdit *edtClave;
TLabel *Label6;
TLabel *Label7;
TEdit *edtTelefono;
TLabel *Label8;
TEdit *edtDns1a;
TEdit *edtDns1b;
TEdit *edtDns1d;
TLabel *Label9;
TEdit *edtDns2a;
TEdit *edtDns2b;
TEdit *edtDns2c;
TEdit *edtDns2d;
TEdit *edtDns1c;
TButton *ButtonListarEntradas;
TListBox *ListBoxListarEntradas;
TButton *ButtonBorrarEntradas;
TButton *ButtonConectarEntradas;
TListView *ListViewEntradasActivas;
TButton *ButtonConsultarActivas;
TButton *ButtonDesconectarActiva;
TButton *ButtonCrearEntrada;
TStatusBar *StatusBarEstado;
TButton *ButtonDisponerAutoconexion;
TTimer *TimerConector;
void __fastcall Button2Click(TObject *Sender);
void __fastcall ButtonListarEntradasClick(TObject *Sender);
void __fastcall ButtonBorrarEntradasClick(TObject *Sender);
void __fastcall ButtonConectarEntradasClick(TObject *Sender);
void __fastcall ButtonConsultarActivasClick(TObject *Sender);
void __fastcall ButtonDesconectarActivaClick(TObject *Sender);
void __fastcall FormActivate(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall ButtonCrearEntradaClick(TObject *Sender);
void __fastcall ButtonDisponerAutoconexionClick(TObject *Sender);
void __fastcall TimerConectorTimer(TObject *Sender);
private: // User declarations
char cBuffer[100];
DWORD dwError;
void MessagesManager(AnsiString Mensaje);
void ConectarEntrada(AnsiString Entrada);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
|
_________________ Please Response to:joseluisbz@bigfoot.com |
|
| Volver arriba |
|
 |
joseluisbz Lt Cmdr

Registrado: 31 Ene 2003Mensajes: 101Ubicación: Medellín - Colombia de Barranquilla
|
Publicado: Dom 19 Oct, 2003 5:05 am Asunto: El Form como texto |
|
|
| Código: |
object Form1: TForm1
Left = 471
Top = 109
ActiveControl = edtNombreConexion
BorderStyle = bsDialog
Caption = 'Form1'
ClientHeight = 585
ClientWidth = 466
Color = clBtnFace
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Verdana'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnActivate = FormActivate
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Bevel1: TBevel
Left = 0
Top = 49
Width = 466
Height = 7
Align = alTop
Shape = bsTopLine
end
object Bevel2: TBevel
Left = 8
Top = 260
Width = 449
Height = 45
Shape = bsBottomLine
end
object Label3: TLabel
Left = 12
Top = 60
Width = 137
Height = 13
Caption = 'Nombre de la conexión:'
end
object Label5: TLabel
Left = 12
Top = 108
Width = 115
Height = 13
Caption = 'Nombre de Usuario:'
end
object Label6: TLabel
Left = 292
Top = 108
Width = 71
Height = 13
Caption = 'Contraseña:'
end
object Label7: TLabel
Left = 12
Top = 156
Width = 118
Height = 13
Caption = 'Número de teléfono:'
end
object Label8: TLabel
Left = 12
Top = 204
Width = 82
Height = 13
Caption = 'DNS primario:'
end
object Label9: TLabel
Left = 188
Top = 204
Width = 96
Height = 13
Caption = 'DNS secundario:'
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 466
Height = 49
Align = alTop
BevelOuter = bvNone
Color = clWhite
TabOrder = 4
object Label1: TLabel
Left = 12
Top = 6
Width = 185
Height = 25
Caption = 'Crear conexión RAS'
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -21
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object Label4: TLabel
Left = 12
Top = 30
Width = 305
Height = 13
Caption = 'Crea una conexión RAS por MODEM usando el protocolo TCP/IP'
Color = clGray
Font.Charset = ANSI_CHARSET
Font.Color = clGray
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentColor = False
ParentFont = False
Transparent = True
end
end
object Button2: TButton
Left = 383
Top = 56
Width = 75
Height = 25
Cancel = True
Caption = 'Close'
TabOrder = 12
OnClick = Button2Click
end
object edtNombreConexion: TEdit
Left = 12
Top = 76
Width = 157
Height = 21
TabOrder = 0
Text = 'Mi Conexión'
end
object edtNombreUsuario: TEdit
Left = 12
Top = 124
Width = 269
Height = 21
TabOrder = 1
Text = 'joseluisbz'
end
object edtClave: TEdit
Left = 292
Top = 124
Width = 165
Height = 21
TabOrder = 2
Text = 'LaClave'
end
object edtTelefono: TEdit
Left = 12
Top = 172
Width = 157
Height = 21
TabOrder = 3
Text = '019479475400'
end
object edtDns1a: TEdit
Left = 12
Top = 220
Width = 37
Height = 21
TabOrder = 5
end
object edtDns1b: TEdit
Left = 52
Top = 220
Width = 37
Height = 21
TabOrder = 6
end
object edtDns1d: TEdit
Left = 132
Top = 220
Width = 37
Height = 21
TabOrder = 7
end
object edtDns2a: TEdit
Left = 188
Top = 220
Width = 37
Height = 21
TabOrder = 8
end
object edtDns2b: TEdit
Left = 228
Top = 220
Width = 37
Height = 21
TabOrder = 9
end
object edtDns2c: TEdit
Left = 268
Top = 220
Width = 37
Height = 21
TabOrder = 10
end
object edtDns2d: TEdit
Left = 308
Top = 220
Width = 37
Height = 21
TabOrder = 11
end
object edtDns1c: TEdit
Left = 92
Top = 220
Width = 37
Height = 21
TabOrder = 13
end
object ButtonListarEntradas: TButton
Left = 8
Top = 320
Width = 130
Height = 25
Caption = 'Listar Conexiones'
TabOrder = 14
OnClick = ButtonListarEntradasClick
end
object ListBoxListarEntradas: TListBox
Left = 152
Top = 320
Width = 300
Height = 65
ItemHeight = 13
TabOrder = 15
end
object ButtonBorrarEntradas: TButton
Left = 8
Top = 344
Width = 130
Height = 25
Caption = 'Borrar Conexiones'
TabOrder = 16
OnClick = ButtonBorrarEntradasClick
end
object ButtonConectarEntradas: TButton
Left = 8
Top = 368
Width = 130
Height = 25
Caption = 'Conectar Conexiones'
TabOrder = 17
OnClick = ButtonConectarEntradasClick
end
object ListViewEntradasActivas: TListView
Left = 9
Top = 472
Width = 448
Height = 65
Columns = <
item
AutoSize = True
Caption = 'Connection'
MinWidth = 180
end
item
AutoSize = True
Caption = 'Device'
MinWidth = 180
end
item
AutoSize = True
Caption = 'Connected'
MaxWidth = 80
MinWidth = 80
end>
TabOrder = 18
ViewStyle = vsReport
end
object ButtonConsultarActivas: TButton
Left = 8
Top = 424
Width = 129
Height = 41
Caption = 'Consultar Activas'
TabOrder = 19
OnClick = ButtonConsultarActivasClick
end
object ButtonDesconectarActiva: TButton
Left = 8
Top = 392
Width = 130
Height = 25
Caption = 'Desconectar Activa'
TabOrder = 20
OnClick = ButtonDesconectarActivaClick
end
object ButtonCrearEntrada: TButton
Left = 8
Top = 272
Width = 130
Height = 25
Caption = 'Crear Conexión'
TabOrder = 21
OnClick = ButtonCrearEntradaClick
end
object StatusBarEstado: TStatusBar
Left = 0
Top = 560
Width = 466
Height = 25
Panels = <
item
Width = 220
end
item
Text = 'Predefinida: '
Width = 60
end
item
Width = 50
end>
SimplePanel = False
end
object ButtonDisponerAutoconexion: TButton
Left = 152
Top = 392
Width = 130
Height = 25
Caption = 'Autoconexion'
TabOrder = 23
OnClick = ButtonDisponerAutoconexionClick
end
object TimerConector: TTimer
Interval = 60000
OnTimer = TimerConectorTimer
Left = 376
Top = 176
end
end
|
_________________ Please Response to:joseluisbz@bigfoot.com |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|