2012-10-01 3 views
0

내 응용 프로그램에서는 먼저 xls, xlsx, zip 파일을 데이터베이스에 바이너리 형식으로 업로드합니다.Excel에서 Excel, IE, Winzip 닫기 이벤트를 캐치하고 처리하는 방법

둘째, 임시 폴더를 만들어 이진 파일을로드하고 임시 폴더에서 원래 형식으로 변환 한 다음 사용자가 개요를 볼 수 있도록 자동으로 엽니 다.

그러나 보안을 고려하여 사용자가 Excel 또는 winzip 응용 프로그램을 닫은 후에 임시 파일을 삭제하려고합니다.

내 마음 속에서 Excel과 winzip과 같은 응용 프로그램의 closing 이벤트를 잡아야 나머지 작업을 수행 할 수 있습니다.

C#이나 VB를 사용하여 몇 가지 해결책을 볼 수 있습니다. Java가 또한 할 수 있기를 바랍니다. 조언을 해줄 수 있니?

답변

0

Process.waitFor()를 사용하면 외부 프로세스가 시작될 때까지 기다리는 스레드를 완료 할 수 있습니다.

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html

(이이 UI 응용 프로그램 인 경우 당신은 아마 예를 들어,하지 말아야로), 메인 스레드를 차단하는 외부 변환을 수행하기 위해 별도의 스레드를 해고하지 않으려면

.

+0

안녕하세요, Eric 님의 답변에 감사드립니다. 문서에서 "이 프로세스 개체가 나타내는 프로세스가 종료 될 때까지 현재 스레드가 대기해야합니다."라는 메시지가 표시됩니다. 사용자가 이미 응용 프로그램을 실행하기 전에 Excel 응용 프로그램을 열었는지 궁금합니다. 파일을 엑셀, 프로세스가 excel.exe를 기다리는 경우, 하나의 엑셀 파일을 닫으면 프로세스는 두 개의 엑셀 파일을 모두 종료합니다. 이는 동일한 프로세스를 공유하기 때문입니다. 내가 맞습니까? 그것에 대해 혼란스러워하는 종류. 감사합니다 –

+0

다음 실험을 시도해보십시오 : Windows 시작 버튼을 클릭하고 실행 막대에 Excel을 입력하십시오. Enter를 누르십시오. 한 번 반복하십시오. 작업 관리자를 확인하십시오. 두 개의 별도 Excel 프로세스가 실행 중이며 각각 프로세스 ID가 다릅니다. 프로그래밍 방식으로 Excel을 시작하면 별개의 프로세스에서 Excel이 실행됩니다. * 그러나 *, 파일 연결을 통해 Excel 문서를로드하는 경우 (예 : Excel 파일을 두 번 클릭) Excel은 가능한 경우 해당 문서를 현재 실행중인 Excel 프로세스로로드합니다. –

+0

안녕하세요, Eric J. 안녕하세요. 도와 줘서 고마워. –

관련 문제