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: 2821
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 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: 2821
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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: 765
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: 2821
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 2821
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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