Có một giải pháp, nhưng nó không đẹp. Vấn đề chính là từ đăng ký chính nó trong ROT (Chạy Object Table), và các ứng dụng khác sau đó có thể dễ dàng truy cập vào thể hiện của Word đăng ký trong ROT (đó là những gì VB GetObject chức năng chẳng hạn).
Vì vậy, trong ứng dụng của bạn, bạn muốn về cơ bản phải làm 2 việc
- Cố gắng GetObject (tức là truy vấn ROT cho một trường hợp chạy)
- Nếu bạn nhận được một, bạn biết bạn CÓ để tạo một phiên bản Word mới để sử dụng (CreateObject trong VB, quá trình này khác với các ngôn ngữ khác).
- Nếu bạn KHÔNG nhận được một, bạn phải tạo 2 phiên bản Word mới. Việc đầu tiên sẽ tự động đăng ký chính nó trong ROT, thứ hai sẽ không. Sử dụng dụ thứ hai, và khá là trường hợp đầu tiên.
Mặc dù bạn chấm dứt trường hợp đầu tiên, Nó sẽ không "tự động" đăng ký trong ROT và các ứng dụng khác nói chung sẽ không phản đối việc sử dụng nó, họ sẽ tự động tạo một phiên bản mới, trong đó, vì không có cá thể nào khác được đăng ký trong ROT nữa, sau đó sẽ được đăng ký.
Điều đó nói rằng, vẫn còn có thể để các ứng dụng khác nhận được phiên bản Word của bạn, vì vậy kỹ thuật này không chống đạn. Làm sao? Bởi vì Word ALSO đăng ký từng DOCUMENT được nạp trong ROT. Nhưng đó là một tính năng hiếm khi được sử dụng.
Tôi rất muốn xem câu trả lời trên đó:> – naacal
Thay đổi hành vi của Word sẽ khiến người dùng * rất * bối rối. Bạn đang cố giải quyết vấn đề gì? – egrunin
Như tôi đã mô tả, người dùng và ứng dụng nên mỗi người có được một ví dụ khác nhau của từ. Nhưng nếu người dùng mở một tài liệu (nhấp đúp chuột vào docx) trong khi ứng dụng đang làm việc trong một cá thể từ ẩn, tài liệu người dùng sẽ được mở trong trường hợp này và treo các hoạt động của tôi trong trường hợp này vì tài liệu đang hoạt động thay đổi. – Gpx