2014-12-12 11 views
2

GetActiveObject (ProgId)를 사용하는 방법을 알고 있지만 문제는이 코드 줄을 사용하는 여러 응용 프로그램이 ROT에 추가되지 않는다는 것입니다. , 이미 열려 있어도 HRESULT 오류가 발생합니다. 그러나 다른 응용 프로그램을 클릭 한 다음 원래 응용 프로그램으로 돌아 가면 코드 줄이 올바르게 작동합니다.ROT (Running Objects Table)에 항목 추가

내가 너무 애매한 이유는 이것이 10 개 이상의 응용 프로그램에서 발생하는 문제이기 때문입니다.

내가 코드를 게시하지 않는 이유는이 문제가 코드 기반이라고 믿지 않기 때문입니다. 오히려이 문제는 내 이해가 부족하기 때문에 발생합니다.

이 문제와 관련된 가장 중요한 프로그램 중 하나는 "Microsoft Excel"입니다. 내가 원하는 것은 특정 셀에서 사용자를 시작할 수 있습니다.

나는 Excel에서 *****. GetActiveObject (ProgId)를 사용하는 방법에 대해 예의 바른 설명을했지만, 합리적인 답이없는 것 같습니다. 그것은 Visual Basic에서 간단한 경우, 프로그램은 C#으로 작성 될 수 있지만,

답변

2

http://support.microsoft.com/kb/316126

COM 서버가 시작 후 객체 표 실행에 자신을 등록 할 것으로 예상된다 문제가되지입니다. Office 프로그램은 포커스를 잃을 때 자신을 등록합니다. 프로그램이 포커스를 잃기 전에 실행중인 인스턴스에 프로그램을 연결하려고하면 오류 메시지가 나타날 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 Microsoft 기술 자료에있는 문서를 아래 문서 번호를 클릭하십시오 316125 PRB를 : Visual C# .NET을 오류를 사용하여 Office 응용 프로그램의

을 인스턴스를 실행에 연결 코드를 사용하면 Office 응용 프로그램에서 자신의 응용 프로그램 (또는 다른 응용 프로그램)으로 포커스를 변경하여 자체를 ROT에 등록 할 수 있습니다. 또한 코드에서 Office 응용 프로그램의 실행 파일 (.exe)을 시작하는 경우 을 실행 인스턴스에 연결하기 전에 Office 응용 프로그램로드가 완료 될 때까지 기다려야 할 수 있습니다.

연결을 시도하기 전에 다른 창이 활성화되어 있는지 확인하십시오. 예에서와 같이 Form.Activate을 사용하여 자신의 양식에 집중할 수 있으므로 Office 앱의 초점을 잃게됩니다.

+0

좋아요, 그게 훨씬 명확 해졌고, 내가 본 모든 다른 설명도 분명하지 않았고 그런 비교적 간단한 대답을 제공하지도 않았습니다. 다시 한번 감사드립니다 –