Página 1 de 1

Chamar programa Windows pelo xharbour

Enviado: 21 Fev 2008 11:16
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?

Enviado: 21 Fev 2008 11:25
por ederxc
Creio que seja com o CreateObject() , da uma olhada no help !

Enviado: 21 Fev 2008 11:28
por Maligno
Tente utilizar a função HB_OpenProcess(). Detalhes no help. Se não tiver help, pegue um no meu site, clicando aqui.

Enviado: 21 Fev 2008 13:35
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. )



Enviado: 21 Fev 2008 15:22
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

Enviado: 21 Fev 2008 16:25
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."

Enviado: 21 Fev 2008 18:51
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

Enviado: 21 Fev 2008 19:08
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.

Enviado: 21 Fev 2008 19:23
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().