Muito obrigado pelas dicas .
Mas no meu foi assim q funcionou :
Obs: Se alguem quiser melhorar o meu código toda ajuda é sempre bem vinda.
Vejamos neste exemplo eu chamo a calculadora . porem se ela estiver em execução / seja minimizada/ ou seja por trás de mim. ela vem ao primeiro plano.
Neste código eu chamo a calculadora
Código: Selecionar todos
FUNCTION CALCU()
hCalc := FindWindow( 0, "Calculadora" )
lCaptured := ( hCalc > 0 )
IF lCaptured
Focaliza_app('Calculadora','max')
ELSE
WinExec( "calc" )
ENDIF
return nil
Esta função eu peguei daqui mesmo do fórum e implementei.
Código: Selecionar todos
#pragma BEGINDUMP
#include "windows.h"
#include "shlobj.h"
#include "hbapi.h"
#include "math.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "hbapigt.h"
HB_FUNC ( SHOWTASKBAR ) //Habilita o botao INICIAR
{
HWND hWnd = FindWindow("Shell_TrayWnd", "");
ShowWindow( hWnd, 1 );
}
HB_FUNC ( HIDETASKBAR ) //Desabilita o botao Iniciar
{
HWND hWnd = FindWindow("Shell_TrayWnd", "");
ShowWindow( hWnd, 0 );
}
HB_FUNC ( PISCA_EXE ) // VAI PISCAR O SEU EXE NA BARRA
{
HWND Handle = GetForegroundWindow();
FlashWindow(Handle,TRUE);
Sleep(300); // TEMPO DE ESPERA
}
HB_FUNC ( TIRA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
DeleteMenu(MenuH,SC_CLOSE,MF_BYCOMMAND);
}
#pragma ENDDUMP
// EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
//
*********************
Function Focaliza_App(o_exe,o_como)
*********************
oWnd := SY_FindWindow(o_exe)
if empty(ownd)
return nil
end
if o_como = 'max'
SY_showWindow( oWnd, 9 )
BringWindowToTop( oWnd )
elseif o_como = 'min'
sy_closewindow(ownd) //para minimizar
end
Return Nil
#pragma BEGINDUMP
#include "hbapi.h"
#include <windows.h>
VOID SY_SwitchToThisWindow( HWND hWnd, BOOL fAltTab );
HB_FUNC( SY_FINDCONSOLEHANDLE ) //FindConsoleHandle
{
HWND hwnd;
AllocConsole();
hwnd = FindWindowA("ConsoleWindowClass",NULL);
hb_retnl( (LONG) hwnd );
}
HB_FUNC( SY_CLOSEWINDOW )
{
hb_retl( CloseWindow( (HWND) hb_parnl(1) ) );
}
HB_FUNC( SY_FINDWINDOW )
{
hb_retnl((ULONG) FindWindow( (LPCSTR)
NULL, hb_parcx(1))) ;
}
HB_FUNC( SY_GETFOREGROUNDWINDOW )
{
HWND hwnd;
hwnd = GetForegroundWindow();
hb_retnl( (LONG) hwnd );
}
HB_FUNC( SY_SHOWWINDOW )
{
hb_retl( ShowWindow(
(HWND) hb_parnl(1), hb_parni(2) ));
}
HB_FUNC( SY_SETFOREGROUNDWINDOW )
{
hb_retl( SetForegroundWindow(
(HWND) hb_parnl( 1 ) ) ) ;
}
HB_FUNC( SY_SWITCHTOTHISWINDOW )
{
HWND hWnd;
hWnd = (HWND) hb_parnl(1);
hb_retl(SetForegroundWindow(hWnd));
}
#pragma ENDDUMP
Conforme vc pôde ver se vc quiser minimizar é só mandar o 2º parâmetro como 'min' que ele minimizará a janela. Veja o exemplo:
Obrigado a todos
(A)