Maximizar uma Janela Externa
Moderador: Moderadores
Maximizar uma Janela Externa
Pessoal,
Temos uma aplicação feita em delphi que é um relatório, esse relatório tem os controles de janela minimizar, maximiza e fechar.
Essa aplicação é executada a partir de uma aplicação harbour/hwgui, o controle para saber se a aplicação delphi (relatório) já está rodando eu já fiz, eu preciso de uma função que maximize a tela delphi se o botão do relatório for clicado.
Temos uma aplicação feita em delphi que é um relatório, esse relatório tem os controles de janela minimizar, maximiza e fechar.
Essa aplicação é executada a partir de uma aplicação harbour/hwgui, o controle para saber se a aplicação delphi (relatório) já está rodando eu já fiz, eu preciso de uma função que maximize a tela delphi se o botão do relatório for clicado.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Maximizar uma Janela Externa
Código: Selecionar todos
#include "hbwin.ch"
wapi_ShowWindow( hWnd, WIN_SW_SHOWMAXIMIZED )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Maximizar uma Janela Externa
Quintas,
Você só não informou como pegar o handle da janela externa usando wapi_*
Você só não informou como pegar o handle da janela externa usando wapi_*
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Maximizar uma Janela Externa
Já Tentei isso:
Mas não maximiza: seta vermelha, fiz um teste com Skype e o Gerenciador de Tarefas a função tá funcionando, restaura a tela minimizada.
Essa janela é um relatório feito em delphi, quando minimizado ao clicar no botão Impressão Relatório Expediente se estiver minimizado quero que a tela seja maximizada.
Mas não maximiza: seta vermelha, fiz um teste com Skype e o Gerenciador de Tarefas a função tá funcionando, restaura a tela minimizada.
Essa janela é um relatório feito em delphi, quando minimizado ao clicar no botão Impressão Relatório Expediente se estiver minimizado quero que a tela seja maximizada.
Código: Selecionar todos
HB_SHOWWINDOW( "Relatorio" )
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbapiitm.h"
HB_FUNC( HB_SHOWWINDOW )
{
SetFocus( ( HWND) FindWindow( NULL, hb_parc(1) ) );
SetForegroundWindow( ( HWND) FindWindow( NULL, hb_parc(1) ) );
ShowWindow(( HWND) FindWindow( NULL, hb_parc(1) ), SW_RESTORE );
ShowWindow(( HWND) FindWindow( NULL, hb_parc(1) ), SW_MINIMIZE );
ShowWindow(( HWND) FindWindow( NULL, hb_parc(1) ), SW_RESTORE );
}
#pragma ENDDUMP
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Maximizar uma Janela Externa
Bom dia
ASimoes, só por curiosidade... porque você usa programas externos para gerar relatórios?
Rubens
ASimoes, só por curiosidade... porque você usa programas externos para gerar relatórios?
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Maximizar uma Janela Externa
Porque esse relatório busca informações em banco de dados externos e esse acesso é controlado
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Maximizar uma Janela Externa
A questão ai é que não estou conseguindo manipular a janela externa, quando faz SetForegroundWindow ou SetFocus o outro comando para restaurar não funciona, fica da forma como tá na imagem postada, embora tenha testado com outros e tenha funcionado, enfim.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Maximizar uma Janela Externa
Experimente usar a função PostMessage:
Para maximizar:
Para minimizar:
Para maximizar:
Código: Selecionar todos
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);Código: Selecionar todos
PostMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
Maximizar uma Janela Externa
Ola Marcos,
Testei a função PostMessage mas não funcionou, essa janela que eu chamo é um relatório quickreport do delphi não sei se ajuda a informação
Tentei até SetForegroundWindow(hWnd); antes da PostMessage
A função que eu testei PostMessage mas não funciona
HB_SHOWWINDOW( "Relatorio" )
Testei a função PostMessage mas não funcionou, essa janela que eu chamo é um relatório quickreport do delphi não sei se ajuda a informação
Tentei até SetForegroundWindow(hWnd); antes da PostMessage
A função que eu testei PostMessage mas não funciona
HB_SHOWWINDOW( "Relatorio" )
Código: Selecionar todos
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC( HB_SHOWWINDOW )
{
HWND hWnd = FindWindow( NULL, hb_parc( 1 ) );
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
}
#pragma ENDDUMP
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Maximizar uma Janela Externa
Veja se está retornando um handle válido:
Deve retornar .T. se achar o handle da janela e .F. se não achar.
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 )
{
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
hb_retl( 1 );
}
else
{
hb_retl( 0 );
}
}
#pragma ENDDUMP
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Maximizar uma Janela Externa
Bom dia...
ASimoes...
Tenho essa rotina para fechar o aplicativo
Será que ao invés de oProcessos:Terminate(). não teria uma método oProcessos:Maximize()?
Alguém que entenda bem desse CreateObject() aí não poderia nos ajudar?
Eu tenho o mesmo problema com o acbrmonitor nas versões mais novas. Quando mando imprimir uma nota com preview, abre a nota mas fica minimizado.
Rubens
ASimoes...
Tenho essa rotina para fechar o aplicativo
Código: Selecionar todos
local Retorno := .f.
local oScriptObj
local oWmiService
local oListaProcess
local oProcessos
oScriptObj := CREATEOBJECT( "wbemScripting.SwbemLocator" )
oWmiService := oScriptObj:ConnectServer()
oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )
for Each oProcessos in oListaProcess
Retorno := .t.
oProcessos:Terminate() // mata o _cEXE
next
return Retorno
Alguém que entenda bem desse CreateObject() aí não poderia nos ajudar?
Eu tenho o mesmo problema com o acbrmonitor nas versões mais novas. Quando mando imprimir uma nota com preview, abre a nota mas fica minimizado.
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Maximizar uma Janela Externa
Rubens,
Infelizmente não tem esse método.
Infelizmente não tem esse método.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Maximizar uma Janela Externa
Marcos,
A função retornou .T.
A função retornou .T.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Maximizar uma Janela Externa
Baseado na imagem que você apresentou:
. a janela "Sistema de Controles de Expedientes Internos" é a janela principal (main) da aplicação
. a janela "Consulta de Expedientes" é uma janela de diálogo da aplicação
. a janela apontada pela seta vermelha é a janela que você quer restaurar (pela forma como está minimizada, ela deve ser 'filha' (child) da aplicação)
A janela "Consulta de Expedientes" é modal ? Pois me parece que algo está bloqueando a janela do relatório.
. a janela "Sistema de Controles de Expedientes Internos" é a janela principal (main) da aplicação
. a janela "Consulta de Expedientes" é uma janela de diálogo da aplicação
. a janela apontada pela seta vermelha é a janela que você quer restaurar (pela forma como está minimizada, ela deve ser 'filha' (child) da aplicação)
A janela "Consulta de Expedientes" é modal ? Pois me parece que algo está bloqueando a janela do relatório.
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
Maximizar uma Janela Externa
Marcos,
. a janela "Consulta de Expedientes" é uma janela de diálogo da aplicação
É uma janela tipo dialog modal (hwgui)
. a janela apontada pela seta vermelha é a janela que você quer restaurar (pela forma como está minimizada, ela deve ser 'filha' (child) da aplicação)
É uma janela Delphi (quickreport) é somente o relatório não tem janela, já entra mostrado o relatório
. a janela "Consulta de Expedientes" é uma janela de diálogo da aplicação
É uma janela tipo dialog modal (hwgui)
. a janela apontada pela seta vermelha é a janela que você quer restaurar (pela forma como está minimizada, ela deve ser 'filha' (child) da aplicação)
É uma janela Delphi (quickreport) é somente o relatório não tem janela, já entra mostrado o relatório
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)