Abertura de outro programa console via hwgui

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abertura de outro programa console via hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
Tem muita coisa para diminuir no seu código.
Isso aqui por exemplo:

Código: Selecionar todos

if us="I" .or. us="V" .or. us="Y" .or. us="G" .or. us="J" .or. us="D" .or. us="Z" .or. us="N" .or. us="W" .or. us="E"
//Para
If us $ "IVYGJDZNWE" ou assim If us $ "I V Y G J D Z N W E" ou assim If us $ "I/V/Y/G/J/D/Z/N/W/E" levando em consideração que não aceite o espaço em branco ou "/" no campo US.
Mesma coisa aqui:
if "N293S0U"$upper(netname()) .or. "INACIO"$upper(netname()) .or. "INACIOCARVALHO"$upper(netname()) .or. "RODRIGO"$upper(netname()) .or. "CAMYLLA"$upper(netname()) .or. "VANESSA"$upper(netname()) .or. "LUIZ"$upper(netname()) .or. "MVAZ"$upper(netname())
//Para:
if upper(netname()) $ "N293S0U INACIO INACIOCARVALHO RODRIGO CAMYLLA VANESSA LUIZ MVAZ" 
Essas partes acredito que não tem necessidade:

Código: Selecionar todos

...
    private nTecla2 :=lastkey()
    private nTecla :=lastkey()
...     
            do case
                case us="I"
                     @ a,b clear to a+21,b+39
                     @ a,b to a+21,b+39 double
            case us="V" .or. us="W"
                     @ a,b clear to a+13,b+39
                     @ a,b to a+13,b+39 double
            case us="G"
                     @ a,b clear to a+15,b+39
                     @ a,b to a+15,b+39 double
                case us="Y" .or. us="J" .or. us="N" .or. us="V" .or. us="Z"
                     @ a,b clear to a+14,b+39
                     @ a,b to a+14,b+39 double
            case us="E"
                     @ a,b clear to a+15,b+39
                     @ a,b to a+15,b+39 double
            case us="Z" .or. us="D"
                     @ a,b clear to a+15,b+39
                     @ a,b to a+13,b+39 double
                otherwise
                     @ a,b clear to a+11,b+39
                     @ a,b to a+11,b+39 double
             endcase
save screen e restore screen não usa também para de desenho vira coisa do passado.
Aqui vc usa para acrescentar mais opções.

Código: Selecionar todos

          if us="I"
             a=a+3
          endif
Nos botões que eu desenhei vc pode fazer da mesma forma.
O ultimo botão foi esse:
@ 10,280 BUTTON "Por data de audiência" SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
Veja que não precisa dessas linhas.

Código: Selecionar todos

 
 if us="I"
     a=a+3
 endif
Aqui vc continua colocando os botões BUTTON equivale ao PROMPT. Só seguir a lógica de pular 30 que é a LARGURA DO BOTÃO

Código: Selecionar todos

       if us="I" .or. us="V" .or. us="Y" .or. us="G" .or. us="J" .or. us="D" .or. us="Z" .or. us="N" .or. us="W" .or. us="E" // .or. us="U" .and. date()>ctod("04/02/16")) .or. us="F" .or. us="M"
                @ a+8,b+1 prompt "Telefones                             "
                @ a+9,b+1 prompt "Dados pessoais                        "
                @ a+10,b+1 prompt "Lista de compras                      "
            @ a+11,b+1 prompt "Transferências bancárias              "
            @ a+12,b+1 prompt "Notas para lançamento                 "
            if us="J" .or. us="Z"
               @ a+13,b+1 prompt "Transferência para músicos           "
            endif
            if us="E"
                @ a+13,b+1 prompt "Despesas Bia                         "
               @ a+14,b+1 prompt "Despesas Meg                         "
            endif
            if us="G"
               @ a+13,b+1 prompt "Atividades externas                   "
               @ a+14,b+1 prompt "Contas pra pagar                      "
            endif
            if us="Z"
               @ a+14,b+1 prompt "Contas pra pagar                      "
            endif
             endif
             if us="I"
                @ a+13,b+1 prompt "Prioridade zero                       "
                @ a+14,b+1 prompt "Por vínculo                           "
                @ a+15,b+1 prompt "Por usuário                           "
                @ a+16,b+1 prompt "Por usuário não resolvida             "
             endif

Código: Selecionar todos

@ 10,280 BUTTON "Por data de audiência"                   SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
//O próximo será
if us="I" .or. us="V" .or. us="Y" .or. us="G" .or. us="J" .or. us="D" .or. us="Z" .or. us="N" .or. us="W" .or. us="E"
@ 10,310 BUTTON "Telefones"                   SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")} 
Vc mostra ou não a opção para a pessoa de acordo esse tal US
Uma outra forma é vc mostrar TODAS AS OPÇÕES e de acordo ao US ele poder ou não executar.

Código: Selecionar todos

@ 10,310 BUTTON "Telefones"                   SIZE 350,30 On Click {||iif(fTemPermissao(),hwg_MsgInfo("Em desenvolvimento"),hwg_msgStop("Sem permissão para essa opção"))} 
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Abertura de outro programa console via hwgui

Mensagem por cjp »

Testei teu exemplo aqui, funcionou.
Exceto quanto à acentuação, que ficou toda bagunçada. Testei com várias codepages. No meu teste também está com problema de acentuação (ia até abrir outro tópico pra isso).
Mas coloquei a função no meu teste, e daí não funcionou. Por favor, veja se fiz algo errado:

Código: Selecionar todos

#include "hwgui.ch"
REQUEST HB_GT_GUI_DEFAULT
REQUEST HB_LANG_PT, HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850, HB_CODEPAGE_UTF8EX

FUNCTION Main
         Local cRet, oSay1, oSay2, oSay3, nId, cTxt
		 Local oFont := HFont():Add( "MS Sans Serif",0,-13 )
		 private vers :="12/07/22"
		 private oDlg, cnSQL, us, nmus, seis
		 private cSair :="N"
		 private hrabertura :=time()
		 private nProvAtiv :=3

HB_CDPSELECT([PTISO])
hb_langselect([PT])
		 
		 set date brit
		 
         PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
         PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
 
		 do while .t.
		    if us=NIL
		       cRet=login()
			endif

			if us#NIL
               cadativ("Processos34","Processos34: iniciou",,0," ",0,0," ")
               exqado("update fazendo set data='"+dtsql(date())+"',hora='"+time()+"',assunto='Iniciou o processo34' where usuario='"+us+"'",18)
			endif
			
            INIT DIALOG oDlg TITLE "Processos - Versão: "+substr(vers,7,2)+"."+substr(vers,4,2)+"."+substr(vers,1,2) AT 1, 1 SIZE 650, 600 FONT oFont

            MENU OF oDlg
                 MENU TITLE "&Finalizar" //ACTION ConfirmarFechar()
                      MENUITEM "&Sair do sistema" ACTION ConfirmarFechar() //hwg_Msginfo( "Just a test", "Message" )
                 ENDMENU

                 MENU TITLE "&Consultar" //ACTION consulta()
                      MENUITEM "&Abrir opções de consulta" ACTION consultar()  //hwg_Msginfo( HwG_Version(), "About" )
                 ENDMENU
				 
                 MENU TITLE "C&adastrar" //ACTION cadastro()
                      MENUITEM "&Abrir opções de cadastrar" ACTION cadastro()
					  
                 ENDMENU
				 
                 MENU TITLE "&Manutenção" //ACTION manutencao()
                      MENUITEM "&Abrir opções de manutenção" ACTION manutencao()   //hwg_Msginfo( HwG_Version(), "About" )
                 ENDMENU
            ENDMENU


            @ 0,110  BITMAP        Bitmap1 ;
             SHOW          "ImagemLondres.jpg" ; 
             STRETCH       0 ;
             SIZE          650,430 //nWidth, nHeight - 65

   
			if cRet="N" .or. cSair="S"
			   return .f.
				   
			elseif cRet="S"
               hb_run("start PROC2P.exe " + us + " " + "visível-"+nmus + " " + seis)			   
			   
               @ 5,60 SAY oSAY2 CAPTION "Olá, "+alltrim(nmus)+". Escolha uma das opções clicando nos botões ou nos menus acima. As opções abrirão, por enquanto, ainda na interface tradicional, até que a mudança de interface seja completada" SIZE 590, 50

               cnSQL := ConexaoMySQL()
               cProc=cnSQL:Open()
       
               cProc=cnSQL:execute("select texto from biblia where dtuso='" + Transform( DtoS( Date() ), "@R 9999-99-99" ) + "'")
			   if cProc:recordcount()=0
		          cProc=cnSQL:execute("select top 1 texto,id from biblia order by dtuso")
			      nId=cProc:Fields("id"):Value
			      cTxt=cProc:Fields("texto"):Value
			      cProc=cnSQL:execute("UPDATE biblia set dtuso='"+dtsql(date())+"' WHERE id="+alltrim(str(nId)))
			   else
			      cTxt=cProc:Fields("texto"):Value
			   endif
               cnSQL:Close()
			   oDlg:Close()
			   
               @ 0,5 BUTTON "Finalizar (Esc)" SIZE 140,50 ON CLICK {||ConfirmarFechar()}
			   
               @ 170,5 BUTTON "Consultar" SIZE 140,50 ;
                 ON CLICK {||consultar()}

               @ 340,5 BUTTON "Cadastrar" SIZE 140,50 ;
                 ON CLICK {||cadastro()}
     
               @ 510,5 BUTTON "Manutenção" SIZE 140,50 ;
                 ON CLICK {||manutencao()}

			   @ 5,540 SAY oSAY3 CAPTION "Pensamento do dia: "+ansi(cTxt) SIZE 590, 170
			   
			endif

            ACTIVATE DIALOG oDlg

			if lastkey()=27
               hwg_Msginfo( "Entrou no lastkey=27", "Message" )
			   if confirmarfechar()="S"
			      return .f.
			   else
			      loop
			   endif
			endif

		 enddo

Return		 

...
		 
Function consultar
Local oDlg,oFont, cTitle := "Menu Consultar"

PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -16

INIT DIALOG oDlg CLIPPER NOEXIT TITLE cTitle Font oFont AT 0,0 SIZE 380,450 ;
                                                       STYLE  WS_POPUP+WS_VISIBLE+WS_CAPTION+WS_SYSMENU+DS_CENTER

@ 10,010 BUTTON "Finalizar"                               SIZE 350,30 On Click {||hwg_EndDialog()}
@ 10,040 BUTTON "Item em Execução ou próximo a executar"  SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")} 
@ 10,070 BUTTON "Por Assunto"                             SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,100 BUTTON "Pelo Conteúdo"                           SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,130 BUTTON "Pelo Número do Item"                     SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,160 BUTTON "Instruções de Uso do Sistema"            SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,190 BUTTON "Programa de produtividade"               SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,220 BUTTON "Pelo número do processo"                 SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,250 BUTTON "Pela data de carga do proceso"           SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,280 BUTTON "Pro data de audiência"                   SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}

oDlg:Activate()

Return .T.
Pelo que entendi, era pra abrir uma nova janela com estas opções, mas não aconteceu nada.

Mas reitero o que disse nos posts anteriores: pra dar continuidade no meu sistema, preciso muito resolver uma questão que parece simples, mas não consigo: colocar a tela chamada em primeiro plano. Como disse, cada opção destas irá chamar nova função, com outras opções, que chamarão outras opções, e assim por diante. Obviamente, não vou pretender que vc faça todas as telas. E, na verdade, já entendi como fazer (embora aqui não esteja funcionando ainda). Enquanto vou implementando estas telas aos poucos, precisaria já colocar as prontas em funcionamento. E, pra isso, só preciso resolver a questão de colocar a nova tela em primeiro plano. Consegue me ajudar nisso?
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abertura de outro programa console via hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
E, pra isso, só preciso resolver a questão de colocar a nova tela em primeiro plano. Consegue me ajudar nisso?
Tem esse aqui:

Código: Selecionar todos

...

function consulta
       cApp := "consultaprocessos34"
         __run("consultaprocessos34.exe "+us+" "+vers)
        hb_ShowWindow(cApp)
return
...
Coloque no final do seu PRG, essa parte pq é código em C
#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
Veja ai se vai funcionar.
Estou no Linux aqui, domingo ou segunda eu posso tentar com mais tempo.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abertura de outro programa console via hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
Fiz aqui sem as imagens e tirando algumas funções, que não tenho aqui.
Screenshot_20240316_022210.png

Código: Selecionar todos

#include "hwgui.ch"
REQUEST HB_LANG_PT, HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850, HB_CODEPAGE_UTF8EX

FUNCTION Main
         Local cRet, oSay1, oSay2, oSay3, nId, cTxt
       Local oFont := HFont():Add( "MS Sans Serif",0,-13 )
       private vers :="12/07/22"
       private oDlg, cnSQL, us, nmus, seis
       private cSair :="N"
       private hrabertura :=time()
       private nProvAtiv :=3

HB_CDPSELECT([PTISO])
hb_langselect([PT])
       
       set date brit
       
         PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
         PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
 
       do while .t.
          //if us=NIL
          //   cRet=login()
         //endif

         //if us#NIL
         //      cadativ("Processos34","Processos34: iniciou",,0," ",0,0," ")
         //      exqado("update fazendo set data='"+dtsql(date())+"',hora='"+time()+"',assunto='Iniciou o processo34' where usuario='"+us+"'",18)
         //endif
         
            INIT Window oMain MAIN TITLE "Processos - Versão: "+substr(vers,7,2)+"."+substr(vers,4,2)+"."+substr(vers,1,2) AT 1, 1 SIZE 650, 600 FONT oFont

            MENU OF oMain
                 MENU TITLE "&Finalizar" 
                      MENUITEM "&Sair do sistema" ACTION hwg_Msginfo( "Just a test", "Message" )
                 ENDMENU

                 MENU TITLE "&Consultar" 
                      MENUITEM "&Abrir opções de consulta" ACTION consultar()  //hwg_Msginfo( HwG_Version(), "About" )
                 ENDMENU
             
                 MENU TITLE "C&adastrar" 
                      MENUITEM "&Abrir opções de cadastrar" ACTION hwg_Msginfo( HwG_Version(), "About" )
                 
                 ENDMENU
             
                 MENU TITLE "&Manutenção" 
                      MENUITEM "&Abrir opções de manutenção" ACTION hwg_Msginfo( HwG_Version(), "About" )
                 ENDMENU
            ENDMENU
/*
            @ 0,110  BITMAP        Bitmap1 ;
             SHOW          "ImagemLondres.jpg" ; 
             STRETCH       0 ;
             SIZE          650,430 //nWidth, nHeight - 65
*/
   
         if cRet="N" .or. cSair="S"
            return .f.
               
         elseif cRet="S"
               hb_run("start PROC2P.exe " + us + " " + "visível-"+nmus + " " + seis)            
            
               @ 5,60 SAY oSAY2 CAPTION "Olá, "+alltrim(nmus)+". Escolha uma das opções clicando nos botões ou nos menus acima. As opções abrirão, por enquanto, ainda na interface tradicional, até que a mudança de interface seja completada" SIZE 590, 50
/*
               //cnSQL := ConexaoMySQL()
               //cProc=cnSQL:Open()
       
               //cProc=cnSQL:execute("select texto from biblia where dtuso='" + Transform( DtoS( Date() ), "@R 9999-99-99" ) + "'")
            if cProc:recordcount()=0
                cProc=cnSQL:execute("select top 1 texto,id from biblia order by dtuso")
               nId=cProc:Fields("id"):Value
               cTxt=cProc:Fields("texto"):Value
               cProc=cnSQL:execute("UPDATE biblia set dtuso='"+dtsql(date())+"' WHERE id="+alltrim(str(nId)))
            else
               cTxt=cProc:Fields("texto"):Value
            endif
               cnSQL:Close()*/
               
           // -> oDlg:Close() Tá fechando o quê ?
            
               @ 0,5 BUTTON "Finalizar (Esc)" SIZE 140,50 ON CLICK hwg_Msginfo( HwG_Version(), "About" ) //{||ConfirmarFechar()}
            
               @ 170,5 BUTTON "Consultar" SIZE 140,50 ;
                 ON CLICK {||consultar()}

               @ 340,5 BUTTON "Cadastrar" SIZE 140,50 ;
                 ON CLICK {||.t.}
     
               @ 510,5 BUTTON "Manutenção" SIZE 140,50 ;
                 ON CLICK {||.t.}

            @ 5,540 SAY oSAY3 CAPTION "Pensamento do dia: "+"abc" /*ansi(cTxt)*/ SIZE 590, 170
            
         endif

            ACTIVATE DIALOG oMain

         if lastkey()=27
               hwg_Msginfo( "Entrou no lastkey=27", "Message" )
            //if confirmarfechar()="S"
            //   return .f.
            //else
            //   loop
            //endif
         endif

       enddo

Return       


       
Function consultar
Local oDlg,oFont, cTitle := "Menu Consultar"

PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -16

INIT DIALOG oDlg CLIPPER NOEXIT TITLE cTitle Font oFont AT 0,0 SIZE 380,450 ;
                                                       STYLE  WS_POPUP+WS_VISIBLE+WS_CAPTION+WS_SYSMENU+DS_CENTER

@ 10,010 BUTTON "Finalizar"                               SIZE 350,30 On Click {||hwg_EndDialog()}
@ 10,040 BUTTON "Item em Execução ou próximo a executar"  SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")} 
@ 10,070 BUTTON "Por Assunto"                             SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,100 BUTTON "Pelo Conteúdo"                           SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,130 BUTTON "Pelo Número do Item"                     SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,160 BUTTON "Instruções de Uso do Sistema"            SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,190 BUTTON "Programa de produtividade"               SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,220 BUTTON "Pelo número do processo"                 SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,250 BUTTON "Pela data de carga do proceso"           SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}
@ 10,280 BUTTON "Pro data de audiência"                   SIZE 350,30 On Click {||hwg_MsgInfo("Em desenvolvimento")}

oDlg:Activate()

Return .T.
Detalhe, mudei a DIALOG por uma WINDOW MAIN(Principal) de oDlg para oMain., -> Menu OF oMAIN.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Abertura de outro programa console via hwgui

Mensagem por JoséQuintas »

Interrompendo um pouco:

Era assim mesmo que usava no aplicativo anterior, ou mudou depois de separar o fonte ?
Estranhei o Ansi( cTxt ), não sei se colocou isso depois de separar o fonte.
Não está certo, mas ... se já usava assim, continua assim.
Se isso foi depois de separar o fonte.... aí é outra história.

Sobre a janela:
Verifique hwg_FindWindow() e hwg_BringToTop()
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Abertura de outro programa console via hwgui

Mensagem por cjp »

Tem esse aqui:

Veja ai se vai funcionar.
Estou no Linux aqui, domingo ou segunda eu posso tentar com mais tempo.
Não funcionou. Não está trazendo a janela pra frente.

Olá!
Fiz aqui sem as imagens e tirando algumas funções, que não tenho aqui.

Detalhe, mudei a DIALOG por uma WINDOW MAIN(Principal) de oDlg para oMain., -> Menu OF oMAIN.
Esta parte funcionou.


Interrompendo um pouco:

Era assim mesmo que usava no aplicativo anterior, ou mudou depois de separar o fonte ?
Estranhei o Ansi( cTxt ), não sei se colocou isso depois de separar o fonte.
Não está certo, mas ... se já usava assim, continua assim.
Se isso foi depois de separar o fonte.... aí é outra história.
No meu sistema sem hwgui não preciso dessa ansi pra isso (até uso ela em outras situações).
Tinha colocado ela pra tentar resolver a acentuação, sem sucesso.
Mas vi agora que, tirando ela, e com a intrução da PTISO antes sugerida, o problema foi solucionado.



Sobre a janela:
Verifique hwg_FindWindow() e hwg_BringToTop()
Também não funcionou. Não sei se fiz certo:

Código: Selecionar todos

function consulta
       cApp := "consultaprocessos34"
         __run("consultaprocessos34.exe "+us+" "+vers)
		 hwg_FindWindow(cApp)
		 hwg_BringToTop(cApp)
return
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Abertura de outro programa console via hwgui

Mensagem por JoséQuintas »

hwg_FindWindow() é pra procurar a janela pelo título e retornar o handle.
Veja qual é a sintaxe a ser usada, se for igual API Windows, o primeiro parâmetro é NIL ou vazio.
E usa o handle na hwg_BringToTop().
Confere também no manual. Tem lib que trabalha com ponteiro e tem lib que trabalha com ponteiro convertido pra número.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abertura de outro programa console via hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
Não funcionou. Não está trazendo a janela pra frente.

Código: Selecionar todos

...
@ 10,280 BUTTON "Por data de audiência"                   SIZE 350,30 On Click {||consulta()}
...
Function Consulta
hb_ProcessOpen("..\exe\PROC2P.exe")
return .t.
No aplicativo antigo no console "PROC2P.exe" e demais coloque essas 2 linhas depois da FUNCTION MAIN

Código: Selecionar todos

FUNCTION MAIN 
LOCAL ... etc
HB_GtInfo( HB_GTI_ISFULLSCREEN, .F. )
HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
...
Testei aqui no meu ruindows e funcionou a contento!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Abertura de outro programa console via hwgui

Mensagem por marcosgambeta »

Não testei, mas talvez funcione com esta função da hbwin:

Código: Selecionar todos

wapi_ShellExecute(oMainWindow:handle, "open", "c:/caminho/arquivo.exe")
O valor 'default' do sexto parâmetro já é SHOWNORMAL Sendo assim, a janela do programa deve aparecer corretamente.

Se houver parâmetros, devem ser passados no quarto parâmetro.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Abertura de outro programa console via hwgui

Mensagem por marcosgambeta »

Tinha me esquecido da função equivalente da HWGUI:

Código: Selecionar todos

/*
 * ShellExecute( cFile, cOperation, cParams, cDir, nFlag )
 */
HB_FUNC( HWG_SHELLEXECUTE )
{
#if defined( HB_OS_WIN_CE )
   hb_retni( -1 );
#else
   void *hOperation;
   void *hFile;
   void *hParameters;
   void *hDirectory;
   LPCTSTR lpDirectory;

   lpDirectory = HB_PARSTR( 4, &hDirectory, NULL );
   if( lpDirectory == NULL )
      lpDirectory = TEXT( "C:\\" );

   hb_retnl( ( LONG ) ShellExecute( GetActiveWindow(  ),
               HB_PARSTRDEF( 2, &hOperation, NULL ),
               HB_PARSTR( 1, &hFile, NULL ),
               HB_PARSTR( 3, &hParameters, NULL ),
               lpDirectory, HB_ISNUM( 5 ) ? hb_parni( 5 ) : SW_SHOWNORMAL ) );

   hb_strfree( hOperation );
   hb_strfree( hFile );
   hb_strfree( hParameters );
   hb_strfree( hDirectory );
#endif
}
Podem desconsiderar a função da hbwin.
Atenciosamente,
Marcos Antonio Gambeta
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Abertura de outro programa console via hwgui

Mensagem por cjp »

hwg_FindWindow() é pra procurar a janela pelo título e retornar o handle.
Veja qual é a sintaxe a ser usada, se for igual API Windows, o primeiro parâmetro é NIL ou vazio.
E usa o handle na hwg_BringToTop().
Confere também no manual. Tem lib que trabalha com ponteiro e tem lib que trabalha com ponteiro convertido pra número.

Não sei se entendi corretamente.
Fiz assim:

Código: Selecionar todos

function consulta
       cApp := "consultaprocessos"
         __run("consultaprocessos.exe "+us+" "+vers)
		 x=hwg_FindWindow(cApp)
		 hwg_BringToTop(x)
return
Não está colocando a tela console em primeiro plano.




HB_GtInfo( HB_GTI_ISFULLSCREEN, .F. )
HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
Está dando erro: Variable does not exist: HB_GTI_ISFULLSCREEN

wapi_ShellExecute(oMainWindow:handle, "open", "c:/caminho/arquivo.exe")
Não está aparecendo a tela console, embora, aparentemente, esteja abrindo, tanto que a tela hwgui fica ocupada.
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abertura de outro programa console via hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
Coloca no inicio:
#include "hbgtinfo.ch"
Faça primeiro o que eu te disse.
Se não funcionar, teste as outras opções.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Abertura de outro programa console via hwgui

Mensagem por cjp »

Fiz.
Não dá mais erro.
Mas continua não abrindo a tela em primeiro plano.
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abertura de outro programa console via hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
hb_ProcessOpen("..\exe\PROC2P.exe")
Tá chamando com essa opção hb_processOpen() ?
PQ vai abrir o EXE MAXIMIZADO!

Isso que passei é para colocar no outro.

Código: Selecionar todos

HB_GtInfo( HB_GTI_ISFULLSCREEN, .F. )
HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
É pra colocar nesse prg -> consultaprocessos.exe

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Abertura de outro programa console via hwgui

Mensagem por cjp »

Testei com as várias opções mencionadas neste tópico, inclusive com a hb_processopen(), assim:

Código: Selecionar todos

function consulta
         hb_processOpen("consultaprocessos.exe "+us+" "+vers)
return
E no consultaprocessos:

Código: Selecionar todos

HB_GtInfo( HB_GTI_ISFULLSCREEN, .F. )
HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
Inacio de Carvalho Neto
Responder