Aztaroth Cdt

Registrado: 20 Nov 2003Mensajes: 8Ubicación: Mexico
|
Publicado: Vie 14 May, 2004 11:38 pm Asunto: TServiceApplication |
|
|
Ok, tengo una aplicacion TService la cual tiene el proposito de que cuando un usuario quiera arrancar iExplorer o MSN Messenger lo cierre automaticamente, el programa corre bien como aplicacion normal, pero ahora la quiero hacer como un servicio, el problema radica en que cuando instalo el servicio unicamente cuando lo instalo cierra el Explorer y el Messenger, pero no si abro otra vez Explorer lo abre sin problemas.
Mi pregunta es como hago para que mi Servicio este monitoreando cada determinado tiempo.
Quise solucionarlo anadiendo un TTimer y en la propiedad Timer1 a cada 5 seg, pero como les digo nadamas la primera vez lo hace, despues ya no.
//---------------------------------------------------------------------------
#include "IEAccess.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TService1 *Service1;
//---------------------------------------------------------------------------
__fastcall TService1::TService1(TComponent* Owner)
: TService(Owner)
{
}
TServiceController __fastcall TService1::GetServiceController(void)
{
return (TServiceController) ServiceController;
}
void __stdcall ServiceController(unsigned CtrlCode)
{
Service1->Controller(CtrlCode);
}
//---------------------------------------------------------------------------
void __fastcall TService1::Timer1Timer(TObject *Sender)
{
// EnumWindows((WNDENUMPROC)GetWinHandleAll, 0);
char classname[80];
char windowtitle[80];
// SendMessage(this->Handle , WM_SYSCOMMAND, SC_MINIMIZE,0);
HWND handle = FindWindow("IEFRAME", NULL);
GetWindowText(handle, windowtitle, 80);
GetClassName(handle, classname, 80);
if(handle )
{ //WM_EXIT
SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE,0);
}
handle = FindWindow("IMWindowClass", NULL);
GetWindowText(handle, windowtitle, 80);
GetClassName(handle, classname, 80);
if(handle )
{
SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE,0);
}
handle = FindWindow("MSBLClass", NULL);
GetWindowText(handle, windowtitle, 80);
GetClassName(handle, classname, 80);
if(handle )
{
SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE,0);
}
handle = FindWindow("#32770", NULL);
GetWindowText(handle, windowtitle, 80);
GetClassName(handle, classname, 80);
if(handle && (windowtitle != "Administrador de Tareas de Windows") && (windowtitle != "Close Program") && (windowtitle != "Windows Task Manager") )
{
SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE,0);
}
}
//---------------------------------------------------------------------------
void __fastcall TService1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Timer1Timer(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TService1::ServiceExecute(TService *Sender)
{
// ShowMessage("Someone try to connect to internet");
Timer1Timer(Sender);
}
//---------------------------------------------------------------------------
esta algo rustico pero es funcional, para mi proposito, ya cuando funcione como yo deseo lo depuro y lo redusco lo mas que pueda, si alguien podria echarme una mano se los agradeceria bastante. |
|