PDA

View Full Version : Come dare il focus ad un'applicazione lanciata con Winexec o ShellExecute?


Abadir_82
20-12-2007, 08:30
Ciao.

Ho creato una piccola funzione che mi lancia googleearth, il problema e' che se googleearth e' gia' aperto ed io rilancio l'applicazione non ottengo piu' il focus sulla finestra di googleearth, infatti l'icona sulla barra delle applicazioni comincia a lampeggiare.

Come posso fare per fargli avere il focus anche alla n-esima volta che lancio il programma? Il codice e' questo.


ShellExecute(NULL, "open", "googleearth.exe", "E:\\3d2d\\app\\KillerApp.kml", "C:\\Program Files\\Google\\Google Earth", SW_MAXIMIZE);

// Ho provato anche con

WinExec(complete_run_line, SW_MAXIMIZE)
// complete_run_line contiene il path di googleearth piu' il file kml.



Grazie.

Abadir_82
20-12-2007, 10:35
Mi rispondo da solo, dato che ho trovato la soluzione.


HWND hWnd;
WinExec(complete_run_line, SW_MAXIMIZE);// Run Google Earth, complete_run_line e' un char che contiene il path completo dell'eseguibile.
hWnd = FindWindow(NULL, "Google Earth"); // Find the Google Earth window.
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE); // When one calls again the script this line gives the focus.
return (0);


Se a qualcuno servisse e' necessario anche includere:
#include <windows.h>
#include <shellapi.h>
using namespace std;