Q&A

  • 실행파일 복사후 복사된 파일을 실행하고자 하는데....
아래와 같이 실행파일 *.exe를 복사하고 바루 실행 하면 실행이 되질 않습니다.
파일이 정상으로 복사 된것 확인 됬구요
복사 Function을 거치지 않으면 정상으로 실행 됩니다.
복사시 Lock문제인거 같은데 잘풀리지 않네요.
조언 부탁드립니다.

//File Copy Function
function TfVerctrl.fFileCopy(vFrom, vTodir, vTofile : String) : boolean;
var
Copybuffer : Pointer;
From, Dest : Integer;
BytesCopied, processing, size, FProcessed : Longint;
F : File of Byte;
vAttributes : Word;
const ChunkSize : Integer = 8192;
begin
   Result := false;
   if not fileexists(vFrom) then begin
      showmessage('From File Not Found Error' + '(' + vFrom + ')');
      exit;
      end;

   if vTodir = '' then exit;
   if vTofile = '' then exit;

   { Directory Create}
   if not gIsDir(vTodir) then begin
      if not fMkdir(vTodir) then begin
         showmessage('Directory Create Error' + '(' + vTodir + ')');
         exit;
         end;
      end;

   { file Get Attribute}
   vAttributes := FileGetAttr(vFrom);

   { Compute the length of the FCopyFrom file }
   assignfile(F, vFrom);
   try
     reset(F);
     Size := FileSize(F); {The length of the file}
   finally
     closefile(F);
   end;

   { Show the progressform if this is what the user wants }
   GetMem(Copybuffer, Chunksize);
   From := FileOpen(vFrom, fmShareDenyWrite);
   Dest := FileCreate(vTodir + '' + vTofile);
   {게이지 초기화}
.
.
.
.
   repeat
     BytesCopied := FileRead(From, Copybuffer^, ChunkSize);
     if BytesCopied > 0 then begin
       FileWrite(Dest, Copybuffer^, BytesCopied);

       {게이지 Prograss}
.
.
.
.
       end;
   until BytesCopied = 0;
   FreeMem(Copybuffer);

   { file Set Attribute}
   FileSetAttr(vTodir + '' + vTofile, vAttributes);
  
.
.
   Result := true;
end;



//실행부분...
         ShellExecute(handle, 'open', pchar('*.exe'), nil, nil, SW_SHOWNORMAL);


다소 코딩이 엉성하더라두 이해해 주시면 감사하겠습니다.
언제나 고수님들께 도움만 받는 델 초보가.....
1  COMMENTS
  • Profile
    민준기 2005.10.06 03:59
    이렇게 한번 해 보세요

    Application.ProcessMessages;
    // sleep(100);
    ShellExecute(handle, 'open', pchar('*.exe'), nil, nil, SW_SHOWNORMAL);