Clipper On Line • Ver Tópico - Maximizar uma Janela Externa

Maximizar uma Janela Externa

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Maximizar uma Janela Externa

Mensagempor asimoes » 19 Mar 2018 19:33

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.
â–º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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor JoséQuintas » 19 Mar 2018 19:54

#include "hbwin.ch"

wapi_ShowWindow( hWnd, WIN_SW_SHOWMAXIMIZED )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18150
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 19 Mar 2018 21:18

Quintas,

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 19 Mar 2018 21:26

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.

2018-03-19 21_22_33-.png


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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor rubens » 20 Mar 2018 08:15

Bom dia

ASimoes, só por curiosidade... porque você usa programas externos para gerar relatórios?

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 20 Mar 2018 08:27

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 20 Mar 2018 08:32

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor marcosgambeta » 20 Mar 2018 08:48

Experimente usar a função PostMessage:

Para maximizar:
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);


Para minimizar:
PostMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 20 Mar 2018 10:11

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" )

#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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor marcosgambeta » 20 Mar 2018 10:49

Veja se está retornando um handle válido:

#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


Deve retornar .T. se achar o handle da janela e .F. se não achar.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Maximizar uma Janela Externa

Mensagempor rubens » 20 Mar 2018 10:53

Bom dia...

ASimoes...

Tenho essa rotina para fechar o aplicativo
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

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 20 Mar 2018 11:18

Rubens,

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 20 Mar 2018 11:28

Marcos,

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Maximizar uma Janela Externa

Mensagempor marcosgambeta » 20 Mar 2018 12:03

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.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Maximizar uma Janela Externa

Mensagempor asimoes » 20 Mar 2018 12:09

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
â–º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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro