PDA

View Full Version : توضیح در مورد خط کد [System.Runtime.InteropServices.DllImport("user32.d ll")]



RIG000
دوشنبه 03 مرداد 1390, 23:41 عصر
[System.Runtime.InteropServices.DllImport("user32.dll")]

معمولا" این خط کد در بغضی از برنامه ها استفاده میشه میشه بپرسم کارایش چیه؟!!!
در ضمن این کلمه کلیدی کارش چیه؟ private static extern int کلمه extern منظورمه ؟
ممنون

alicam
سه شنبه 04 مرداد 1390, 01:41 صبح
اینی که شما اسمش رو اوردی یک attribute . برای اینکه شما توابع api که برای خود ویندوز هستند رو فراخونی خونی کنید از این توابع استفاده میکنید.
البته برای باز کردن هر dll میشه از این استفاده کرد. ولی معمولا برای سه تا dll مهم که جزو توابع api هستند استفاده میشن. به نام ها win32 , user32 , kernel32. اگه خواستی در موردش بیشتر بدونی باید اول به توابع api مراجعه کنی. حالا اسمی که پایین این کد امده شما نیاوردی اون جاییه که اون تابع api فراخونی شده.

sia_2007
سه شنبه 04 مرداد 1390, 10:27 صبح
extern تو هر جایی استفاده بشه، منظور اینه که کد اجرایی اون proc زمان اجرا به دست میآد، حالا این جا از تو user32.dll ، این تو اسمبلی هم به شدت کاربردیه
کار این Attribute برای فراخوانی هر DLL ای هست که un managed باشه، نه فقط DLL های ویندوز
زمانی که از این آیتم استفاده میکنید، حتما اون رو توی بلاک if به شکل زیر بذارید :
if( enviroment.platform == Platform.Win32Nt ، که باید به لیست پلتفرمهای قابل استفاده اشاره کنه
مثلا user32.dll تو لینوکس وجود نداره، یا مثلا یه متد خاص اون میتونه تو ویندوز Me وجود نداشته باشه
موفق باشی