Alternativa para Run

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Alternativa para Run

Mensagem por asimoes »

Toledo estou com o problema abaixo para postar, não sei o que é:

Forbidden
You don't have permission to access /forum/posting.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Deve ser o código em c com 21 linhas. estou colocando dentro de Anexei o arquivo.

Ex. de uso:

cArq1:="arq1.jpg"
cArq2:="arq2.jpg"

cArqSaida:='"'+"/C COPY /B "+cArq1+" "+cArq2+'"'
COPY_ARQ(&cArqSaida)
Anexos
COPY_ARQ.PRG
Run Alternativo
(703 Bytes) Baixado 89 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Alternativa para Run

Mensagem por Toledo »

asimoes escreveu:Toledo estou com o problema abaixo para postar, não sei o que é
Alexandre, já abri um chamado no suporte do meu servidor para ver o que está ocorrendo.

Obrigado pelo aviso.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Alternativa para Run

Mensagem por asimoes »

Pessoal,

Na função CopyArq tem como concatenar o "/C " na variável lpCommand ?

cArqSaida:='"'+"/C COPY /B "+cArq1+" "+cArq2+'"'
COPY_ARQ(&cArqSaida)

ShExecInfo.lpParameters = lpCommand;

Teria que fazer uma conversão de tipo char/string não achei um exemplo legal.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Alternativa para Run

Mensagem por asimoes »

Na função copy_arq:

Para concatenar o comando /C estou fazendo assim:

Código: Selecionar todos

     char cfinal[500];
     
     LPCTSTR lpCommand = (LPTSTR) hb_parc( 1 );
     
     char scmd[] = "/C ";
    
     snprintf(cfinal, 500, "%s%s", scmd, lpCommand);

     //para ver a concatenação.
     MessageBox( NULL, cfinal, TEXT( HB_I_("TESTE final") ), MB_ICONEXCLAMATION ); 
     .
     .
    ShExecInfo.lpParameters = cfinal;   

    
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Alternativa para Run

Mensagem por asimoes »

Uma nova versão da função:

Código: Selecionar todos

#pragma BEGINDUMP
   #pragma comment( lib, "shell32.lib" )
   #include "hbapi.h"
   #include <windows.h>
    
   HB_FUNC( COPY_ARQ )
   {
     SHELLEXECUTEINFO ShExecInfo = {0};     
     
     LPCTSTR lpCommand = (LPTSTR) hb_parc( 1 );
     
     BOOL bRetorno = FALSE;
     
     int lenlpCommand = hb_parclen( 1 ) + 4;
     
     char * cfinalCommand = ( char * ) hb_xgrab( hb_parclen( 1 ) + 4 );
     
     hb_snprintf(cfinalCommand, lenlpCommand, "%s%s", "/C ", lpCommand);
    
     //MessageBox( NULL, cfinalCommand, TEXT( HB_I_("TESTE final") ), MB_ICONASTERISK );
     
     ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
     ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
     ShExecInfo.hwnd = NULL;
     ShExecInfo.lpVerb = NULL;
     ShExecInfo.lpFile = "cmd.exe";        
     ShExecInfo.lpParameters = cfinalCommand;   
     ShExecInfo.lpDirectory = NULL;
     ShExecInfo.nShow = SW_HIDE;
     ShExecInfo.hInstApp = NULL; 
     ShellExecuteEx(&ShExecInfo);
     if(ShExecInfo.hProcess !=NULL)
     {
        if (hb_parl(2))
        {
           //Aguarda até que a execução tenha sido concluída.
           WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
           CloseHandle(ShExecInfo.hProcess);
        }
        bRetorno = TRUE;
     }
     else
     {
        //Retorna .F.
        bRetorno = FALSE;
     }
     hb_xfree( cfinalCommand );
     hb_retl(bRetorno);
   }
#pragma ENDDUMP
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder