commit ce9a6b7473c72749e60b6028bab6245e20de8797 Author: jdg Date: Sun Sep 12 22:21:22 2021 +0200 First commit 25/10/1998 diff --git a/DialUp/DIALUPT.DPR b/DialUp/DIALUPT.DPR new file mode 100644 index 0000000..54fa66c --- /dev/null +++ b/DialUp/DIALUPT.DPR @@ -0,0 +1,13 @@ +program DialUpT; + +uses + Forms, + Main_F in 'Main_F.pas' {Form1}; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/DialUp/DIALUPT.RES b/DialUp/DIALUPT.RES new file mode 100644 index 0000000..5113761 Binary files /dev/null and b/DialUp/DIALUPT.RES differ diff --git a/DialUp/Main_f.dcu b/DialUp/Main_f.dcu new file mode 100644 index 0000000..12f2ab4 Binary files /dev/null and b/DialUp/Main_f.dcu differ diff --git a/DialUp/Main_f.dfm b/DialUp/Main_f.dfm new file mode 100644 index 0000000..3a50d33 Binary files /dev/null and b/DialUp/Main_f.dfm differ diff --git a/DialUp/Main_f.hpp b/DialUp/Main_f.hpp new file mode 100644 index 0000000..7b72014 --- /dev/null +++ b/DialUp/Main_f.hpp @@ -0,0 +1,85 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1998 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Main_F.pas' rev: 3.00 + +#ifndef Main_FHPP +#define Main_FHPP +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//-- user supplied ----------------------------------------------------------- + +namespace Main_f +{ +//-- type declarations ------------------------------------------------------- +class DELPHICLASS TForm1; +class PASCALIMPLEMENTATION TForm1 : public Forms::TForm +{ + typedef Forms::TForm inherited; + +__published: + Dialup::TDialUp* DialUp; + Stdctrls::TListBox* ListBox1; + Stdctrls::TButton* Button1; + Stdctrls::TButton* Button2; + Stdctrls::TButton* Button3; + Stdctrls::TButton* Button4; + Stdctrls::TRadioButton* RadioButton1; + Stdctrls::TRadioButton* RadioButton2; + Stdctrls::TLabel* Label1; + Stdctrls::TLabel* Status; + Stdctrls::TLabel* Status2; + Stdctrls::TCheckBox* CheckBox1; + void __fastcall Button1Click(System::TObject* Sender); + void __fastcall Button2Click(System::TObject* Sender); + void __fastcall DialUpEntryGet(System::TObject* Sender, const char * EntryName, const int EntryName_Size + ); + void __fastcall Button3Click(System::TObject* Sender); + void __fastcall DialUpConnect(System::TObject* Sender); + void __fastcall DialUpError(System::TObject* Sender, int ErrorCode, System::AnsiString ErrorMessage + ); + void __fastcall DialUpDialing(System::TObject* Sender); + void __fastcall DialUpNotConnected(System::TObject* Sender, int ErrorCode, System::AnsiString ErrorMessage + ); + void __fastcall DialUpAsyncEvent(System::TObject* Sender, int State, int Error, System::AnsiString + MessageText); + void __fastcall Button4Click(System::TObject* Sender); + void __fastcall DialUpActiveConnection(System::TObject* Sender, int Handle, const Dialup::TRasConnStatusA + &Status, System::AnsiString StatusString, const char * EntryName, const int EntryName_Size, const + char * DeviceType, const int DeviceType_Size, const char * DeviceName, const int DeviceName_Size); + + void __fastcall Button5Click(System::TObject* Sender); +public: + /* TCustomForm.Create */ __fastcall virtual TForm1(Classes::TComponent* AOwner) : Forms::TForm(AOwner + ) { } + /* TCustomForm.CreateNew */ __fastcall TForm1(Classes::TComponent* AOwner, int Dummy) : Forms::TForm( + AOwner, Dummy) { } + /* TCustomForm.Destroy */ __fastcall virtual ~TForm1(void) { } + +public: + /* TWinControl.CreateParented */ __fastcall TForm1(HWND ParentWindow) : Forms::TForm(ParentWindow) { } + + +}; + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE TForm1* Form1; + +} /* namespace Main_f */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Main_f; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // Main_F diff --git a/DialUp/Main_f.pas b/DialUp/Main_f.pas new file mode 100644 index 0000000..4aa6160 --- /dev/null +++ b/DialUp/Main_f.pas @@ -0,0 +1,130 @@ +unit Main_F; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, DialUp; + +type + TForm1 = class(TForm) + DialUp: TDialUp; + ListBox1: TListBox; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + RadioButton1: TRadioButton; + RadioButton2: TRadioButton; + Label1: TLabel; + Status: TLabel; + Status2: TLabel; + CheckBox1: TCheckBox; + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure DialUpEntryGet(Sender: TObject; EntryName: array of Char); + procedure Button3Click(Sender: TObject); + procedure DialUpConnect(Sender: TObject); + procedure DialUpError(Sender: TObject; ErrorCode: Integer; + ErrorMessage: String); + procedure DialUpDialing(Sender: TObject); + procedure DialUpNotConnected(Sender: TObject; ErrorCode: Integer; + ErrorMessage: String); + procedure DialUpAsyncEvent(Sender: TObject; State, Error: Integer; + MessageText: String); + procedure Button4Click(Sender: TObject); + procedure DialUpActiveConnection(Sender: TObject; Handle: Integer; + Status: TRasConnStatusA; StatusString: String; EntryName, DeviceType, + DeviceName: array of Char); + procedure Button5Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.DFM} + +procedure TForm1.Button1Click(Sender: TObject); +begin + ListBox1.Clear; Button2.Enabled:=True; + DialUp.GetEntries; +end; + +procedure TForm1.Button2Click(Sender: TObject); +begin + if ListBox1.Items.Count=0 then + begin + ShowMessage('Choose entry with get entries first'); + Exit; + end; + if RadioButton1.Checked then DialUp.DialMode:=dmAsync else DialUp.DialMode:=dmSync; + DialUp.Entry:=ListBox1.Items[ListBox1.ItemIndex]; + DialUp.Dial; +end; + +procedure TForm1.DialUpEntryGet(Sender: TObject; EntryName: array of Char); +begin + ListBox1.Items.Add(PChar(@EntryName[0])); + ListBox1.ItemIndex:=0; +end; + +procedure TForm1.Button3Click(Sender: TObject); +begin + DialUp.HangUp; +end; + +procedure TForm1.DialUpConnect(Sender: TObject); +begin + Status2.Caption:='Connected.'; +end; + +procedure TForm1.DialUpError(Sender: TObject; ErrorCode: Integer; + ErrorMessage: String); +begin + Status2.Caption:='Error'; +end; + +procedure TForm1.DialUpDialing(Sender: TObject); +begin + Status2.Caption:='Dialing...'; Application.ProcessMessages; +end; + +procedure TForm1.DialUpNotConnected(Sender: TObject; ErrorCode: Integer; + ErrorMessage: String); +begin + Status2.Caption:='Not Connected'; +end; + +procedure TForm1.DialUpAsyncEvent(Sender: TObject; State, Error: Integer; + MessageText: String); +begin + Status.Caption:=MessageText; + if Error<>0 then Status2.Caption:='Error. Press Hangup button next to Dial button.'; +end; + +procedure TForm1.Button4Click(Sender: TObject); +begin + ListBox1.Clear; Button2.Enabled:=False; + DialUp.GetConnections; +end; + +procedure TForm1.DialUpActiveConnection(Sender: TObject; Handle: Integer; + Status: TRasConnStatusA; StatusString: String; EntryName, DeviceType, + DeviceName: array of Char); +begin + ListBox1.Items.Add(EntryName+' | '+DeviceName+' || '+StatusString); + if CheckBox1.Checked then DialUp.HangUpConn(Handle); +end; + +procedure TForm1.Button5Click(Sender: TObject); +begin + DialUp.HangUpConn(ListBox1.ItemIndex); +end; + +end. diff --git a/DialUp/README.TXT b/DialUp/README.TXT new file mode 100644 index 0000000..07471bd --- /dev/null +++ b/DialUp/README.TXT @@ -0,0 +1,140 @@ +(****************************************** |****************************************** + * RAR, dekompresni komponenta * |* RAR, decompression component * + * pro Delphi 3 (32b) * |* for Delphi 3 (32b) * + * (c) 1997 BEALsoft * |* (c) 1997 BEALsoft * + * v1.0 * |* v1.0 * + *________________________________________* |*________________________________________* + * !! TATO KOMPONENTA JE ZDARMA !! * |* !! THIS COMPONENT IS FREE !! * + ****************************************** |******************************************) +// Kontakt na autora // Contact to author : +// aberka@usa.net, ICQ UIN 2365308, http://jakub.naf.cz/~aberka +// BEALsoft BBS, +420-5-, 24h +// ** Nove telefonni cislo bude umisteno na me webovske stranky ** +// ** New phone number will be placen on my web pages ** + +// Thanx to Davide Moretti for his RAS API header (Some code in this component +// was written by him). You can reach him via e-mail: dmoretti@iper.net + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +Nasledujici dokumentace je JEN v anglictine, protoze predpokladam u programatoru +znalost anglictiny. + +It is recommended to read the source code, its comments. + +RAS API functions are described in WIN32.HLP (Shipped with 32b Delphi) + +METHODS: +======= +function Dial : Integer; + Dials connection. + Non-zero result means error; OnError event also occurs. + +function GetEntries : Integer; + Get available connections + Connections are stored in . OnEntryGet event occurs + +function GetConnections : Integer; + Get active connection + Connections are passed thru OnActiveConnection + +function HangUp : Integer; + Hangups the connection you dialed with this component + +function HangUpConn(Handle : THRasConn) : Integer; + Hangups the connection identified by Handle (OnActiveConnection) + +function CreateEntry : Integer; + Creates entry in phonebook and displays edit dialog + +function EditEntry : Integer; + Opens edit dialog for + +function DeleteEntry : Integer; + Delete from phonebook + +function RenameEntryTo(S : String) : Integer; + Rename to + +function SetEntryUserName(Value : String) : Integer; + Set new username () to + +function SetEntryPassword(Value : String) : Integer; + Set new password () to + +function RemovePassword : Integer; + Remove password from + +function GetEntryUserName(var Value : String) : Integer; + Get username from to + +function GetEntryPassword(var Value : String) : Integer; + Get password from to + +function StatusString(State: TRasConnState; Error: Integer): String; + Get string describing and + +function StatusStringCZ(State: TRasConnState; Error: Integer): String; + Get Czech string describing and + + +PROPERTIES: +=========== + +property DialMode (TDialMode ... dmAsync/dmSync) +----------------- + +Property describing the mode of dialing. +Async dialing means that user will be notified when anything happen +by event. See OnAsyncEvent. [onDialing,onError,onAsyncEvent] +Sync dialing means that Dial function will exit when dialing finished. +Dial function result gives neccessary information. [onDialing,onConnect,onNotConnected] + +property Entry (String) +-------------- + +Identifies which entry will be processed by Dial,EditEntry,DeleteEntry, + GetEntryUserName,... + +property Language (TLanguage ... Czech/English) +----------------- + +Choose your language. Used for events with string messages. + + +EVENTS: +======= + +OnEntryGet, procedure (Sender : TObject; EntryName : Array of Char) of Object; +---------- +This event occurs when an Entry was found in phonebook by GetEntris method. + +OnDialing, procedure (Sender : TObject) of object; +--------- +This event occurs when Dial method is executed. + +OnConnect, procedure (Sender : TObject) of object; +--------- +This event occrus when connected with Dial method. + ^^^^^^^^^^^ + +OnNotConnected, procedure (Sender : TObject; ErrorCode : Integer; ErrorMessage : String) of object; +-------------- +This event is called when dialing failed. + + +OnAsyncEvent, procedure (Sender : TObject; State : TRasConnState; Error : Integer; +------------ MessageText : String) of object; +This event is called by RAS when dialing in Async mode. Gives information +about current process. + +OnError, procedure (Sender : TObject; ErrorCode : Integer; ErrorMessage : String) of Object; +------- +This event is called when error occur in Dial method etc. + +OnActiveConnection, procedure (Sender : TObject; Handle : THRasConn; Status : TRasConnStatus; +------------------ StatusString : String; + EntryName, DeviceType, DeviceName : Array of Char) of object; + +This event is called when an active connection was found by GetConnections. +Gives neccessary information about found connection. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b52395 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +#TrayIcon + + +*25/10/1998* + +ToDo: wwtcf? + + +![screenshot](/TrayIcon.png "Screenshot") diff --git a/TPropiedades.cpp b/TPropiedades.cpp new file mode 100644 index 0000000..afe7515 --- /dev/null +++ b/TPropiedades.cpp @@ -0,0 +1,359 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "TPropiedades.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "DialUp" +#pragma resource "*.dfm" +TPropiedades *Propiedades; +//--------------------------------------------------------------------------- +__fastcall TPropiedades::TPropiedades(TComponent* Owner) + : TForm(Owner) +{ + HoraL->DateTime=0; + HoraU->DateTime=0; + HoraR->DateTime=0; + HoraS->DateTime=0; + DesconectarSalir = true; + ResetEstados(); + + try { + mHistorial -> Lines -> LoadFromFile("Historial.log"); + }catch(...){ + // do nothing + } + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Inicio de sesión "); + + // Refrescamos las conexiones disponibles... + RefrescarConexionesClick(0); + // Obtenemos los parámetros básicos + CargaEstados(); + HoraD -> Time = ( HoraU -> Time ) - ( HoraL -> Time ); + + // Validalidamos el temporizador + TimerDialUp -> Enabled = true; +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::HoraLChange(TObject *Sender) +{ +try { + if ( HoraL->Time > HoraU->Time ) HoraU->Time = HoraL->Time; + HoraD -> Time = ( HoraU -> Time ) - ( HoraL -> Time ); + if ( HoraR->Time > (HoraU->Time - HoraL->Time) ) HoraR->Time = 0; +} catch(...) { /*do nothing*/ } + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::HoraDChange(TObject *Sender) +{ +try{ + HoraU -> Time = ( HoraL -> Time ) + ( HoraD -> Time ); +} catch(...) { /*do nothing*/ } +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::HoraUChange(TObject *Sender) +{ +try { + HoraD -> Time = ( HoraU -> Time ) - ( HoraL -> Time ); + if ( HoraR->Time > (HoraU->Time - HoraL->Time) ) HoraR->Time = 0; + if ( HoraS->Time <= HoraU->Time ) HoraS->Time = HoraU->Time; +} catch(...) { /*do nothing*/ } + + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::RefrescarConexionesClick(TObject *Sender) +{ + // Obtenemos la lista de conexiones... + ConexionesDisponibles -> Items -> Clear(); + DialUp1 -> GetEntries(); +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::DialUp1EntryGet(TObject *Sender, + AnsiString EntryName) +{ + ConexionesDisponibles -> Items -> Add( EntryName ); +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::TimerDialUpTimer(TObject *Sender) +{ + TDateTime CurrentTime, dtHoraL, dtHoraU, dtHoraR; + CurrentTime = TDateTime::CurrentTime(); + dtHoraL = HoraL->Time; + dtHoraU = HoraU->Time; + dtHoraR = HoraR->Time; + + TimerDialUp -> Enabled = false; + + + // Rango en el que deberiamos estar conectados... + if ( CurrentTime >= dtHoraL && CurrentTime < dtHoraU ) + { + // Conectamos, si no lo estamos ya + if ( !connected && intentos <= NumReconexiones -> Text.ToInt() ) + { + if ( intentos < 0 ) + { + StatusBar1 -> Panels -> Items[0] -> Text = "Conectando..."; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Inicio conexión (" + DialUp1 -> Entry +")" ); + DialUp1 -> Dial(); + } else { + if ( Reconectar -> Checked && ( (dtHoraU - dtHoraL) > dtHoraR ) ) + { + StatusBar1 -> Panels -> Items[0] -> Text = "Re-Conectando... ("+ AnsiString( intentos ) +")"; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Re-Conectando (" + DialUp1 -> Entry +")" ); + DialUp1 -> Dial(); + } + } + } + } else { + if ( connected ) + { + ResetEstados(); + StatusBar1 -> Panels -> Items[0] -> Text = "Desconectando..."; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Desconectando (" + DialUp1 -> Entry +")" ); + DialUp1 -> HangUp(); + StatusBar1 -> Panels -> Items[0] -> Text = "Ready"; + } else { + if ( ShutDown->Checked && !connected && CurrentTime == HoraS->Time ) + { + ShutDown->Checked = false; + SalvaEstados(); + StatusBar1 -> Panels -> Items[0] -> Text = "Apagando equipo"; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " APAGANDO ORDENADOR" ); + //****************************** + //ApagarEQUIPO(); + //****************************** + } + } + TimerDialUp -> Enabled = true; + } +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::ResetEstados(void) +{ + intentos = -1; + connected = false; +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::HoraRChange(TObject *Sender) +{ + if ( HoraR->Time > (HoraU->Time - HoraL->Time) ) + HoraR->Time = 0; + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + + +void __fastcall TPropiedades::DialUp1Error(TObject *Sender, int ErrorCode, + AnsiString ErrorMessage) +{ + // Prohibimos el que se pueda volver a conectar... + if ( ErrorCode == ERROR_USER_DISCONNECTION ) + intentos = 20; + + connected = false; + StatusBar1 -> Panels -> Items[0] -> Text = ErrorMessage; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " ***************** (" + DialUp1 -> Entry +")" ); + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " ERROR: (" + ErrorMessage +")" ); + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " ***************** (" + DialUp1 -> Entry +")" ); + TimerDialUp -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::ConexionesDisponiblesChange(TObject *Sender) +{ + DialUp1 -> Entry = ConexionesDisponibles -> Text; + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + + +void __fastcall TPropiedades::FormDestroy(TObject *Sender) +{ + // Cerramos cualquier comunicación abierta + if ( connected && DesconectarSalir ) + DialUp1 -> HangUp(); + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Fin de sesión "); +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::OnExitClick(TObject *Sender) +{ + DesconectarSalir = OnExit -> Checked; + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::BorrarHistorialClick(TObject *Sender) +{ + mHistorial -> Lines -> Clear(); +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::mHistorialChange(TObject *Sender) +{ + try { + if ( Historial -> Checked ) + mHistorial -> Lines -> SaveToFile("Historial.log"); + } catch(...) { + // do nothing + } +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::CargaEstados(void) +{ + TRegistry *Registro; + Registro = new TRegistry; + + // Si es la primera vez que ejecuta el programa... + if ( ! Registro -> KeyExists("\\Software\\JDsoft\\Internet Conector") ) + try { + Registro -> OpenKey( "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", false ); + Registro -> WriteString( "InternetConector", Application->ExeName ); + }catch(...){ /*do nothing*/ } + +try{ + Registro -> OpenKey( "\\Software\\JDsoft", true ); + Registro -> OpenKey( "\\Software\\JDsoft\\Internet Conector", true ); + Historial->Checked = Registro -> ReadBool( "Historial" ); + ConexionesDisponibles->Text = Registro -> ReadString( "Conexion" ); + HoraL->Time = Registro -> ReadTime( "Inicio"); + HoraU->Time = Registro -> ReadTime( "Fin" ); + Reconectar->Checked = Registro -> ReadBool( "Reconectar" ); + bReintentos->Position = Registro -> ReadInteger( "Reintentos" ); + HoraR->Time = Registro -> ReadTime( "PreInicio" ); + AutoRun->Checked = Registro -> ReadBool( "AutoRun" ); + OnExit->Checked = Registro -> ReadBool( "AutoDesconexion" ); + ShutDown->Checked = Registro -> ReadBool( "AutoShutDown" ); + HoraS->Time = Registro -> ReadTime( "HoraShutDown" ); + +}catch(...){ + // do nothing +} + DialUp1 -> Entry = ConexionesDisponibles -> Text; + delete Registro; +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::SalvaEstados(void) +{ + if ( ! TimerDialUp -> Enabled ) return; + + TRegistry *Registro; + Registro = new TRegistry; + +try { + Registro -> OpenKey( "\\Software\\JDsoft", true ); + Registro -> OpenKey( "\\Software\\JDsoft\\Internet Conector", true ); + Registro -> WriteBool( "Historial", Historial->Checked ); + Registro -> WriteString( "Conexion", ConexionesDisponibles->Text ); + Registro -> WriteTime( "Inicio", HoraL->Time ); + Registro -> WriteTime( "Fin", HoraU->Time ); + Registro -> WriteBool( "Reconectar", Reconectar->Checked ); + Registro -> WriteInteger( "Reintentos", bReintentos->Position ); + Registro -> WriteTime( "PreInicio", HoraR->Time ); + Registro -> WriteBool( "AutoRun", AutoRun->Checked ); + Registro -> WriteBool( "AutoDesconexion", OnExit->Checked ); + Registro -> WriteBool( "AutoShutDown", ShutDown->Checked ); + Registro -> WriteTime( "HoraShutDown", HoraS->Time ); + + Registro -> OpenKey( "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", false ); + // Comprobamos el estado + if ( AutoRun -> Checked ) + Registro -> WriteString( "InternetConector", Application->ExeName ); + else + Registro -> DeleteValue( "InternetConector" ); + +}catch(...){ + //do nothing +} + delete Registro; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::ReconectarClick(TObject *Sender) +{ + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::NumReconexionesChange(TObject *Sender) +{ + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::HistorialClick(TObject *Sender) +{ + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::bReintentosClick(TObject *Sender, + TUDBtnType Button) +{ + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::AutoRunClick(TObject *Sender) +{ + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::ShutDownClick(TObject *Sender) +{ + bAplicar -> Enabled = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::bAceptarClick(TObject *Sender) +{ + SalvaEstados(); + Propiedades->Visible = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::bCancelarClick(TObject *Sender) +{ + CargaEstados(); + Propiedades->Visible = false; +} +//--------------------------------------------------------------------------- +void __fastcall TPropiedades::bAplicarClick(TObject *Sender) +{ + SalvaEstados(); + bAplicar -> Enabled = false; +} +//--------------------------------------------------------------------------- + + +void __fastcall TPropiedades::DialUp1Dialing(TObject *Sender) +{ + StatusBar1 -> Panels -> Items[0] -> Text = "Marcando..."; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Marcando... (" + DialUp1 -> Entry +")" ); +} +//--------------------------------------------------------------------------- + +void __fastcall TPropiedades::DialUp1AsyncEvent(TObject *Sender, int State, + int Error, AnsiString MessageText) +{ + if ( State == RASCS_Connected ) + { + intentos++; + connected = true; + StatusBar1 -> Panels -> Items[0] -> Text = "--> Conexión ABIERTA <--"; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Conexión abierta (" + DialUp1 -> Entry +")" ); + TimerDialUp -> Enabled = true; + } else { + StatusBar1 -> Panels -> Items[0] -> Text = MessageText; + mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + MessageText + " (" + DialUp1 -> Entry +")" ); + } +} +//--------------------------------------------------------------------------- + diff --git a/TPropiedades.dfm b/TPropiedades.dfm new file mode 100644 index 0000000..a12d8b4 Binary files /dev/null and b/TPropiedades.dfm differ diff --git a/TPropiedades.h b/TPropiedades.h new file mode 100644 index 0000000..8ce4b93 --- /dev/null +++ b/TPropiedades.h @@ -0,0 +1,98 @@ +//--------------------------------------------------------------------------- +#ifndef TPropiedadesH +#define TPropiedadesH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include "DialUp.h" +//--------------------------------------------------------------------------- +class TPropiedades : public TForm +{ +__published: // IDE-managed Components + TStatusBar *StatusBar1; + TPageControl *PageControl1; + TTabSheet *TabSheet1; + TBevel *Bevel1; + TLabel *Label1; + TComboBox *ConexionesDisponibles; + TDateTimePicker *HoraL; + TDateTimePicker *HoraU; + TLabel *Label2; + TLabel *Label3; + TLabel *Label4; + TDateTimePicker *HoraD; + TBitBtn *RefrescarConexiones; + TDialUp *DialUp1; + TTimer *TimerDialUp; + TCheckBox *Reconectar; + TEdit *NumReconexiones; + TUpDown *bReintentos; + TLabel *Label5; + TDateTimePicker *HoraR; + TTabSheet *TabSheet2; + TBevel *Bevel2; + TMemo *mHistorial; + TSpeedButton *BorrarHistorial; + TCheckBox *Historial; + TTabSheet *TabSheet3; + TBevel *Bevel3; + TCheckBox *OnExit; + TCheckBox *AutoRun; + TCheckBox *ShutDown; + TDateTimePicker *HoraS; + TButton *bAceptar; + TButton *bCancelar; + TButton *bAplicar; + TBevel *Bevel4; + void __fastcall HoraLChange(TObject *Sender); + void __fastcall HoraDChange(TObject *Sender); + void __fastcall HoraUChange(TObject *Sender); + + void __fastcall RefrescarConexionesClick(TObject *Sender); + + + + + void __fastcall DialUp1EntryGet(TObject *Sender, AnsiString EntryName); + void __fastcall TimerDialUpTimer(TObject *Sender); + + void __fastcall HoraRChange(TObject *Sender); + void __fastcall DialUp1Error(TObject *Sender, int ErrorCode, + AnsiString ErrorMessage); + void __fastcall ConexionesDisponiblesChange(TObject *Sender); + void __fastcall FormDestroy(TObject *Sender); + void __fastcall OnExitClick(TObject *Sender); + void __fastcall BorrarHistorialClick(TObject *Sender); + void __fastcall mHistorialChange(TObject *Sender); + void __fastcall ReconectarClick(TObject *Sender); + void __fastcall NumReconexionesChange(TObject *Sender); + void __fastcall HistorialClick(TObject *Sender); + void __fastcall bReintentosClick(TObject *Sender, TUDBtnType Button); + void __fastcall AutoRunClick(TObject *Sender); + void __fastcall ShutDownClick(TObject *Sender); + void __fastcall bAceptarClick(TObject *Sender); + void __fastcall bCancelarClick(TObject *Sender); + void __fastcall bAplicarClick(TObject *Sender); + void __fastcall DialUp1Dialing(TObject *Sender); + void __fastcall DialUp1AsyncEvent(TObject *Sender, int State, + int Error, AnsiString MessageText); +private: // User declarations + void __fastcall ResetEstados(void); + void __fastcall CargaEstados(void); + void __fastcall SalvaEstados(void); + + bool connected; + bool DesconectarSalir; + short int intentos; +public: // User declarations + __fastcall TPropiedades(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TPropiedades *Propiedades; +//--------------------------------------------------------------------------- +#endif diff --git a/TrayIcon.rar b/TrayIcon.rar new file mode 100644 index 0000000..4f5f90e Binary files /dev/null and b/TrayIcon.rar differ diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..c541e28 --- /dev/null +++ b/readme.txt @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- +// Borland C++Builder +// Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//--------------------------------------------------------------------------- + +TITLE: + TRAYICON + +DESCRIPTION: + Places an active icon on the Explorer's tray bar. + +DEMONSTRATES: + TEdit, TImage, TPopupMenu, TMenuItem, Event Handlers, Message Handler, + +COMMENTS: + + diff --git a/tmp1.ico b/tmp1.ico new file mode 100644 index 0000000..6cdc59c Binary files /dev/null and b/tmp1.ico differ diff --git a/tmp2.ico b/tmp2.ico new file mode 100644 index 0000000..0270e87 Binary files /dev/null and b/tmp2.ico differ diff --git a/trayicon.bpr b/trayicon.bpr new file mode 100644 index 0000000..7e0d845 --- /dev/null +++ b/trayicon.bpr @@ -0,0 +1,129 @@ +# --------------------------------------------------------------------------- +VERSION = BCB.03 +# --------------------------------------------------------------------------- +!ifndef BCB +BCB = $(MAKEDIR)\.. +!endif +# --------------------------------------------------------------------------- +PROJECT = trayicon.exe +OBJFILES = trayicon.obj traymain.obj TPropiedades.obj +RESFILES = trayicon.res +RESDEPEN = $(RESFILES) traymain.dfm TPropiedades.dfm +LIBFILES = +LIBRARIES = DCLUSR35.lib vclx35.lib VCLSMP35.lib VCL35.lib +SPARELIBS = VCL35.lib VCLSMP35.lib vclx35.lib DCLUSR35.lib +DEFFILE = +PACKAGES = VCLX35.bpi VCL35.bpi VCLDB35.bpi VCLDBX35.bpi bcbsmp35.bpi dclocx35.bpi \ + QRPT35.bpi TEEUI35.bpi TEEDB35.bpi TEE35.bpi ibsmp35.bpi NMFAST35.bpi \ + INETDB35.bpi INET35.bpi JDsoft.bpi +PATHASM = .; +PATHCPP = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +# --------------------------------------------------------------------------- +CFLAG1 = -Od -Hc -w -Ve -r- -k -y -v -vi- -c -b- -w-par -w-inl -Vx +CFLAG2 = -I$(BCB)\include;$(BCB)\include\vcl;"L:\Programación (-CBuilder-)\Jd Soft\" \ + -H=$(BCB)\lib\vcld.csm +CFLAG3 = +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(DEBUGLIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl;"L:\Programación (-CBuilder-)\Jd Soft\" -v \ + -JPHNV -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl;"L:\Programación (-CBuilder-)\Jd Soft\" +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /i"L:\Programación (-CBuilder-)\Jd Soft\" \ + /mx /w0 /zd +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(DEBUGLIBPATH) -aa -Tpe -x -v +IFLAGS = + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +.autodepend + +!if $d(IDEOPTIONS) +!endif + +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=0 +Release=0 +Build=50 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 + +[Version Info Keys] +FileVersion=1.0.0.50 + +[HistoryLists\hlIncludePath] +Count=4 +Item0=$(BCB)\include;$(BCB)\include\vcl;L:\Programación (-CBuilder-)\Jd Soft\ +Item1=$(BCB)\include;$(BCB)\include\vcl;L:\Programación (-CBuilder-)\Jd SoftItem1=$(BCB)\include;$(BCB)\include\vcl;L:\Programación (-CBuilder-)\Jd SoftItem1=$(BCB)\include;$(BCB)\include\vcl +Item2= +Item3= + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\lib\obj;$(BCB)\lib + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= + +!endif + +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! + +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) { $** } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) { $** } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) -o$* $* + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) -o$* $** + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) $< +# --------------------------------------------------------------------------- diff --git a/trayicon.cpp b/trayicon.cpp new file mode 100644 index 0000000..b9d0b23 --- /dev/null +++ b/trayicon.cpp @@ -0,0 +1,26 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +HINSTANCE g_hinst; +//--------------------------------------------------------------------------- +USEFILE("readme.txt"); +USEFORM("traymain.cpp", TrayMainForm); +USERES("trayicon.res"); +USEFORM("TPropiedades.cpp", Propiedades); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE hInstance, LPSTR, int) +{ + Application->Initialize(); + g_hinst = hInstance; + Application->CreateForm(__classid(TTrayMainForm), &TrayMainForm); + Application->CreateForm(__classid(TPropiedades), &Propiedades); + Application->ShowMainForm = false; + Application->Run(); + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/trayicon.exe b/trayicon.exe new file mode 100644 index 0000000..8f1db0a Binary files /dev/null and b/trayicon.exe differ diff --git a/trayicon.res b/trayicon.res new file mode 100644 index 0000000..9765522 Binary files /dev/null and b/trayicon.res differ diff --git a/traymain.cpp b/traymain.cpp new file mode 100644 index 0000000..b9d0c8d --- /dev/null +++ b/traymain.cpp @@ -0,0 +1,165 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +#include +#include +#include +#pragma hdrstop + +#include "traymain.h" +#include "TPropiedades.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TTrayMainForm *TrayMainForm; +//--------------------------------------------------------------------------- +__fastcall TTrayMainForm::TTrayMainForm(TComponent* Owner) + : TForm(Owner) +{ + Running = true; + TrayMessage(NIM_ADD); + TrayMessage(NIM_MODIFY); +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::DrawItem(TMessage& Msg) +{ + IconDrawItem((LPDRAWITEMSTRUCT)Msg.LParam); + TForm::Dispatch(&Msg); +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::MyNotify(TMessage& Msg) +{ + POINT MousePos; + + switch(Msg.LParam) + { + case WM_RBUTTONUP: + if ( GetCursorPos(&MousePos) ) + { + PopupMenu1->PopupComponent = Propiedades; + SetForegroundWindow(Handle); + PopupMenu1->Popup(MousePos.x, MousePos.y); + PopupMenu1->PopupComponent = 0; + } + else + Show(); + break; + case WM_LBUTTONDBLCLK: + Properties1Click(0); + break; +/* + case WM_LBUTTONUP: + Properties1Click(0); + break; +*/ + default: + break; + } + TForm::Dispatch(&Msg); +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::FormDestroy(TObject *Sender) +{ + TrayMessage(NIM_DELETE); +} +//--------------------------------------------------------------------------- +bool __fastcall TTrayMainForm::TrayMessage(DWORD dwMessage) +{ + NOTIFYICONDATA tnd; + PSTR pszTip; + + pszTip = TipText(); + + tnd.cbSize = sizeof(NOTIFYICONDATA); + tnd.hWnd = Handle; + tnd.uID = IDC_MYICON; + tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; + tnd.uCallbackMessage = MYWM_NOTIFY; + + if (dwMessage == NIM_MODIFY) + { + tnd.hIcon = IconHandle(); + if (pszTip) + lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip)); + else + tnd.szTip[0] = '\0'; + } + else + { + tnd.hIcon = NULL; + tnd.szTip[0] = '\0'; + } + + return (Shell_NotifyIcon(dwMessage, &tnd)); +} +//--------------------------------------------------------------------------- +HANDLE __fastcall TTrayMainForm::IconHandle(void) +{ + if (Running) + return imagenOn -> Picture->Icon->Handle; + else + return imagenOFF -> Picture->Icon->Handle; +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::ToggleState(void) +{ + Running = !Running; + TrayMessage(NIM_MODIFY); +} +//--------------------------------------------------------------------------- +PSTR __fastcall TTrayMainForm::TipText(void) +{ + if (Running) + return ("Lanzador de RAS's esta Activado."); + else + return ("-- DESACTIVADO --"); +} +//--------------------------------------------------------------------------- +LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi) +{ + HICON hIcon; + + hIcon = (HICON)LoadImage(g_hinst, MAKEINTRESOURCE(lpdi->CtlID), IMAGE_ICON, + 16, 16, 0); + if (!hIcon) + return(FALSE); + + DrawIconEx(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top, hIcon, + 16, 16, 0, NULL, DI_NORMAL); + + return(TRUE); +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::Properties1Click(TObject *Sender) +{ +// Show(); + Propiedades -> Visible = !(Propiedades->Visible); +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::ToggleState1Click(TObject *Sender) +{ + ToggleState(); +} +//--------------------------------------------------------------------------- +void __fastcall TTrayMainForm::Shutdown1Click(TObject *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TTrayMainForm::BSalirClick(TObject *Sender) +{ + Visible = false; +} +//--------------------------------------------------------------------------- + + +void __fastcall TTrayMainForm::FormCreate(TObject *Sender) +{ + Visible = false; +} +//--------------------------------------------------------------------------- + + \ No newline at end of file diff --git a/traymain.dfm b/traymain.dfm new file mode 100644 index 0000000..22a974b Binary files /dev/null and b/traymain.dfm differ diff --git a/traymain.h b/traymain.h new file mode 100644 index 0000000..bf0dabb --- /dev/null +++ b/traymain.h @@ -0,0 +1,65 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +#ifndef traymainH +#define traymainH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#define MYWM_NOTIFY (WM_APP+100) +#define IDC_MYICON 1006 +extern HINSTANCE g_hinst; +LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi); +//--------------------------------------------------------------------------- +class TTrayMainForm : public TForm +{ +__published: + TPopupMenu *PopupMenu1; + TMenuItem *Properties1; + TMenuItem *ToggleState1; + TMenuItem *Shutdown1; + TMenuItem *N1; + TMenuItem *N2; + TMenuItem *Acercade1; + TImage *imagenOn; + TImage *imagenOFF; + TSpeedButton *BSalir; + TMenuItem *Estado1; + void __fastcall FormDestroy(TObject *Sender); + void __fastcall Properties1Click(TObject *Sender); + void __fastcall ToggleState1Click(TObject *Sender); + void __fastcall Shutdown1Click(TObject *Sender); + + + + void __fastcall BSalirClick(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); +private: // private user declarations + void __fastcall DrawItem(TMessage& Msg); + void __fastcall MyNotify(TMessage& Msg); + bool __fastcall TrayMessage(DWORD dwMessage); + HANDLE __fastcall IconHandle(void); + void __fastcall ToggleState(void); + PSTR __fastcall TipText(void); + bool Running; +public: // public user declarations + virtual __fastcall TTrayMainForm(TComponent* Owner); +BEGIN_MESSAGE_MAP +MESSAGE_HANDLER(WM_DRAWITEM,TMessage,DrawItem) +MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,MyNotify) +END_MESSAGE_MAP(TForm) +}; +//--------------------------------------------------------------------------- +extern TTrayMainForm *TrayMainForm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file