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 17-03-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Poder: 0
Edgtho Va por buen camino
Restaurar otra aplicacion y no morir en el intento

Recupero el hilo iniciado hace ya dos años aqui
http://www.clubdelphi.com/foros/show...ght=sw_restore


Por que me encuentro en la misma tesitura. Cuando ejecutas

ShowWindow(hApp, SW_RESTORE);


donde hApp es el handle de la otra aplicacion, parece que funciona pero el boton minimizar se queda muerto total.

Aqui os dejo tooodas las combinaciones posibles que he intentado rebuscando entre foros

Código:
var
    hApp: Cardinal;
  FgThreadId  : DWORD;
  AppThreadId : DWORD;
begin
    hApp := fmMain.FindWindowByTitle([titulo aplicacion]);

//    SendMessage(hApp,CM_RESTORE,0,0);
//    ShowWindow(hApp, SW_SHOW); //despues la aplicacion no puede minimizarse;
//    ShowWindow(hApp, SW_SHOWNORMAL); //despues la aplicacion no puede minimizarse;

  FgThreadId  := GetWindowThreadProcessId(GetForegroundWindow, nil);
  AppThreadId := GetWindowThreadProcessId(hApp, nil);
  AttachThreadInput(AppThreadId, FgThreadId, true);

  ShowWindow(hApp, SW_RESTORE); // despues la aplicacion no puede minimizarse;
  SetForegroundWindow(hApp);
  AttachThreadInput(AppThreadId, FgThreadId, false);

    //SetForeGroundWindow(hApp);
//    PostMessage(hApp,CM_RESTORE,0,0);
//    SendMessage(hApp,WM_ACTIVATE,0,0);
//    SendMessage(hApp,SW_RESTORE,0,0);
//    SendMessage(hApp,CM_RESTORE,0,0);
    //Application.ProcessMessages;

Si es que no puede ser tan dificil pero no hay manera de encontrarlo, solo fijaros en lo extravagante de mi ultimo intento (lineas no comentadas). Si me podeis ayudar os lo agradecere un webo y parte del otro.

un saludo
__________________
Dios es real a menos que sea declarado entero
Responder Con Cita
  #2  
Antiguo 17-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
 SendMessage(FindWindow(nil, 'Untitled - Notepad'), WM_SYSCOMMAND, SC_RESTORE, 0);
Responder Con Cita
  #3  
Antiguo 17-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Yo probaría esta función:

Código Delphi [-]
procedure ActivarAplicacion(Handle: HWnd);
var
  FgThreadId  : DWORD;
  AppThreadId : DWORD;

begin
  if IsIconic(Handle) then
    ShowWindow(Handle, SW_RESTORE)
  else
  begin
    FgThreadId  := GetWindowThreadProcessId(GetForegroundWindow, nil);
    AppThreadId := GetWindowThreadProcessId(Handle, nil);

    AttachThreadInput(AppThreadId, FgThreadId, true);
    SetForegroundWindow(Handle);
    AttachThreadInput(AppThreadId, FgThreadId, false);
  end;
end;

Handle debe ser el handle de la aplicación y no de la ventana principal.

Bye
Responder Con Cita
  #4  
Antiguo 18-03-2008
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Poder: 0
Edgtho Va por buen camino
KeyBoy lo que habias puesto era lo mismo que tenia yo, jejeje. La respuesta me la ha dado chackall, enviandole el comando SC_RESTORES justo antes del ShowWindow ha funcionado sin problemas.

Código:
  hApp := fmMain.FindWindowByTitle([titulo aplicacion]);
  SendMessage(hApp, WM_SYSCOMMAND, SC_RESTORE, 0);
  ShowWindow(hApp, SW_RESTORE);
Mil gracias
__________________
Dios es real a menos que sea declarado entero
Responder Con Cita
  #5  
Antiguo 19-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Curioso, porque yo hago esa misma pueba y no funciona. En fin, cada Windows es un mundo.

Bye
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
Instalar Debian, 3er intento y fallido otra vez :( Wonni Linux 7 24-06-2007 00:35:31
Restaurar Ventana desde otra aplicación Sr_Sombrero API de Windows 4 06-04-2006 15:17:30
¿Como usar Roles con BDE y no morir en el intento? Grimmy80 Firebird e Interbase 1 28-11-2003 21:32:28
Como usar Roles con BDE y no morir en el intento? Grimmy80 Conexión con bases de datos 0 27-11-2003 17:04:22


La franja horaria es GMT +2. Ahora son las 11:41:38.


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