Página 1 de 1

Alternativa para Run

Enviado: 18 Fev 2014 18:21
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)

Alternativa para Run

Enviado: 18 Fev 2014 22:10
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,

Alternativa para Run

Enviado: 19 Fev 2014 15:09
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.

Alternativa para Run

Enviado: 24 Fev 2014 10:09
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;   

    

Alternativa para Run

Enviado: 01 Mar 2014 19:20
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