Mário, tenta este exemplo então:
#include "Fivewin.ch"
function Main()
Local oWnd1, oBnt1, oBnt2
DEFINE WINDOW oWnd1 FROM 5, 5 TO 25, 70;
TITLE "Janela do seu Programa"
@ 6, 10 BUTTON oBnt1;
PROMPT "Ir para Janela do Excel";
OF oWnd1 SIZE 150, 25 ACTION MudarJanela("Excel",9)
@ 6, 40 BUTTON oBnt2;
PROMPT "Ir para Janela Prompt de Comando";
OF oWnd1 SIZE 180, 25 ACTION MudarJanela("Prompt de Comando",9)
ACTIVATE WINDOW oWnd1 ON INIT MinimizarJanelas()
return nil
function MudarJanela(cTitulo, nModo)
Local hWnd := ProcuraJanela( cTitulo )
IF !EMPTY( hWnd )
SHOWWINDOW( hWnd, nModo )
ELSE
MsgInfo("Janela não encontrada")
ENDIF
return nil
function ProcuraJanela( cTitle )
Local hWnd := GETWINDOW( GETDESKTOPWINDOW(), 5 )
DO WHILE (hWnd != 0)
IF UPPER( cTitle ) $ UPPER( GETWINDOWTEXT( hWnd ) )
return hWnd
ENDIF
hWnd = GETWINDOW( hWnd, 2 )
ENDDO
return nil
function MinimizarJanelas()
MudarJanela("Excel",6)
MudarJanela("Prompt de Comando",6)
return nil
Para fazer um teste, abra o Excel e o Prompt de Comando (provavelmente você já vai estar usando o Prompt) antes de executar o exemplo.
Observe que estou minimizando as janelas do Excel e do Prompt de Comando na hora que o exemplo é inicializado, estou fazendo isto porque se elas não estiverem minimizadas o foco não vai para a janela. Neste caso, você tem que arrumar um jeito de minimizar a janela do Prompt de Comando quando retornar para a janela do seu programa.
Abraços,