Programación General > C++ Builder

 Como Crear Programas Ocultos

(1/3) > >>

© Jonathan ©:
Hola a todos, esta vez tengo la siguiente duda, hay programas que funcionan ocultos, el usuario no sabe que esta ejecutado... investigue y esto se llama modo de servicio, quisiera saber como puedo hacer un programa que trabaje oculto, es decir, por ejemplo hago un programa que cada 5 minutos me genere un archivo con el estado de memoria del PC, el achivo se guardara en un directorio en el disco duro, luego otro programa leera ese archivo, pero lo que necesitaria es que el programa que genera el archivo con los datos trabaje de manera oculta... Bueno, espero haberme explicado bien, gracias por sus respuesta y Saludos :hola:

_Viktor:
Hola de nuevo... aqui te dejo el codigo necesario que tienes que agregar al Proyect1.cpp (al fuente principal de tu proyecto):


--- Código: Text ---WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){    try    {        Application->Initialize();        Application->CreateForm(__classid(TForm1), &Form1);         //Agrega estas dos lineas en esta misma posicion.        Application->ShowMainForm = false;        ShowWindow(Application->Handle, SW_HIDE);         Application->Run();    }    catch (Exception &exception)    {        Application->ShowException(&exception);    }    return 0;} 
Ahora si tambien quieres ocultarlo para que no aparesca en el Administrador de tareas (Ctrl + Alt + Supr) tienes dos posibilidades:

1.- Ocultarlo usando un truco:


--- Código: Text ---WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){    try    {         Application->Title = ""; //Esta linea lo hace         Application->Initialize();         Application->CreateForm(__classid(TForm1), &Form1);         Application->Run();    }    catch (Exception &exception)    {         Application->ShowException(&exception);    }    return 0;} 2.- O Registrando tu aplicacion como un servicio, que seria lo correcto, para eso tienes que modificar el .h y .cpp de tu formulario principal:


--- Código: Text ---//------------Archivo Cabecera .h ------------------------------typedef DWORD (__stdcall *pRegFunction)(DWORD, DWORD); class TForm1 : public TForm{__published:    TButton *Button1;private:    HINSTANCE hKernelLib;    pRegFunction RegisterServiceProcess;public:    __fastcall TForm1(TComponent* Owner);    __fastcall ~TForm1();};  //-----------Archivo fuente .cpp------------------------------#include "Unit1.h" #define RSP_SIMPLE_SERVICE     1#define RSP_UNREGISTER_SERVICE 0 __fastcall TForm1::TForm1(TComponent* Owner)    : TForm(Owner){    hKernelLib = LoadLibrary("kernel32.dll");    if(hKernelLib)    {        RegisterServiceProcess =                  (pRegFunction)GetProcAddress(hKernelLib,                                               "RegisterServiceProcess");         if(RegisterServiceProcess)            RegisterServiceProcess(GetCurrentProcessId(),                                   RSP_SIMPLE_SERVICE);    }} __fastcall TForm1::~TForm1(){    if(hKernelLib)    {        if(RegisterServiceProcess)            RegisterServiceProcess(GetCurrentProcessId(),                                   RSP_UNREGISTER_SERVICE);         FreeLibrary(hKernelLib);    }}//------------------------------------------------- 

Espero te sirva. ;)
Saludos!

© Jonathan ©:
Gracias Amigo, nuevamente me has otorgado mucha informacion, es exactamente lo que buscaba ... GRACIAS!!!  :lol:
 ... una pregunta, eso me sirve para builder 1 o cualquier otro verdad?... pues yo creeria que si, bueno, Gracias nuevamente y mil Saludos :hola:

_Viktor:
La verdad eso no lo he probado nunca en BCB1, pero en teoria deberia funcionar...

Dime tienes el instalador del BCB1, y si puedes decirme cuanto pesa en MB, me interesaria tenerlo como reliquia ;)

Bueno eso, si tienes problemas vere si puedo arreglarlo...

Saludos!

© Jonathan ©:
Hola nuevamente, ya he probado todo y funciona de maravillas con builder 1, solo una duda... al ejemplo del truco para ocultarlo del administrador de tareas no logro hacerlo funcionar... no aparecen warning ni nada, pero tampoco lo oculta, mas bien cambia el nombre de projec1 por el nombre de la ventana "Form1"...Saludos y gracias :hola:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa