2012-09-12 3 views
0

나는 usb 유틸리티 디스크를 만드는 과정에서 파일 세트를 USB 스틱에 복사하는 HTA를 가지고 있습니다. 제대로 작동하지만 복사 프로세스가 실행되는 동안 HTA가 응답하지 않는 문제가 있습니다. 복사하는 동안 실행을 일시 정지하지 않습니다 -vbscript hta freezing on 파일을 복사 할 때

Const FOF_CREATEPROGRESSDLG = &H0& 
sub CopyFiles(driveletter) ' Copys Files to the new USB Disk showing progress bar 

    if radio(0).checked Then 
    Set objFilesys = CreateObject("Scripting.FileSystemObject") 
    Set objShell = CreateObject("Shell.Application") 
    driveletter = ((driveletter) & "\") 
    Set objFolder = objshell.NameSpace(driveletter) 
    pathstring = objFilesys.GetAbsolutePathName("c:") 
    objFolder.CopyHere pathstring & "\" & "*.*", FOF_CREATEPROGRESSDLG 
    exit sub 
    elseif radio(1).checked Then 
    Set objFilesys = CreateObject("Scripting.FileSystemObject") 
      set objShell = CreateObject("shell.application") 
    pathstring = userselections.txtFile.value 
     if objFilesys.fileExists(pathstring & "\" & "kernel.sys") then 
      driveletter = ((driveletter) & "\") 
      Set objFolder = objshell.NameSpace(driveletter) 
        objFolder.CopyHere pathstring & "\" & "*.*", FOF_CREATEPROGRESSDLG 
     Else 
      msgbox "Error! The Specified path does not contain valid Install Files", vbcritical 
     end if 
    end if 
end sub 

답변

0

귀하의 문제는 Shell.Application과의 CopyHere 방법은 aynchronous 인 것 같다.

"objFolder.CopyHere"가 시작되고 "Exit Sub"가 바로 호출되어 CopyHere가 완료되기 전에 코드가 제어를 잃게됩니다.

가 압축하는 작동 making CopyHere sort of synchronous

Here's one의 몇 가지 예입니다 만, 여러분의 필요에 적용 할 수있다.

+0

HTAs는 그들이 실행하는 모든 명령에 대해 "정지"합니다. 문제가되지 않지만 파일 복사 나 문서 파싱 등의 작업은 대부분 시간이 오래 걸리며 정지 상태가됩니다. 위에서 언급 한 바와 같이 복사 프로세스에 일시 중지를 추가하여 hta의 응답 성을 높일 수 있습니다. 아마 이것은 당신에게 몇 가지 추가 정보를 줄 수 있습니다 : http://www.visualbasicscript.com/Avoid-HTA-interface-freeze-during-long-process-m82946.aspx – Mathias

관련 문제