سؤال

أقوم ببعض الأتمتة عبر مزيج من رسائل Windows المرسلة مباشرة إلى HWNDS والمكالمات إلى خادم COM يتعرض بواسطة التطبيق الآلي.

إذا كان هناك أكثر من مثيل واحد قيد التشغيل، فأنا بحاجة إلى أن أكون قادرا على تحديد معرف العملية لخادم COM حتى أتمكن من الضغط على نفس المثيل باستخدام مكالمة COM كتلك التي أرسلها رسائل Windows إليه.

يمكنني تعداد جميع خوادم COM قيد التشغيل مع جدول الكائنات قيد التشغيل واستعادة Monikers لجميعهم، ولكن كائنات COM أنفسهم تعرض أساليب يمكنني استخدامها للحصول على مقبض نافذة ومعرف مؤشر الترابط أو معرف العملية أو أي شيءمن هذا النوع.

هل هناك أي طريقة لمعرفة ذلك، بناء على مابع أو كائن COM الملزم الفعلي للمظبل، ما هو معرف العملية لخادم COM هو؟

شكرا!

هل كانت مفيدة؟

المحلول

If you control (write code for) both the server and the client you can add a method to your COM interface that would return the process / thread ID or anything of this nature (e.g. server hostname if it is remote) on the server end. I second @Hans - unless you have access to the server implementation you may be out of luck by design.

نصائح أخرى

I believe the kimgr CoGetServerPID function will give you the process-id of your COM server.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top