Página 2 de 2
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 12:10
por marcosgambeta
Outra possibilidade para testar:
Depois de obter o handle da janela, executar esta sequencia:
Código: Selecionar todos
ShowWindow(hWnd, SW_SHOW);
ShowWindow(hWnd, SW_RESTORE);
SetForegroundWindow(hWnd);
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 12:17
por asimoes
Marcos,
A janela Quick Report é essa.
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 12:19
por asimoes
Marcos, não funcionou, coisas do windows.
A janela fica assim:

- 2018-03-20 12_17_51-.png (11.42 KiB) Exibido 1735 vezes
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 12:43
por marcosgambeta
O nome que você usa para localizar a janela com FindWindow é este ?
"Report Preview :"
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 12:56
por asimoes
Não é "Relatorio" esse é no nome da janela que chama o quickreport,
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 13:17
por asimoes
Marcos,
No nome do executável que também é a janela.
É Relatorio porque eu consigo fechar a janela:
Código: Selecionar todos
hWnd := FindWindow( 'Relatorio' )
IF hWnd > 0
hwg_Postmessage(hWnd, WM_CLOSE, 0, 0 )
ENDIF
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 13:36
por asimoes
Acho que assim dá pra ver nome da janela
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 14:02
por marcosgambeta
Poderia testar esta rotina e informar o resultado ?
Use assim: lRet := HB_ShowWindow( "Relatorio", "Report Preview :")
Código: Selecionar todos
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC( HB_SHOWWINDOW )
{
HWND hWnd = FindWindow( NULL, hb_parc( 1 ) );
if( hWnd )
{
HWND hWndChild = FindWindowEx( hWnd, NULL, NULL, hb_parc( 2 ) );
if( hWndChild )
{
PostMessage(hWndChild, WM_SYSCOMMAND, SC_RESTORE, 0);
hb_retl( 1 );
}
else
{
hb_retl( 0 );
}
}
else
{
hb_retl( 0 );
}
}
#pragma ENDDUMP
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 15:02
por asimoes
Marcos,
Retornou .F.
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 20:44
por JoséQuintas
Código: Selecionar todos
wapi_ShowWindow( wapi_FindWindow( 0, "Relatorio" ), SW_RESTORE )
wapi_ShowWindow( wapi_FindWindow( 0, "Relatorio" ), SW_MAXIMIZE )
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 20:50
por JoséQuintas
Complemento:
Pelo menos num teste em WVG funcionou....
Código: Selecionar todos
-------------test.prg
REQUEST HB_CODEPAGE_PTISO
PROCEDURE Main
LOCAL oControl, aOptions, cOption, nRow
Set( _SET_CODEPAGE, "PTISO" )
SetMode(33,90)
SetColor("W/B")
CLS
wapi_ShowWindow( wapi_FindWindow( 0, "test" ), SW_RESTORE )
wapi_ShowWindow( wapi_FindWindow( 0, "test" ), SW_MAXIMIZE )
//LoadAllFont()
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 20:57
por JoséQuintas
E mais um complemento.... rs
Funcionou o Maximizar janela... não que tenha funcionado pra WVG, que ficou com a janela doidinha, maximizada mas sem atualização... rs
Então tem mais essa também...
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 21:05
por asimoes
Quintas,
Fiz um teste aqui não funcionou
cApp := 'Gerenciador de Tarefas'
wapi_ShowWindow( wapi_FindWindow( 0, cApp), SW_RESTORE )
wapi_ShowWindow( wapi_FindWindow( 0, cApp ), SW_MAXIMIZE )
Assim funciona
hb_ShowWindow(cApp)
Código: Selecionar todos
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
HB_FUNC( HB_SHOWWINDOW )
{
HWND hWnd = FindWindow( NULL, hb_parc( 1 ) );
SetForegroundWindow( hWnd );
SendMessage( hWnd, WM_SYSCOMMAND, SC_RESTORE, 0 );
}
#pragma ENDDUMP
Maximizar uma Janela Externa
Enviado: 20 Mar 2018 22:31
por JoséQuintas
No fonte que coloquei está executando o comando do Windows pra maximizar uma janela.
No fonte que colocou está enviando a mensagem de maximizar para a janela, que acabará sendo processada pelo aplicativo Delphi.
Se imaginar que pode ser um controle activex, o aplicativo repassa ao activex, enquanto o comando direto do Windows pode ser recusado.
Mas é só suposição minha, não sei se seria isso mesmo.