substituir SWPRUNCMD do blinker?

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

Moderador: Moderadores

pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

substituir SWPRUNCMD do blinker?

Mensagem por pena »

Bom dia, qual comando utilizo no harbour para substituir o comando swpruncmd do blinker?
é um comando copy do DOS
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

substituir SWPRUNCMD do blinker?

Mensagem por Jairo Maia »

Para executar um comando use MyRun():

Código: Selecionar todos

FUNC MyRun( cComando, lWait )  // executa programa externo
 Local oShell, nRet, cMsg
 lWait := If( Empty( lWait ), .F., lWait )  // Se .T. aguarda o programa fechar, se .F. não aguarda...
 oShell := CreateObject( "WScript.Shell" )
 nRet := oShell:Run( "%comspec% /c " + cComando, 0, lWait )
 oShell := Nil
Return If( nRet = 0, .T., .F. )
Para abrir um arquivo, use MyOpenFile():

Código: Selecionar todos

FUNC MyOpenFile( cComando )  // abre arquivo externo reconhecido nas extensões do windows...
 Local oShell, ret, cPath, cFile, nCursor:=SetCursor(0)
 
 cPath := SubS( cComando, 1, RAt( "\", cComando ) )
 cFile := SubS( cComando, RAt( "\", cComando ) + 1 )
 
 nRet := Win_Open_File( cPath, cFile )
 
 SetCursor( nCursor )
 
Return nRet
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
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

substituir SWPRUNCMD do blinker?

Mensagem por Itamar M. Lins Jr. »

Ola!
Pode usar o mesmo comando.
As funções do blinker foram incorporadas ao harbour.
hbmk23 meu.prg -lblink
https://github.com/harbour/core/blob/ma ... linker.prg

Código: Selecionar todos

FUNCTION SwpRunCmd( cCommand, nMem, cRunPath, cTempPath )

   HB_SYMBOL_UNUSED( nMem )
   HB_SYMBOL_UNUSED( cRunPath )
   HB_SYMBOL_UNUSED( cTempPath )

   IF ! HB_ISSTRING( cCommand ) .OR. Empty( cCommand )
#if defined( __PLATFORM__UNIX )
      cCommand := GetEnv( "SHELL" )
#else
      cCommand := GetEnv( "COMSPEC" )
#endif
   ENDIF

   RETURN ( t_nErrorLevel := hb_run( cCommand ) ) != -1
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

substituir SWPRUNCMD do blinker?

Mensagem por Jairo Maia »

Itamar M. Lins Jr. escreveu:Pode usar o mesmo comando.
É que a função SwpRunCmd(), abre uma janela preta (cmd) antes de executar o comando.

EM TEMPO:
Acabei colocando minha função de tratativa MyOpenFile() para a função Win_Open_File(). Este é o código da Win_Open_File():

Código: Selecionar todos

/*
  Função em C# para abrir arquivos externos reconhecidos nas extensões do Windows.
  Exemplo de Uso: WIN_OPEN_FILE( cPath, cFile )
*/
#pragma BEGINDUMP
  #include "hbapi.h"
  #include <windows.h>
  HB_FUNC( WIN_OPEN_FILE )
  {
    HINSTANCE hInst;
    LPCTSTR lpPath = (LPTSTR) hb_parc( 1 );
    LPCTSTR lpHelpFile = (LPTSTR) hb_parc( 2 );
    hInst = ShellExecute( 0, "open", lpHelpFile, 0, lpPath, SW_SHOW );
    hb_retnl( (LONG) hInst );
    return;
  }
#pragma ENDDUMP
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

substituir SWPRUNCMD do blinker?

Mensagem por Nascimento »

Jairo disse : É que a função SwpRunCmd(), abre uma janela preta (cmd) antes de executar o comando.
vc colocou a opção -gui ? no .hbp
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

substituir SWPRUNCMD do blinker?

Mensagem por Jairo Maia »

Nascimento escreveu:vc colocou a opção -gui ? no .hbp
Sim, e também a função Wvt_SetGui( .t. ) no inicio da minha função Main. SwpRunCmd() usa Hb_Run() para executar o comando, ela abre o cmd.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

substituir SWPRUNCMD do blinker?

Mensagem por JoséQuintas »

Não quer janela no COPY... não use o COPY, é ele quem precisa da janela.

Serve do Harbour: COPYFILE, hb_fCopy(), hb_vfCopy() ou outro que apareça ao digitar hbmk2 -find copy ?
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
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

substituir SWPRUNCMD do blinker?

Mensagem por Jairo Maia »

JoséQuintas escreveu:Serve do Harbour: COPYFILE, hb_fCopy(), hb_vfCopy() ou outro que apareça ao digitar hbmk2 -find copy ?
Sim. Sugeri a MyRun() porque com ela pode-se usar qualquer comando de baixo nível sem abrir o cmd.

Comandos como: ERASE, DELETE FILE, COPY FILE, RENAME, etc..., num primeiro momento da migração acabam estando presentes.

NOTA: As funções: COPY FILE, hb_fCopy(), hb_vfCopy(), são funções de baixo nível e abrem a janela cmd.

Para copiar arquivo com função nativo do Harbour sem janela cmd a função é:

Código: Selecionar todos

FileCopy( <cSourceFile>, <cTargetFile>, [<lBackup>] )
Para renomear sem janela cmd a função é:

Código: Selecionar todos

FRename( <cOldFile>, <cNewFile> )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder