Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-07-2007
l30 l30 is offline
Miembro
 
Registrado: jun 2007
Posts: 36
Poder: 0
l30 Va por buen camino
Service – Desktop

Antes de empezar quisiera agradecerles la ayuda que me han brindado.

Bueno tengo el siguiente problema, tengo un servicio que me ejecuta una aplicación, por problemas de seguridad o por lo menos así lo veo yo, lo puse que no me interactuara con el Desktop y desde ese momento me sigue ejecutando la otra aplicación, pero es como si no hiciera nada, parece que la aplicación que es llamada coge las propiedades, de no interactuar con el Desktop y me deja de funcionar correctamente esa otra aplicación, lo que hace es cerrar algunas aplicaciones, que tengo en un a lista negra, la pregunta es entonces, como puedo llamar a ese ejecutable y que interactué con el Desktop.

Muchas gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 03-07-2007
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por l30
... tengo un servicio que me ejecuta una aplicación...
...parece que la aplicación que es llamada coge las propiedades, de no interactuar con el Desktop
¿...cómo puedo llamar a ese ejecutable y que interactué con el Desktop ?.
mira este enlace http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=borland.public.delphi.vcl.components.using.win32&messageid=41efdb06$1@n ewsgroups.borland.com
Responder Con Cita
  #3  
Antiguo 03-07-2007
l30 l30 is offline
Miembro
 
Registrado: jun 2007
Posts: 36
Poder: 0
l30 Va por buen camino
Gracias por tu respuesta

Gracias por tu respuesta, estuve leyendo el enlace que por cierto esta en ingles y no se me da muy bien el ingles, pero bueno con la ayuda de un traductor, pude hacerlo todo, aunque hay otros enlaces que te sugieren allí que ya no están disponibles, tal ves por eso no funciono, pero repito la idea, es un servicio, que no interactúa con el sistema, que llama una aplicación que esa si me hace falta que interactué y no lo esta haciendo, en el enlace que me diste, estaba la respuesta parece en uno de los link, que no funcionan, probé con las dos funciones que vienen allí InitServiceDesktop; // Aquí pongo mi código para que llame a la aplicación que va a interactuar DoneServiceDesktop; Y nada a lo mejor no entendí bien.
Responder Con Cita
  #4  
Antiguo 04-07-2007
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por l30
... aunque hay otros enlaces ... que ya no están disponibles, tal ves por eso no funciono
Yo utilizo esto:

Código Delphi [-]
uses
  Windows;

var
  HStation:HWINSTA;
  HDesktop:HDESK;

initialization

  HStation := OpenWindowStation(PChar('WinSta0'), False, MAXIMUM_ALLOWED);
  SetProcessWindowStation(HStation);

  HDesktop := OpenDesktop(PChar('Default'), 0, False, MAXIMUM_ALLOWED);
  SetThreadDesktop(HDesktop);

end.

IMPORTANTE: Debe ser una de las primeras units en inicializarse, debes ponerla una de las primeras en tu "uses".

Última edición por dec fecha: 04-07-2007 a las 21:29:13.
Responder Con Cita
  #5  
Antiguo 04-07-2007
l30 l30 is offline
Miembro
 
Registrado: jun 2007
Posts: 36
Poder: 0
l30 Va por buen camino
Gracias

Gracias por tu respuesta, hice lo que me dijiste, pero no me funciono te pongo un código de ejemplo para que lo veas, a ver que tengo mal.

Código Delphi [-]
  unit Unit2;
  interface
  uses windows;
   
   procedure dino;
   var
      HStation:HWINSTA;
      HDesktop:HDESK;
   
  implementation
   
  // Aqui pongo lo que me diste
  procedure dino;
  begin
    HStation := OpenWindowStation(PChar('WinSta0'), False, MAXIMUM_ALLOWED);
    SetProcessWindowStation(HStation);
    HDesktop := OpenDesktop(PChar('Default'), 0, False, MAXIMUM_ALLOWED);
    SetThreadDesktop(HDesktop);
  end;
   
  end.

Código Delphi [-]
 
  unit Unit1;
   
  interface
   
  uses
  Unit2, Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
    ExtCtrls, shellapi;
   
  type
    Tjulio = class(TService)
      Timer1: TTimer;
      procedure Timer1Timer(Sender: TObject);
      procedure ServiceStart(Sender: TService; var Started: Boolean);
    private
      { Private declarations }
    public
      function GetServiceController: TServiceController; override;
      { Public declarations }
    end;
   
  var
    julio: Tjulio;
   
  implementation
   
   
  {$R *.DFM}
   
  procedure ServiceController(CtrlCode: DWord); stdcall;
  begin
    julio.Controller(CtrlCode);
  end;
   
  function Tjulio.GetServiceController: TServiceController;
  begin
    Result := ServiceController;
  end;
   
  procedure Tjulio.ServiceStart(Sender: TService; var Started: Boolean);
  begin
     // aqui llamo a la function que tiene tu codigo
     dino;
   
      //  activo el relog que va a llamar una aplicación cada cierto tiempo.  
     Timer1.Enabled:= true;
  end;
   
  procedure Tjulio.Timer1Timer(Sender: TObject);
  begin
     // llamo al bloc de notas pero nada en los proceso aparece pero no se ve y supongo que sea por que no esta interactuando con el desktop


     WinExec('notepad', SW_SHOWNORMAL);
  end;
   
   
  end.

Última edición por dec fecha: 04-07-2007 a las 21:28:54.
Responder Con Cita
  #6  
Antiguo 05-07-2007
mensana mensana is offline
Miembro
 
Registrado: sep 2006
Posts: 69
Poder: 18
mensana Va por buen camino
Cita:
Empezado por l30
... hice lo que me dijiste, pero no me funciono .
El código era para ejecutarlo en la aplicación que interactua con el desktop, es decir, la que arranca el servicio (en tu caso Notepad.exe), así que no te servirá.

Ojo: He leído que en Windows Vista se ha cerrado la posibilidad que un servicio pueda ejecutar una aplicación.
Responder Con Cita
Respuesta



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
3D Desktop TouchScreen Onti La Taberna 2 06-04-2007 12:11:34
Database Desktop? gandalf_27 C++ Builder 3 12-05-2006 22:37:51
Problemas con el DeskTop lgarcia Varios 5 11-04-2005 16:04:04
Inetrbase Desktop StartKill Firebird e Interbase 0 14-12-2004 16:11:07
Service y Application Service Ezecool Varios 0 30-09-2003 18:48:30


La franja horaria es GMT +2. Ahora son las 03:10:30.


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