• Jueves 14 de Noviembre de 2024, 04:26

Autor Tema:  Como Crear Programas Ocultos  (Leído 2802 veces)

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Como Crear Programas Ocultos
« en: Miércoles 21 de Enero de 2004, 13:14 »
0
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:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

_Viktor

  • Miembro MUY activo
  • ***
  • Mensajes: 271
    • Ver Perfil
    • http://AyudaCBuilder.foros.st
Re: Como Crear Programas Ocultos
« Respuesta #1 en: Miércoles 21 de Enero de 2004, 22:03 »
0
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
  1. WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  2. {
  3.     try
  4.     {
  5.         Application->Initialize();
  6.         Application->CreateForm(__classid(TForm1), &Form1);
  7.  
  8.         //Agrega estas dos lineas en esta misma posicion.
  9.         Application->ShowMainForm = false;
  10.         ShowWindow(Application->Handle, SW_HIDE);
  11.  
  12.         Application->Run();
  13.     }
  14.     catch (Exception &exception)
  15.     {
  16.         Application->ShowException(&exception);
  17.     }
  18.     return 0;
  19. }
  20.  

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
  1. WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  2. {
  3.     try
  4.     {
  5.          Application->Title = ""; //Esta linea lo hace
  6.          Application->Initialize();
  7.          Application->CreateForm(__classid(TForm1), &Form1);
  8.          Application->Run();
  9.     }
  10.     catch (Exception &exception)
  11.     {
  12.          Application->ShowException(&exception);
  13.     }
  14.     return 0;
  15. }
  16.  
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
  1. //------------Archivo Cabecera .h ------------------------------
  2. typedef DWORD (__stdcall *pRegFunction)(DWORD, DWORD);
  3.  
  4. class TForm1 : public TForm
  5. {
  6. __published:
  7.     TButton *Button1;
  8. private:
  9.     HINSTANCE hKernelLib;
  10.     pRegFunction RegisterServiceProcess;
  11. public:
  12.     __fastcall TForm1(TComponent* Owner);
  13.     __fastcall ~TForm1();
  14. };
  15.  
  16.  
  17. //-----------Archivo fuente .cpp------------------------------
  18. #include "Unit1.h"
  19.  
  20. #define RSP_SIMPLE_SERVICE     1
  21. #define RSP_UNREGISTER_SERVICE 0
  22.  
  23. __fastcall TForm1::TForm1(TComponent* Owner)
  24.     : TForm(Owner)
  25. {
  26.     hKernelLib = LoadLibrary("kernel32.dll");
  27.     if(hKernelLib)
  28.     {
  29.         RegisterServiceProcess =
  30.                   (pRegFunction)GetProcAddress(hKernelLib,
  31.                                                "RegisterServiceProcess");
  32.  
  33.         if(RegisterServiceProcess)
  34.             RegisterServiceProcess(GetCurrentProcessId(),
  35.                                    RSP_SIMPLE_SERVICE);
  36.     }
  37. }
  38.  
  39. __fastcall TForm1::~TForm1()
  40. {
  41.     if(hKernelLib)
  42.     {
  43.         if(RegisterServiceProcess)
  44.             RegisterServiceProcess(GetCurrentProcessId(),
  45.                                    RSP_UNREGISTER_SERVICE);
  46.  
  47.         FreeLibrary(hKernelLib);
  48.     }
  49. }
  50. //-------------------------------------------------
  51.  


Espero te sirva. ;)
Saludos!
_Viktor _Yañez_
"Ser inteligente no es ser mas, solo equivocarse menos y no usar visual basic"

http]

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Como Crear Programas Ocultos
« Respuesta #2 en: Miércoles 21 de Enero de 2004, 22:14 »
0
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:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

_Viktor

  • Miembro MUY activo
  • ***
  • Mensajes: 271
    • Ver Perfil
    • http://AyudaCBuilder.foros.st
Re: Como Crear Programas Ocultos
« Respuesta #3 en: Miércoles 21 de Enero de 2004, 22:23 »
0
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!
_Viktor _Yañez_
"Ser inteligente no es ser mas, solo equivocarse menos y no usar visual basic"

http]

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Como Crear Programas Ocultos
« Respuesta #4 en: Miércoles 21 de Enero de 2004, 22:31 »
0
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:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Como Crear Programas Ocultos
« Respuesta #5 en: Miércoles 21 de Enero de 2004, 22:43 »
0
Hola nuevamente, habia preguntado sin antes leer tu pregunta  :( ... pues el tamaño del builder es de unos 230 Mg, contactame por Mail y vemos como arreglamos para pasartelo... Saludos :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

i_berbeu

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Como Crear Programas Ocultos
« Respuesta #6 en: Martes 7 de Febrero de 2006, 22:47 »
0
a mi tampoco me funciona lo del administrador de tareas...
a ver si se puede comentar porque

Linspire

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
    • http://www.cedrela.com.mx
Re: Como Crear Programas Ocultos
« Respuesta #7 en: Jueves 9 de Febrero de 2006, 02:27 »
0
No es necesario agregar toda esa basura de código, solo funciona si unicamente se agregan las siguientes líneas:
 en el .cpp

#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Title = ""; //Solo esto
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        return 0;
}
//---------------------------------------------------------------------------


y en el Unit1.h


//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TButton *Button1;
        TEdit *Edit1;
        TLabel *Label1;
        TEdit *Edit2;
        void __fastcall Button1Click(TObject *Sender);
private:   // User declarations
           HINSTANCE hKernelLib; //Solo esto
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Pruebalo así y funcionará, al menos me funciona en Builder 5.
[size=109]My Blog de Programación[/i][/b][/size]
´


[size=109]Tan solo quiero pensar que todo es un sueño y que no quiero despertar
porque quiero controlarlo como yo quiera.
[/size]

Todo es posible, lo imposible solo cuesta un poco más. Dan Drown.

i_berbeu

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Como Crear Programas Ocultos
« Respuesta #8 en: Jueves 9 de Febrero de 2006, 18:37 »
0
he probado eso y no me funciona y tambien uso builder 5
ademas no entiendo que sentido tiene crear la variable HINSTANCE hKernelLib si no tiene na que ver con el nombre del programa

Linspire

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
    • http://www.cedrela.com.mx
Re: Como Crear Programas Ocultos
« Respuesta #9 en: Jueves 9 de Febrero de 2006, 20:57 »
0
Pues no entiendo porqué, y perdón, me funciona solo con poner (tienes razón en lo de la variable que no se usa):

Application->Title = ""; //Solo esto

Estoy usando Windows XP Professional. ¿Cuál usas tú?
[size=109]My Blog de Programación[/i][/b][/size]
´


[size=109]Tan solo quiero pensar que todo es un sueño y que no quiero despertar
porque quiero controlarlo como yo quiera.
[/size]

Todo es posible, lo imposible solo cuesta un poco más. Dan Drown.

i_berbeu

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Como Crear Programas Ocultos
« Respuesta #10 en: Viernes 10 de Febrero de 2006, 01:24 »
0
yo tambien uso ese macho...
no se que pasara la verdad pero con eso no me vale pa na
es mas, si pongo en vez de "" por ejemplo "aplicacion", en el taskmanager me sale Project1 como ejecutable, ni siquiera taskmanager
no se que pasara