Chamar programa Windows pelo xharbour

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

Moderador: Moderadores

Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

Chamar programa Windows pelo xharbour

Mensagem por paulovirt »

Como consigo chamar um programa do Windows, tipo calc.exe pelo xharbour sem ter que usar o comando "RUN C:\WINDOWS\CALC.EXE" pois ao utilizá-lo, é aberto o console do ms-dos?
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Creio que seja com o CreateObject() , da uma olhada no help !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Tente utilizar a função HB_OpenProcess(). Detalhes no help. Se não tiver help, pegue um no meu site, clicando aqui.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

Código: Selecionar todos


myrun("calc.exe")

function MYRUN( cComando )
local oShell, RET
oShell := CreateObject( "WScript.Shell" )
RET := oShell:Run( "%comspec% /c " + cComando, 0, .T. )
oShell := NIL
return iif( RET = 0, .T., .F. )


Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Abaixo dois exemplos:
Modo console:

Código: Selecionar todos

ShellExecute("calc")
Em Fivewin:

Código: Selecionar todos

*************************************  
Function Set_Calc()   //Calculadora() 
************************************* 
    LOCAL hWnd
    If ( hWnd := SeekCalculadora() ) == 0
        WinExec( 'Calc.Exe', SW_NORMAL )
     Else
        BringWindowToTop( hWnd )
        ShowWindow( hWnd, SW_RESTORE )
   Endif
Return Nil

*********************************
STATIC Function SeekCalculadora()
********************************* 
    LOCAL aCaptions := { 'Calc', 'Calculator', 'Calculadora' }
    LOCAL nPos, hWnd
    For nPos = 1 to Len(aCaptions)
        If ( hWnd := FindWindow( 0, aCaptions[nPos] ) ) > 0
            Return hWnd
        EndIf
    Next
Return hWnd
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Curiosidade: o que a Microsoft diz sobre a função WinExec: "This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function."
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Maligno escreveu:"This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function."
Não entendi nada!

:P :(Neg #-) :'(

Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

janio escreveu:
Maligno escreveu:"This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function."
Não entendi nada!

:P :(Neg #-) :'(

Jânio
"Essa função é fornecida somente para compatibilidade com o Windows de 16 bits. Os aplicativos devem usar a função CreateProcess"

A WinExec() é da API do Windows.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

"Essa função é fornecida somente para compatibilidade com o Windows de 16 bits. Os aplicativos devem usar a função CreateProcess ..."
... que por sua vez, é a função da API do Windows utilizada pela função HB_OpenProcess().
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder