![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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);
}
|
|
#2
|
|||
|
|||
|
Hola
Cita:
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 |
|
#3
|
||||
|
||||
|
Cita:
Cita:
Cita:
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.) You are Welcome ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|