Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Lo que no comprendo es como puedes llamar a una funcion con 2 argumentos, habiendo sido declarada solo con uno (LocatedWindows)! te dejo un ejemplo un poco distinto y un poco mas "correcto", pues GetWindow te puede retornar el manejador de una insancia anteriormente creada de la misma aplicacion.

Código:
int __stdcall EnumProc(void * hWnd, long lParam)
{
 if (IsWindowVisible(hWnd)) // aquí puedes realizar tu comparación si es el caso
  SetWindowPos(hWnd, HWND_TOPMOST, lParam, 0, 0, 0, SWP_NOSIZE);
 return TRUE;
}
 
void Exec(AnsiString CommandLine, long Left)
{
 STARTUPINFO si = {sizeof si};
 PROCESS_INFORMATION pi;
 CreateProcessA(NULL, CommandLine.c_str(), NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
 WaitForInputIdle(pi.hProcess, INFINITE);
 EnumThreadWindows(pi.dwThreadId, (int (__stdcall *)())EnumProc, Left);
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Exec("c:\\windows\\notepad.exe", 0);
 Exec("c:\\windows\\notepad.exe", 500);
}
Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #2  
Antiguo 08-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola

Cita:
Empezado por cHackAll Ver Mensaje
Lo que no comprendo es como puedes llamar a una funcion con 2 argumentos, habiendo sido declarada solo con uno (LocatedWindows)!
jejeje, todo tiene una explicación
Me limité a hacer una limpieza de las funciones para quitar el código que no tenía nada que ver con el problema y se me pasó quitar ese parámetro

Referente al código que me planteas.....
Si entiendo bien la ayuda del MSDN, EnumThreadWindows te ejecutará una función callback tantas veces como ventanas no-hijas tenga la aplicación lanzada o creada mediante CreateProcessA, ¿es eso correcto?

Y la función WaitForInputIdle espera a que la aplicación lanzada esté totalmente cargada (o al menos la ventana principal), ¿también es esto correcto?

Si es así, tu solución la veo, no se si mejor o peor, pero sí más "limpia"

Gracias por la respuesta
Responder Con Cita
  #3  
Antiguo 08-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Cita:
Empezado por ninguno Ver Mensaje
...Si entiendo bien la ayuda del MSDN, EnumThreadWindows te ejecutará una función callback tantas veces como ventanas no-hijas tenga la aplicación lanzada o creada mediante CreateProcessA, ¿es eso correcto?...
Si, todas las ventanas padres no así las hijas de los mismos.

Cita:
Empezado por ninguno Ver Mensaje
...Y la función WaitForInputIdle espera a que la aplicación lanzada esté totalmente cargada (o al menos la ventana principal), ¿también es esto correcto?
Si

Cita:
Empezado por ninguno Ver Mensaje
...Si es así, tu solución la veo, no se si mejor o peor, pero sí más "limpia"
Bueno, si utilizas GetWindow realizarás un enumerado de todas las ventanas
en busca de un texto en su título o su clase, pero pueden existir N instancias de una aplicacion y por ende N ventanas de la misma clase y muy probablemente tambien con el mismo título. Entonces no hay forma de asegurar mediante GetWindow, FindWindow o parecidos, que la instancia encontrada sea la que tu creaste.

Es por ello que uso y aconsejo usar CreateProcess pues retorna los identificacodres del proceso e hilo principal (y en algunas ocaciones ShellExecuteEx pues tambien retorna informacion propia del proceso creado.)

Cita:
Empezado por ninguno Ver Mensaje
...Gracias por la respuesta...
You are Welcome
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Problemas con ShellExecute ZayDun Varios 4 27-03-2008 22:33:47
Shellexecute mjjj Varios 2 11-09-2007 17:41:21
ShellExecute jorodgar Varios 8 07-05-2007 13:46:15
Problemas con ShellExecute y Java. tryasta API de Windows 2 05-09-2005 19:09:41
Problemas con ShellExecute: lalo Varios 2 18-03-2005 15:04:52


La franja horaria es GMT +2. Ahora son las 12:06:44.


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