إرسال رسالة إلى تطبيق بدأ بواسطة جلسة مستخدم Windows مختلفة

StackOverflow https://stackoverflow.com/questions/1673507

  •  16-09-2019
  •  | 
  •  

سؤال

يبدأ تطبيق سطح المكتب (صنع في دلفي) من قبل المستخدم أ. دعونا نسميها "مثيل".

المستخدم A يقوم بتسجيل الدخول "مستخدم التبديل" والمستخدم B.

المستخدم B يدير نفس التطبيق. دعنا نسميها "مثيل B"

ما أريد الآن، هو وسيلة للمثيل B لإرسال الرسائل إلى مثيل A.

جربت ما يلي: مثيل يكتب مقبضه في ملف، لذلك يمكن أن تفتح المثيل B هذا الملف، وقراءة المقبض، واستخدامه لنشر رسالة إلى مثيل، لكنه لا يعمل - ربما لأسباب أمنية لا يمنح مستخدم واحد الوصول إلى مقابض عمليات تشغيل مستخدم آخر ...

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

بدلا من ذلك، ما أحتاج إليه هو وسيلة للمثيل B من المستخدم B لإرسال رسالة غير ضارة إلى مثيل المستخدم أ

شكرا لأي اقتراحات!

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

المحلول

لا يمكنك استخدام SendMessage و PostMessage ووظائف مماثلة لأن مثيلات التطبيق من جلسات المستخدم المختلفة غير متوفرة للتطبيق الخاص بك.

ما يمكنك استخدامه يتم تسمية الأنابيب والسمطية وما إلى ذلك. في مساحة الاسم العالمية (أي لديهم أسماء مسبقة عن طريق "Global "). ثم، قم بإنشاء مؤشر ترابط منفصل في التطبيق الخاص بك سوف ينام، على سبيل المثال، إلى "إشارة" من أحد هذه وصول وإعلام النافذة الرئيسية وفقا لذلك.

لحفظ الموارد، استخدم WTSRECIVERSessionNotification للحصول على إشعار عند حدوث مفتاح الجلسة وإنشاء الخيط فقط في تلك المرحلة.

مزيد من المعلومات هنا:http://support.microsoft.com/kb/310153.و هنا:http://msdn.microsoft.com/en-us/library/ms997634.aspx.

نصائح أخرى

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

قد تستخدم أيضا UDP أو TCP / IP، لكني أعتقد أن استخدام الأنابيب المسماة أفضل للاتصال "المحلي" (على الرغم من أنني لم أفعل ذلك حقا).

اقرأ هنا حول الأنابيب المسماة على MSDN.

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