50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

اساتید راهنماییم کنید لطفا

باسلام خدمت همه برنامه نویسان گل


!    //dll imports
        [DllImport("powrprof.dll")]
        public static extern Int32 SetSuspendState(Int32 HiberNate, Int32 Force, Int32 Disible);

        //for shutdown restart log off...
        [DllImport("user32.dll")]
        public static extern int ExitWindowsEx(int uFlags, int dwReason);
        [DllImport("user32.dll")]
        public static extern void LockWorkStation();

        //end import d

میشه این قطعه کد را توضیح بدید لطفا؟

پرسیده شده در 1394/11/14 توسط

3 پاسخ

1

دوست عزیزم، درود

با نوشتار خوب آقای حسین احمدی در کامنت اول که در رابطه با COM توضیح دادن به سراغ جواب شما میرم، بسیاری از توابع سیستمی در مکانیزم عملکرد ویندوز در لایه های بالایی با دسترسی مستقیم به سخت افزار قرار دارند که وقتی شما تصمیم به استفاده از اونها در دات نت بگیرید باید از روش استخراج این توابع از منابع اصلی ویندوز با یک فرمت استاندارد پیش برید.

مطمعناً آگاهید که DLL ها در سیستم عامل ویندوز کتابخانه فرامین و منابع هستند و شما می تونید به صورت مستقیم یک دستور یا منبع (مثلا یک آیکون) رو ازشون استخراج کنید. حالا شما وقتی بخواید (در سی شارپ) مستقیم به یک تابع یا یک منبع در DLL دسترسی داشته باشید از متد [DllImport("powrprof.dll")] استفاده می کنید.

سرخط public static extern هم یک مشخصه برای در دسترس بودن بصورت عمومی و منبع خارجی بودن تابع بعد از خودش هست. نوع خروجی تابع int و نام تایع هم با پارامتر هاش بعد از این نوع قرار می گیرند ExitWindowsEx(int uFlags, int dwReason);

در بسیاری از موارد استفاده از توابع COM با استفاده از مقادیر جایگزین ممکنه برای مثال مقدار 0x00400000 بعنوان مقدار پارامتر اول با EWXHYBRIDSHUTDOWN کاملا یکسانه و استفاده از هر کدومش ممکنه.

این همه لیست ورودی های مجاز پارامتر اول که با کامل مشخص شدن و شما برای هر مورد یا اسم فلگ یا میزان عددیشو می تونید استفاده کنید:

EWXHYBRIDSHUTDOWN=0x00400000,

EWX_LOGOFF=0,

EWX_POWEROFF=0x00000008,

EWX_REBOOT=0x00000002,

EWX_RESTARTAPPS=0x00000040,

EWX_SHUTDOWN=0x00000001,

EWX_FORCE=0x00000004,

EWX_FORCEIFHUNG=0x00000010

لینک محتوای پارامتر دوم هم در لینک زیر موجوده :

https://msdn.microsoft.comen-uslibrarywindowsdesktop/aa376885(v=vs.85).aspx

پاسخ در 1394/11/16 توسط
1

سلام ITPRO ای عزیز، تو زبان های دات نت قابلیتی وجود داره به نام Com Interop که به شما این امکان رو میده که با فایل های DLL ای که توسط تکنولوژی COM ایجاد شدن کار کنید، مثل فایل user32.dll که یکی از فایل های ویندوز هست، کد بالا، متدهایی از فایل های dll که مبتنی بر com هستند رو داخل پروژه import میکنه و شما میتونید از متدها رو از داخل کدتون صدا بزنید.

پاسخ در 1394/11/14 توسط

پاسخ شما