Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > General/Noticias
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-12-2024
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 108
Poder: 10
razorxxx Va por buen camino
Ver si proceso en ejecución en máquina remota

Buenas a todos!

En mi empresa tenemos múltiples sistemas de facturación ya que programamos a medida para nuestros clientes. Es por ello que la adaptación a Veri*Factu la haremos haciendo uso de un subprograma que mostrará el registro de facturación asociado a una factura, gestionará los envíos y respuestas, las firmas, los registros de eventos, etc.

Como la mayoría de nuestras instalaciones son de tipo cliente-servidor, el subprograma en cuestión se ejecutará en el servidor y estará siempre disponible, y se mantendrá a la escucha para enviar los registros cada 60 segundos.

Lo que pasa es que este subprograma, por razones diversas, podría ocurrir que de repente se cuelgue y deje de estar disponible para el envío de las facturas. Por tanto, cada uno de nuestros SIF debería detectar antes o después de generar el registro de una factura si dicho subprograma está en ejecución en la máquina remota para, en caso contrario, ejecutarlo o que nos avise por mail de que no está ejecutándose, pues de lo contrario no se podrían remitir los registros de facturación a la AEAT.

¿Alguno de ustedes sabe cómo puede consultarse desde un equipo si en otro equipo de la red existe un proceso en ejecución? Tras algunas consultas a Google y otras a Copilot, he estado probando la api de WMI pero hasta ahora no consigo que funcione. Mi código es el siguiente:

Código:
var
   SWbemLocator: OLEVariant;
   SWbemServices: OLEVariant;
   SWbemObjectSet: OLEVariant;
   SWbemObject: OLEVariant;
   Enum: IEnumVariant;
   Value: Cardinal;
begin
     Result := False;
     SWERROR := 0;
     try
        CoInitialize(nil);
             try
                SWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
                If CBCredenciales.Checked Then  // Si la máquina remota tiene autenticación
                    SWbemServices := SWbemLocator.ConnectServer(RemoteMachine, 'root\CIMV2', Usuario.Text, Password.Text)
                Else
                    SWbemServices := SWbemLocator.ConnectServer(RemoteMachine, 'root\CIMV2', '', '');
                SWbemObjectSet := SWbemServices.ExecQuery(Format('SELECT * FROM Win32_Process WHERE Name = "%s"', [ProcessName]));
                Enum := IUnknown(SWbemObjectSet._NewEnum) as IEnumVariant;
                while Enum.Next(1, SWbemObject, Value) = S_OK do
                begin
                     Result := True;
                     SWbemObject := Unassigned;
                end;
             finally
                    CoUninitialize;
             end;
     except
           on E: EOleException do
           begin
                SWERROR := 1;
                Memo1.Lines.Add(Format('Error %d : ($%x) Mensaje : %s', [E.ErrorCode, E.ErrorCode, E.Message]));
           end;
           on E: Exception do
           begin
                SWERROR := 1;
                Memo1.Lines.Add('Error ' + E.Classname + ': ' + E.Message);
           end;
     end;
end;
Casi seguro está relacionado con temas de firewall y puertos en la máquina remota, porque si activo o desactivo el Firewall recibo errores diferentes.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar id de maquina remota mediaplanet API de Windows 3 18-05-2010 10:46:09
Instalar un proceso de forma remota fide_32 API de Windows 1 26-09-2008 10:08:42
Ejecutar programa desde una maquina remota rjsitruiz Varios 0 12-01-2005 16:55:19
abrir un documento en una maquina remota CarlosHernandez API de Windows 2 10-03-2004 21:47:14
Nuevo Contacto en máquina remota Igna Servers 1 21-01-2004 18:47:24


La franja horaria es GMT +2. Ahora son las 17:26:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi