• Sábado 14 de Diciembre de 2024, 23:04

Autor Tema:  Servicios Windows  (Leído 3522 veces)

afiler

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Servicios Windows
« en: Jueves 12 de Octubre de 2006, 22:10 »
0
Hola , como puedo desde C++ , invocar un servicio windows y manipularlo como objeto para poder acceder a los metodos que posea este servicio.


si alguien cacha.... por fa

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Servicios Windows
« Respuesta #1 en: Jueves 12 de Octubre de 2006, 22:44 »
0

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

afiler

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Servicios Windows
« Respuesta #2 en: Viernes 13 de Octubre de 2006, 00:02 »
0
Cita de: "Eternal Idol"
http://msdn.microsoft.com/library/en-us/dl...se/services.asp
Idol, estuve viendo la información , lo que me podria servir es el
openService que devuelve el Handle , pero este  es solo una cabecera al servicio.

Lo que requiero es invocar al servicio mediante alguna funcion que me devuelva un Object  y luego llamar a un metodo especifico de este.



Objec.metodoXXXXX()

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Servicios Windows
« Respuesta #3 en: Viernes 13 de Octubre de 2006, 08:05 »
0
Muy bien pero .. ¿Donde dice que un servicio es un objeto? Eso no es cierto ... se pueden escribir servicios en assembly o en C perfectamente.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

afiler

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Servicios Windows
« Respuesta #4 en: Viernes 13 de Octubre de 2006, 17:47 »
0
Cita de: "Eternal Idol"
Muy bien pero .. ¿Donde dice que un servicio es un objeto? Eso no es cierto ... se pueden escribir servicios en assembly o en C perfectamente.
Solo cite "objetos" para explicar lo que necesito, pero bueno ,  finalmente al invocar un servicio con openService obtengo un handler el cual me retorna la estructura del servicio, la duda ahora es como acceder a un metodo o funcion X de este servicio windows.  


POr si acaso este servicio que señalo es un .exe que al ejecutarlo queda corriendo como un servicio win. el cual posee un metodo que al pasarle ciertos parametros
este retorna un valor encriptado.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Servicios Windows
« Respuesta #5 en: Viernes 13 de Octubre de 2006, 18:12 »
0
Cita de: "afiler"
Solo cite "objetos" para explicar lo que necesito, pero bueno ,  finalmente al invocar un servicio con openService obtengo un handler el cual me retorna la estructura del servicio, la duda ahora es como acceder a un metodo o funcion X de este servicio windows.
Bien pero es mejor tratar de ser exactos, sino generas confusion y es mas dificil que se te pueda ayudar. Por ir al caso, tampoco es cierto que OpenService te devuelva ninguna estructura del servicio en lo absoluto. Si s cierto que te devuelve un HANDLE y con el mismo podes hacer varias cosas. Supongo que lo que estas buscando es ControlService que sirve tanto para las funciones comunes (stop, pause, etc) como para las definidas por el servicio en particular.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

afiler

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Servicios Windows
« Respuesta #6 en: Sábado 14 de Octubre de 2006, 21:11 »
0
Hola , revise el   ControlService, pero vi que solo retorna informacion del servicio, este es el codigo que utilice:

 
void ControlService(SC_HANDLE schService) {

   
    SERVICE_STATUS ssStatus;
    DWORD fdwAccess;
    DWORD dwStartTickCount, dwWaitTime;

   fdwAccess = SERVICE_USER_DEFINED_CONTROL



   if (! ControlService(
            schService,   // handle to service
            129,   // control value to send, este numero va de 128 a 256
            &ssStatus) )  // address of status info
    {
        printf("ControlService failed (%d)\n", GetLastError());
       // return FALSE;
    }


   


    printf("\nStatus of Sample_Srv: \n");
    printf("  Service Type: 0x%x\n", ssStatus.dwServiceType);
    printf("  Current State: 0x%x\n", ssStatus.dwCurrentState);
    printf("  Controls Accepted: 0x%x\n",
        ssStatus.dwControlsAccepted);
    printf("  Exit Code: %d\n", ssStatus.dwWin32ExitCode);
    printf("  Service Specific Exit Code: %d\n",
        ssStatus.dwServiceSpecificExitCode);
    printf("  Check Point: %d\n", ssStatus.dwCheckPoint);
    printf("  Wait Hint: %d\n", ssStatus.dwWaitHint);


}
Bueno antes me cree un open service para pasarle al Controlservice el SC_HANDLE

Y la verdad no se como poder invocar un metodo en particular del servicio.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Servicios Windows
« Respuesta #7 en: Sábado 14 de Octubre de 2006, 23:16 »
0
Cita de: "afiler"
Hola , revise el   ControlService, pero vi que solo retorna informacion del servicio, este es el codigo que utilice:

Y la verdad no se como poder invocar un metodo en particular del servicio.
Viste mal, lee la documentacion de la funcion. Con la misma podes como ya te dije antes parar, pausar, resumir un servicio y usar las funciones especificas del mismo.

¿Quien dice que ese servicio tiene el metodo que decis exportado de esta manera? ¿Donde esta su documentacion?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

afiler

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Servicios Windows
« Respuesta #8 en: Lunes 16 de Octubre de 2006, 17:51 »
0
A vale lo que pasa es que es un servicio  hecho de tipo COM, en la docu. me dicen que se debe invocar al metodo DLC040, y me enviaron un ejemplo en Visual Basic donde
referencian el servicio como libreria

  Dim cripto As New Seg

y luego



cripto.DLC040(parametros xxxxxxxx)

"Seg" es la clase que corresponde al servicio. eso es lo que tengo de documentacion.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Servicios Windows
« Respuesta #9 en: Lunes 16 de Octubre de 2006, 19:16 »
0
COM es otra historia totalmente diferente a los servicios de Windows. Mi recomendacion es que les pidas o un ejemplo para Builder de esto mismo o de ser posible una interfaz mas simple de usar desde C/C++ (como una DLL) ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.