كيف يمكنني تحديد اسم العملية المركزة الحالية وإصدارها في C#

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

  •  02-07-2019
  •  | 
  •  

سؤال

على سبيل المثال، إذا كنت أعمل على Visual Studio 2008، فأنا أريد القيم devenv و2008 أو 9.

رقم الاصدار مهم جدا ...

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

المحلول

ستكون هذه مدينة PInvoce...

ستحتاج إلى استدعاء واجهة برمجة التطبيقات التالية في User32.dll

يقوم Win32::GetForegroundWindow() بإرجاع HWND للنافذة النشطة حاليًا.

/// <summary>
/// The GetForegroundWindow function returns a handle to the foreground window.
/// </summary>
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

تقوم Win32::GetWindowThreadProcessId(HWND,LPDWORD) بإرجاع معرف المنتج (PID) لـ HWND محدد

[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

شركة#

يأخذ Process.GetProcessByID() معرف المنتج لإنشاء كائن عملية C#

تقوم ProcessInstance.MainModule بإرجاع ProcessModule مع FileVersionInfo المرفق.

نصائح أخرى

هذا مشروع يوضح الوظيفتين اللتين تحتاجهما: EnumWindows و احصل علىWindowtext

يمكنك توضيح سؤالك؟هل تقصد أنك تريد تشغيل برنامج ما، والذي سيخبرك ببيانات حول البرنامج الموجود في النافذة النشطة؟أو أنك تريد أن يقوم برنامجك بالإبلاغ عن نسخته الخاصة؟

ما تبحث عنه للحصول على المعلومات في كلتا الحالتين هو System.Reflection.Assembly.(انظر أمثلة التعليمات البرمجية في الرابط.)

كيفية الحصول على التجميع من برنامج خارجي؟هذا الذي لست متأكدا منه ...

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