C++ 및 네이티브 Win32 API를 사용하여 프로그램을 작성하고 있습니다. SFX 아카이브 EXE에서 사용자에게 GUI가 표시되지 않는 자동 모드에서 프로세스를 생성합니다. SFX 압축 파일을 추출하는 동안 응용 프로그램에 진행률 막대를 표시하고 싶습니다.SFX 아카이브가 추출되는 동안 진행률 표시 줄 표시
어떻게하면됩니까?
감사합니다.
C++ 및 네이티브 Win32 API를 사용하여 프로그램을 작성하고 있습니다. SFX 아카이브 EXE에서 사용자에게 GUI가 표시되지 않는 자동 모드에서 프로세스를 생성합니다. SFX 압축 파일을 추출하는 동안 응용 프로그램에 진행률 막대를 표시하고 싶습니다.SFX 아카이브가 추출되는 동안 진행률 표시 줄 표시
어떻게하면됩니까?
감사합니다.
생성하는 프로세스가 표준 출력에 텍스트 출력을 생성하는 경우 그 출력을 어떻게 든 구문 분석하고 진행 상황을 표시 할 수 있습니다. 있는지 확인하려면 명령 줄 창에서 활성화하고 얻은 정보를 확인하십시오.
win32의 CreateProcess()
을 사용하면 프로세스의 표준 출력을 파이프로 재지 정할 수 있습니다. 이렇게하면 생산 즉시 출력을받을 수 있습니다.
만드는 프로세스가 어떻게 든 진행 상황을보고하지 않으면 실제로 할 수있는 일이 많지 않습니다. 파일 크기와 파일을 추출하는 데 걸리는 평균 시간 사이의 기능을 제안한 다음 진행률 막대를 가짜로 만들 수 있습니다. 이는 사용자의 마음을 편안함으로 설정하는 데 도움이되지만 그 이상은 아닙니다.
- 편집
즉시 프로세스가 생성 될 때 CreateProcess()
호출이 반환. CreateProcess()
은 구조체 PROCESS_INFORMATION
을 작성한 프로세스의 핸들로 채 웁니다. 프로세스의 주 스레드 핸들을 포함합니다. 프로세스가 완료 될 때까지 기다리고 싶다면 WaitForSingleEvent()
스레드가 스레드가 종료 될 때 신호를받습니다. 작업이 끝나면 핸들을 CloseHandle()
잊지 마세요.
좋습니다. 감사합니다. 한 번만 더 질문합니다. CreateProcess() 함수를 실행 한 후 진행 막대가 멈추는 것을 방지하는 방법을 알고 있습니까? 내 프로세스를 잠급니다 (종료 된 후에 실행 된 EXE를 삭제하려고하므로 원하는 것입니다). – frbry
편집을 참조하십시오. 이 사이트에서 감사를 표시하는 일반적인 방법은 대답을 upvote하고 아마도 그것을 받아 들일 수도 있습니다. – shoosh