2009-06-10 4 views
0

의 사용자가있어 Microsoft Word 2007을 사용하여 ASP 웹 응용 프로그램에서 단어 문서를 만들고 조작 할 수 있습니다. 나는 'Considerations for server-side Automation of Office'KB 기사와 이런 종류의 일을 할 수있는 많은 제 3 자 구성 요소에 대해 잘 알고 있지만, 이미이 길을 공평하게 검토했습니다.기존 ASP에서 WINWORD.EXE를 종료하려면 어떻게합니까?

그가 가지고있는 문제는 응용 프로그램 개체에서 Quit을 호출하더라도 프로세스가 종료되지 않는다는 것입니다. 예를 들어

:

Set objWord = Server.CreateObject("Word.Application") 
'' Do work 
objWord.Quit 
Set objWord = Nothing 

당신이 기대하는 것처럼, 자신의 서버가 종료 수동 개입을 필요로 고아 WINWORD.EXE 프로세스와 산재 끝납니다.

WINWORD.EXE 프로세스를 스크립트에서 명시 적으로 종료 할 수 있습니까?

업데이트 :

나는이 일부 진전을했고 나는 문제가 무엇인지에 대한 핸들을 가지고 생각합니다. 새로운 Windows 계정으로 Office 응용 프로그램을 처음 실행하면 이름과 이니셜을 묻습니다. 이제 보이는 GUI가 없으므로 모든 오른쪽 버튼을 누르는 아무도 없습니다. 나는 RUNAS을 사용하여 웹 사이트 익명 계정 신분으로 WINWORD.EXE을 시작하려했지만 Word 또는 Office가 원하는 초기 설정 루틴을 수행하지 못하게하는 일부 사용 권한 문제가 있습니다. .Saved이 true로 설정되어 있지 않은

MyWorkBook :

답변

2

은 내가 생각할 수있는 두 가지가 있습니다. 결과적으로 Quit 호출은 WinWord에 "저장 하시겠습니까?"대화 상자를 표시합니다. 서버에서. 데스크톱이없는 세션에서. 말할 것도없이 Word는 사용자를 기다리는 동안 종료하지 않습니다.

사용자의 스크립트가 항상 종료 줄에 나타나지는 않습니다. 인스턴스가 제대로 정리되었는지 확인하기 위해 여러 단계의 예외 처리 및 최종 명령문 (VBScript 또는 ASP 고전 엔진의 강력한 점이 아님)이 필요하므로 Office 자동화 사용에 대한 자주 그리고 아마도 가장 큰 이유입니다.

+0

David - 입력 해 주셔서 감사합니다. 위의 스크립트는 Word.Application을 인스턴스화 한 다음 종료하고 여전히 프로세스를 남겨 두었습니다. MyWorkBook.Saved을 설정해야합니까? – Kev

+0

또 다른 것은 ConnectKind가 ckNewInstance이고 AutoQuit이 True로 설정되어 있는지 확인하는 것입니다. 이것은 Word가 재사용을 위해 열려있는 모든 상황을 처리합니다. 어떤 버전의 Word가 서버에서 실행되고 있습니까 (Word 2003에서 자동화를 사용하지 않고 2007 년에 시도하지 않았습니다) – David

+0

Word 2007입니다. ConnectKind 및 AutoQuit는 어느 개체에 있습니까? – Kev

0

이 질문은 이제 더 이상 적합하지 않습니다. 거의 모든 문제는 특정 작업을 수행 할 수 있도록 승격 된 권한 (웹 사이트의 익명 사용자 계정을 허용하는 것보다 높음)이 필요한 WINWORD.EXE과 관련이 있습니다.

고객은 COM 호출 가능 래퍼가있는 ASPOSE.Words for .NET을 현명하게 사용하기로 결정하여 고전적인 ASP 코드에서도 사용할 수 있습니다.

관련 문제