/****************************************\ |* */ #define ESTOY_PROBANDO // #define SIN_BLOQUEOS /* *| \****************************************/ //--------------------------------------------------------------------------- #include #pragma hdrstop #include "CtrlDog.h" #include "CtrlD_PasswordDlg.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "Phantom" #pragma link "DigitNum" #pragma resource "*.dfm" #include #include #define RECORDSYSTEM "C:\\WinRCD.log" TDog *Dog; //--------------------------------------------------------------------------- __fastcall TDog::TDog(TComponent* Owner) : TForm(Owner) { try { Memo1->Lines->LoadFromFile( RECORDSYSTEM ); if ( Memo1->Lines->Count > 400 ) { for ( int i=0; i<100; i++ ) Memo1->Lines->Delete( 3 ); } } catch(...) { Memo1->Lines->Clear(); } siMinimizar = new TStringList(); noMinimizar = new TStringList(); snMinimizar = new TStringList(); noAbrir = new TStringList(); ObtenListaAplicaciones(); AllowClose = false; CanBeDisconect = true; Dig1->Value = 0; Dig2->Value = 0; TrayMessage(NIM_ADD); TrayMessage(NIM_MODIFY); Application->OnMinimize = AppRestore; HookAutoStartProgram(); Top = ( Screen->Height / 2) - (Height / 2 ); Left = ( Screen->Width / 2 )- (Width / 2 ); iLockSystem( true ); /* typedef struct tagACCEL { // accl BYTE fVirt; WORD key; WORD cmd; } ACCEL; */ /* ACCEL AltTAB; AltTAB.fVirt = FALT; AltTAB.key = VK_TAB; AltTAB.cmd = 0; HACCEL hAltTAB = CreateAcceleratorTable( &AltTAB, 1 ); */ Tiempo = EncodeTime( 0, 0, 0, 0 ); TryClose = false; /****/ Tiempo = EncodeTime( 0, 0, 30, 0 ); SetState(true); /****/ } //--------------------------------------------------------------------------- void __fastcall TDog::DrawItem(TMessage& Msg) { IconDrawItem((LPDRAWITEMSTRUCT)Msg.LParam); TForm::Dispatch(&Msg); } //--------------------------------------------------------------------------- void __fastcall TDog::MyNotify(TMessage& Msg) { POINT MousePos; switch(Msg.LParam) { case WM_RBUTTONUP: if ( GetCursorPos(&MousePos) ) { PopupMenu1->PopupComponent = Dog; SetForegroundWindow(Handle); PopupMenu1->Popup(MousePos.x, MousePos.y); PopupMenu1->PopupComponent = 0; } break; case WM_LBUTTONDBLCLK: Height = 126; Visible = true; break; default: break; } TForm::Dispatch(&Msg); } //--------------------------------------------------------------------------- bool __fastcall TDog::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 TDog::IconHandle(void) { return Image1 -> Picture->Icon->Handle; } //--------------------------------------------------------------------------- PSTR __fastcall TDog::TipText(void) { if (Timer1->Enabled) return ("Acceso al sistema premitido"); else { Memo1->Lines->Insert( 0, DateTimeToStr(Now()) + " ATACANTE DESCONOCIDO (ACCESO NO AUTORIZADO)" ); Memo1->Lines->Insert( 0, DateTimeToStr(Now()) + " -------- ALARMA SILENCIOSA ACTIVADA -------" ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); return ("SISTEMA PROTEGIDO"); } } //--------------------------------------------------------------------------- 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 TDog::SetState( bool OnOff ) { ///////////// Memo1->Lines->Insert( 0, "Terminal " + (OnOff ? AnsiString("ON") : AnsiString("OFF") ) ); if ( OnOff ) { TiempoInicio = TDateTime::CurrentTime(); Memo1->Lines->Insert( 0, " `------ Durante --> " + Tiempo.TimeString() ); unsigned short hour, min, sec, msec; Tiempo.DecodeTime( &hour, &min, &sec, &msec ); Timer1->Interval = msec + ( sec + ( (min+2) + hour*60 )*60 )*1000 ; Timer1->Enabled = true; Reloj->Enabled = true; Dig1->Value = hour; Dig2->Value = min; SystemLock->Enabled = false; iLockSystem( false ); } else { Tiempo = 0; SystemLock->Enabled = true; Timer1->Enabled = false; Reloj->Enabled = false; Dig1->Value = 0; Dig2->Value = 0; iLockSystem( true ); } Memo1->Lines->SaveToFile( RECORDSYSTEM ); } //--------------------------------------------------------------------------- void __fastcall TDog::ServerSocketAccept(TObject *Sender, TCustomWinSocket *Socket) { StatusBar1->SimpleText = "Conexión aceptada de " + Socket->RemoteAddress; Memo1->Lines->Insert( 0, StatusBar1->SimpleText ); int CodOp; double pTiempo; CanBeDisconect = false; Socket->ReceiveBuf( &CodOp, sizeof(int) ); switch( CodOp ) { // On / Off case 6669: Socket->ReceiveBuf( &CodOp, sizeof(int) ); Socket->ReceiveBuf( &pTiempo, sizeof(double) ); Tiempo = pTiempo; SetState( CodOp ? true : false ); CodOp = 54321; Socket->SendBuf( &CodOp, sizeof(int) ); break; // CERRAR WINDOWS case 6660: Socket->ReceiveBuf( &CodOp, sizeof(int) ); Socket->ReceiveBuf( &pTiempo, sizeof(double) ); Tiempo = pTiempo; CodOp = 54321; Socket->SendBuf( &CodOp, sizeof(int) ); CanBeDisconect = true; Memo1->Lines->Insert( 0, "Recibida petición de CERRAR WINDOWS ::" + Socket->RemoteAddress ); CerrarWindows1Click(0); break; // Query TIME case 6661: Memo1->Lines->Insert( 0, "Recibida petición de Tiempo ::" + Socket->RemoteAddress ); Socket->SendBuf( &Tiempo, sizeof(double) ); // Socket->SendBuf( &TiempoInicio, sizeof(double) ); Socket->SendBuf( &(Tiempo - ( TDateTime::CurrentTime() - TiempoInicio )), sizeof(double) ); CodOp = 54321; Socket->SendBuf( &CodOp, sizeof(int) ); Memo1->Lines->Insert( 0, " -----> Tiempo pedido " + Tiempo ); Memo1->Lines->Insert( 0, " -----> Tiempo inicio " + TiempoInicio ); Memo1->Lines->Insert( 0, " -----> Servidor " + Socket->RemoteAddress ); break; // Actualizar listas case 6662: { int NumApli, i; TRegistry *Registro; char *Buffer; Registro = new TRegistry; Registro -> OpenKey( "\\Software\\JDsoft\\CtrlMstr", true ); Memo1->Lines->Insert( 0, "Actualizando Listas ::" + Socket->RemoteAddress ); Socket->ReceiveBuf( &NumApli, sizeof(int) ); Buffer = new char[ 15*NumApli ]; Registro -> WriteInteger( "NAppl-sC", NumApli ); for ( i=0; iReceiveBuf( (Buffer+15*i), sizeof(char)*15 ); Registro -> WriteBinaryData( "LAppl-sC", Buffer, sizeof(char)*15*NumApli+1 ); delete Buffer; Socket->ReceiveBuf( &NumApli, sizeof(int) ); Buffer = new char[ 15*NumApli ]; Registro -> WriteInteger( "NAppl-nC", NumApli ); for ( i=0; iReceiveBuf( (Buffer+15*i), sizeof(char)*15 ); Registro -> WriteBinaryData( "LAppl-nC", Buffer, sizeof(char)*15*NumApli+1 ); delete Buffer; Socket->ReceiveBuf( &NumApli, sizeof(int) ); Buffer = new char[ 15*NumApli ]; Registro -> WriteInteger( "NAppl-snC", NumApli ); for ( i=0; iReceiveBuf( (Buffer+15*i), sizeof(char)*15 ); Registro -> WriteBinaryData( "LAppl-snC", Buffer, sizeof(char)*15*NumApli+1 ); delete Buffer; Socket->ReceiveBuf( &NumApli, sizeof(int) ); Buffer = new char[ 15*NumApli ]; Registro -> WriteInteger( "NAppl-nA", NumApli ); for ( i=0; iReceiveBuf( (Buffer+15*i), sizeof(char)*15 ); Registro -> WriteBinaryData( "LAppl-nA", Buffer, sizeof(char)*15*NumApli+1 ); delete Buffer; delete Registro; } CodOp = 54321; Socket->SendBuf( &CodOp, sizeof(int) ); ObtenListaAplicaciones(); break; default: Memo1->Lines->Insert( 0, "Mensaje desconocido ::" + Socket->RemoteAddress ); CodOp = -1; Socket->SendBuf( &CodOp, sizeof(int) ); } Memo1->Lines->Insert( 0, "Tramites Finalizados ::" + Socket->RemoteAddress ); StatusBar1->SimpleText = "Escuchando nuevas ordenes..."; Memo1->Lines->SaveToFile( RECORDSYSTEM ); CanBeDisconect = true; } //--------------------------------------------------------------------------- void __fastcall TDog::ObtenListaAplicaciones(void) { int i, nListaS, nListaN, nListaSN, nListaA; char *Buffer; TRegistry *Registro; Registro = new TRegistry; try { Registro -> OpenKey( "\\Software\\JDsoft\\CtrlMstr", false ); nListaS = Registro -> ReadInteger( "NAppl-sC" ); Buffer = new char [ nListaS*15 + 1 ]; Registro -> ReadBinaryData( "LAppl-sC", (void *)Buffer, (sizeof(char)*15*nListaS +1) ); siMinimizar->Clear(); //ShowMessage( AnsiString(nListaS) ); for ( i=0; i < nListaS; i++ ) //{ siMinimizar->Add( AnsiString( (char *)(Buffer+i*15) ) ); //Memo1->Lines->Insert( 0, AnsiString( (char *)(Buffer+i*15) ) ); //} delete Buffer; nListaN = Registro -> ReadInteger( "NAppl-nC" ); Buffer = new char [ nListaN*15 ]; Registro -> ReadBinaryData( "LAppl-nC", (void *)Buffer, (sizeof(char)*15*nListaN +1) ); noMinimizar->Clear(); for ( i=0; i < nListaN; i++ ) //{ noMinimizar->Add( AnsiString( (char *)(Buffer+i*15) ) ); //Memo1->Lines->Insert( 0, (Buffer+i*15) ); //} delete Buffer; nListaSN = Registro -> ReadInteger( "NAppl-snC" ); Buffer = new char [ nListaSN*15 ]; Registro -> ReadBinaryData( "LAppl-snC", (void *)Buffer, (sizeof(char)*15*nListaSN +1) ); noMinimizar->Clear(); for ( i=0; i < nListaSN; i++ ) snMinimizar->Add( AnsiString( (char *)(Buffer+i*15) ) ); delete Buffer; nListaA = Registro -> ReadInteger( "NAppl-nA" ); Buffer = new char [ nListaA*15 ]; Registro -> ReadBinaryData( "LAppl-nA", (void *)Buffer, (sizeof(char)*15*nListaA +1) ); noAbrir->Clear(); for ( i=0; i < nListaA; i++ ) noAbrir->Add( AnsiString( (char *)(Buffer+i*15) ) ); delete Buffer; } catch(...) { // nothing } Memo1->Lines->Insert( 0, Format( "Listas Cargadas: %02dS::%02dN", ARRAYOFCONST( ( siMinimizar->Count, noMinimizar->Count ) ) ) ); Memo1->Lines->Insert( 0, Format( "Listas Cargadas: %02dC::%02dA", ARRAYOFCONST( ( snMinimizar->Count, noAbrir->Count ) ) ) ); delete Registro; } //--------------------------------------------------------------------------- void __fastcall TDog::ServerSocketClientConnect(TObject *Sender, TCustomWinSocket *Socket) { StatusBar1->SimpleText = "Cliente Conectado "; Memo1->Lines->Insert( 0, "Cliente Conectado " ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); } //--------------------------------------------------------------------------- void __fastcall TDog::ServerSocketClientDisconnect(TObject *Sender, TCustomWinSocket *Socket) { if ( ! CanBeDisconect ) Memo1->Lines->Insert( 0, "DESCONEXION FORZADA ::" + Socket->LocalAddress ); else Memo1->Lines->Insert( 0, "Desconexión en regla ::" ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); } //--------------------------------------------------------------------------- void __fastcall TDog::ServerSocketClientError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cliente ¡ ERROR ! " + AnsiString( ErrorCode ) + "::" + Socket->LocalAddress ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); } //--------------------------------------------------------------------------- void __fastcall TDog::ServerSocketGetSocket(TObject *Sender, int Socket, TServerClientWinSocket *&ClientSocket) { Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Obtuvimos un socket" ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); } //--------------------------------------------------------------------------- void __fastcall TDog::ServerSocketListen(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " /----->" + Socket->RemoteAddress ); Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Estoy escuchando ::" + Socket->LocalAddress ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); } //--------------------------------------------------------------------------- void __fastcall TDog::FormClose(TObject *Sender, TCloseAction &Action) { ServerSocket->Active = false; if ( AllowClose ) { delete siMinimizar; delete noMinimizar; delete snMinimizar; delete noAbrir; } else { #ifndef ESTOY_PROBANDO iLockSystem( true ); #endif } } //--------------------------------------------------------------------------- void __fastcall TDog::Timer1Timer(TObject *Sender) { SetState( false ); StatusBar1->SimpleText = "Sistema OFF --FORZADO--"; } //--------------------------------------------------------------------------- void __fastcall TDog::FormCloseQuery(TObject *Sender, bool &CanClose) { Visible = false; #ifndef ESTOY_PROBANDO CanClose = AllowClose; #else iLockSystem( false ); #endif } //--------------------------------------------------------------------------- void __fastcall TDog::FormShow(TObject *Sender) { if ( Timer1->Enabled ) { Reloj->Enabled=true; RelojTimer(0); } } //--------------------------------------------------------------------------- void __fastcall TDog::RelojTimer(TObject *Sender) { // Actualizamos el tiempo que queda... unsigned short hour, min, sec, msec; (Tiempo - ( TDateTime::CurrentTime() - TiempoInicio )).DecodeTime( &hour, &min, &sec, &msec ); Dig1->Value = hour; Dig2->Value = min; } //--------------------------------------------------------------------------- void __fastcall TDog::Label1DblClick(TObject *Sender) { if ( Height == 354 ) Height = 126; else Height = 354; } //--------------------------------------------------------------------------- void __fastcall TDog::Tiemporestante1Click(TObject *Sender) { Visible = true; Height = 126; } //--------------------------------------------------------------------------- void __fastcall TDog::Status1Click(TObject *Sender) { Visible = true; Height = 354; } //--------------------------------------------------------------------------- void __fastcall TDog::CerrarWindows1Click(TObject *Sender) { // Shut down the system and force all applications to close. AllowClose = true; HookAutoStartProgram(); #ifndef SIN_BLOQUEOS if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_POWEROFF, 0)) #endif { AllowClose = false; Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " Error durante el cierre" ); Memo1->Lines->SaveToFile( RECORDSYSTEM ); } } //--------------------------------------------------------------------------- void __fastcall TDog::FormDestroy(TObject *Sender) { HookAutoStartProgram(); TrayMessage(NIM_DELETE); } //--------------------------------------------------------------------------- void __fastcall TDog::HookAutoStartProgram(void) { #ifndef SIN_BLOQUEOS TRegistry *Registro; Registro = new TRegistry; try { Registro -> OpenKey( "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", true ); Registro -> WriteString( "WinPowerManager", Application->ExeName ); } catch(...) { // Do nothing... } delete Registro; #endif } //--------------------------------------------------------------------------- bool MultimediaActive; bool GetStyle( HWND hdl ) { long style; bool dev; dev = false; style = GetWindowLong(hdl,GWL_STYLE); if(( style & WS_POPUP) == WS_POPUP) { if(((style & WS_GROUP) == WS_GROUP) && ! ((style & WS_DISABLED) == WS_DISABLED) && ((style & WS_SYSMENU) == WS_SYSMENU)) dev = true; } else { dev = true; } return dev; }; //--------------------------------------------------------------------------- BOOL __stdcall MinimizeAllAplications( HWND hwnd, LPARAM lParam ) { bool dev; int i; char lpString[50]; AnsiString Text; dev = true; if ( hwnd != 0 ) { GetWindowText( hwnd, lpString, 40 ); Text = AnsiString( lpString ); // Aplicaciones especiales que he de minimizar constantemente... if ( Text.Pos("Episode I Racer" ) || Text.Pos("Quake" ) ) { ShowWindow( hwnd, SW_MINIMIZE ); return dev; } // LISTA DINAMICA DE VENTANAS A MINIMIZAR for ( i=0; i < siMinimizar->Count; i++ ) if ( Text.Pos( siMinimizar->Strings[i] ) ) { ShowWindow( hwnd, SW_MINIMIZE ); return dev; } // Solo Ventanas visibles... if ( IsWindowVisible( hwnd ) ) { // ...y ademas ventanas PADRES if ( GetWindow( hwnd, GW_OWNER) == 0 ) { if ( ! GetStyle( hwnd ) ) { if ( IsWindow( GetLastActivePopup( hwnd ) ) ) { auto HWND hwPop; hwPop = GetLastActivePopup( hwnd ); if ( !GetStyle(hwPop) ) return true; } else return true; } // LA VENTANA ES TIPO -TASK-BAR- y ADEMAS ES VISIBLE // Ventanas ante las cuales me oculto if ( Text.Pos("Reproductor mul") != 0 || Text.Pos("Informática DJ") ) { MultimediaActive = true; return true; } // LISTA DINAMICA DE VENTANAS A RESPETAR for ( i=0; i < noMinimizar->Count; i++ ) if ( Text.Pos( noMinimizar->Strings[i] ) ) { MultimediaActive = true; return true; } // Ventanas que no he de minimizar (PERO QUEDO DE PRIMER PLANO) if ( ! ( Text.Pos("Sistema de Control") || Text.Pos("Creditos ocultos") ) ) { ShowWindow( hwnd, SW_MINIMIZE ); } } } } else { dev = false; } return dev; }; /* procedure TForm1.TerminateProcess1Click(Sender: TObject); const PROCESS_TERMINATE = 1; var ProcHandle: THandle; begin if (ListBox1.Items.count < 1) OR (ListBox1.ItemIndex < 0) then exit; if (MessageDlg('Process: --> ' + ListBox1.Items[ListBox1.itemIndex]+ #10#13#10#13+ 'TerminateProcess may lead the system into an instable state! '+#10#13+ 'You should use this function only if you are sure about doing so.'+#10#13+ 'Are You sure?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin ProcHandle := OpenProcess(PROCESS_TERMINATE, FALSE, DWORD(WinList1.GetProcessID(ListBox1.ItemIndex))); try if ProcHandle <> 0 then begin if TerminateProcess(ProcHandle, $FFFFFFFF) then WaitForSingleObject(ProcHandle, INFINITE); end else MessageDlg('Can not find the handle of the selected prozess!', mtError, [mbOK], 0); finally CloseHandle(ProcHandle); end; Refresh1Click(Sender); end; end; */ //--------------------------------------------------------------------------- /* BOOL __stdcall MyEnumDesktopProc( LPTSTR lpszDesktop, LPARAM lParam ) { EnumDesktopWindows( lpszDesktop, ( WNDENUMPROC )MinimizeAllAplications, 0 ); return true; }; */ //--------------------------------------------------------------------------- void __fastcall TDog::SystemLockTimer(TObject *Sender) { #ifndef SIN_BLOQUEOS MultimediaActive = false; EnumWindows( ( WNDENUMPROC )MinimizeAllAplications, 0 ); if ( MultimediaActive || TryClose ) { Visible = false; } else { Top = ( Screen->Height / 2) - (Height / 2 ); Left = ( Screen->Width / 2 )- (Width / 2 ); if ( !Visible )Show(); // ShowWindow(this->Handle,SW_RESTORE); SetForegroundWindow(this->Handle); } #endif iLockSystem( true ); } //--------------------------------------------------------------------------- void __fastcall TDog::AppRestore(TObject *Sender) { Application->Restore(); } //--------------------------------------------------------------------------- void __fastcall TDog::Shape2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if ( Shift.Contains(ssShift) && Shift.Contains(ssAlt) && Shift.Contains(ssCtrl) && Shift.Contains(ssDouble) ) { TryClose = true; TPasswordDlg *PasswordDlg; PasswordDlg = new TPasswordDlg(this); PasswordDlg->Password->Clear(); PasswordDlg -> ShowModal(); if ( PasswordDlg->Password->Text == "44959229170877" ) // if ( InputBox( "Creditos ocultos", "Donde estan:", "los creditos ocultos" ) == "44959229" ) { TryClose = false; AllowClose=true; iLockSystem( false ); Close(); } delete PasswordDlg; TryClose = false; } } //--------------------------------------------------------------------------- void __fastcall TDog::FormResize(TObject *Sender) { Top = ( Screen->Height / 2) - (Height / 2 ); Left = ( Screen->Width / 2 )- (Width / 2 ); #ifndef SIN_BLOQUEOS if ( SystemLock->Enabled ) { iLockSystem( true ); } #endif } //--------------------------------------------------------------------------- void __fastcall TDog::iLockSystem( bool status ) { #ifdef SIN_BLOQUEOS status = false; #endif if ( ! status ) // LIBRE DE BLOQUEOS { ClipCursor( NULL ); SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, NULL,0); // BorderIcons = (TBorderIcons()<< biSystemMenu); } else { // INICIANDO BLOQUEOS RECT ClipRect = { Left+2, Top+25, Left+Width-2, Top+120-20 }; ClipCursor( &ClipRect ); SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1,NULL, 0); // BorderIcons = BorderIcons - (TBorderIcons()<< biSystemMenu); } #define iTRAYBAR 0 #define iTRAYNOTIFY 1 #define iSTARTBUTTON 2 #define iAPPSWITCHBAR 3 #define iTRAYCLOCK 4 #define iDESKTOPICONS 5 HideOpt( iTRAYBAR, status ); HideOpt( iTRAYNOTIFY, status ); HideOpt( iSTARTBUTTON, status ); HideOpt( iAPPSWITCHBAR, status ); HideOpt( iTRAYCLOCK, status ); HideOpt( iDESKTOPICONS, status ); } //--------------------------------------------------------------------------- void __fastcall TDog::HideOpt( int Option, bool Hide ) { HWND Wnd; switch( Option ) { case iTRAYBAR : Wnd = FindWindow("Shell_TrayWnd", NULL); break; case iTRAYNOTIFY : Wnd = FindWindow("Shell_TrayWnd", NULL); Wnd = FindWindowEx(Wnd, HWND(0), "TrayNotifyWnd", NULL); break; case iSTARTBUTTON : Wnd = FindWindow("Shell_TrayWnd", NULL); Wnd = FindWindowEx(Wnd, HWND(0), "Button", NULL); break; case iAPPSWITCHBAR : Wnd = FindWindow("Shell_TrayWnd", NULL); Wnd = FindWindowEx(Wnd, HWND(0), "ReBarWindow32", NULL); break; case iTRAYCLOCK : Wnd = FindWindow("Shell_TrayWnd", NULL); Wnd = FindWindowEx(Wnd, HWND(0), "TrayNotifyWnd", NULL); Wnd = FindWindowEx(Wnd, HWND(0), "TrayClockWClass", NULL); break; case iDESKTOPICONS : Wnd = FindWindow("Progman", NULL); Wnd = FindWindowEx(Wnd, HWND(0), "ShellDll_DefView", NULL); break; } if ( Wnd != 0 ) { if ( Hide ) ShowWindow(Wnd, SW_HIDE); else ShowWindow(Wnd, SW_SHOW); } } //--------------------------------------------------------------------------- void __fastcall TDog::Shape1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { #ifdef ESTOY_PROBANDO static bool Rotate = true; Tiempo = EncodeTime( 0, 1, 0, 0 ); if ( Rotate ) SetState( true ); else SetState( false ); Rotate = !Rotate; #endif } //--------------------------------------------------------------------------- void __fastcall TDog::FormClick(TObject *Sender) { if ( !SystemLock->Enabled ) Visible = false; } //--------------------------------------------------------------------------- void __fastcall TDog::Label2Click(TObject *Sender) { char zFileName[80], zParams[80], zDir[80]; if ( !SystemLock->Enabled ) ShellExecute(Application->MainForm->Handle, 0, StrPCopy(zFileName, "http:\\\\www.infdj.com"), StrPCopy(zParams, ""), StrPCopy(zDir, ""), SW_SHOWNOACTIVATE > 32); } //---------------------------------------------------------------------------