تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 6 از 6

نام تاپيک: مشکل با import کردن dllهای kernerl32 و user32

  1. #1
    داره خودمونی میشه CG_'s Avatar
    تاريخ عضويت
    May 2008
    پست ها
    96

    پيش فرض مشکل با import کردن dllهای kernerl32 و user32

    آقا این kernel32.dll و user32.dll رو چرا نمیشه عین بچه آدم از import ، add reference کرد؟ بعد این کده که این زیر نوشته، در واقع همین کارو با کدنویسی می کنه؟

    در واقع یه source code از یه سایتی دانلود کردم، بعد اونجا یه کلاس نوشته بود برای خاموش کردن کامپوتر. اونجا یه همچین چیزایی نوشته بود.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یه چند تا سؤال.
    این که اینو نوشته، از کجا فهمید که باید چنین تابع هایی با چنین اسم هایی با چنین آرگومان هایی تعریف کنه؟

    مثلاً همون طور که می بینید شبیه interface هم هست. منظورم اینه که براشون آکولاد اینا باز نکرده که بیاد توضیح بده، همون طوری با ';' گذاشته. فکر می کنم پس فقط باید یه معرفی باشه، یعنی قبلاً توش یه جا دیگه توضیح داده شده (چون extern هم هست).


    بعد موضوع این IntPtr چیه؟ چرا اونو گذاشته؟ اصلاً اون واسه چیه؟ (فک کنم یه اشاره گر به نوع int ـه. خب حالا این که مال int ـه یه چیز مثل این هم برای مثلاً string یا bool هم داریم؟


    آهااااااااااا، یه چیز دیگه تا یادم نرفته:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    اینو تو همون کده نوشته بود. این دیگه چه طرز struct نوشتنه؟ چرا این شکلیه؟ (با توجه به اینکه اینجا هم دوباره IntPtr نوشته)
    Last edited by CG_; 02-06-2008 at 19:59.

  2. #2
    حـــــرفـه ای Ultimator's Avatar
    تاريخ عضويت
    May 2007
    محل سكونت
    NetFrameWork.
    پست ها
    3,239

    پيش فرض

    نمیدانم ! صبر کن با سوادهاش بیان !یا به اساتید پی ام بده ..

  3. #3
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    205

    پيش فرض

    من دات نت کار نیستم ولی
    DLL های ویندوز مثل kernel32 یا user32 از نوع DLL های COM یا NET. نیستن بلکه فقط مجموعه ای توابع هستن (توابع API ویندوز)
    بنابراین شما نمیتونین توی Add Reference این ها رو Add کنین.
    کدی که شما دیدین روش استفاده از این نوع DLL هاست. کسی که میخواد یک تابع از یک DLL رو صدا بزنه باید اسم تابع و نوع تایپ آرگومان ها و تعداد اون ها رو بدونه(اسم آرگومان ها طبعا مهم نیست). در مورد DLL های ویندوز هم لیست کامل توابع API ویندوز رو براحتی میتونین توی MSDN Microsoft پیدا کنین(مثلا CreateProcess رو در گوگل سرچ کنی اولین نتیجه میشه) البته معمولا فرم C رو نوشته که اون کسی که میخواد در دات نت استفاده کنه باید به روشی که میبینین فرم NET یش رو بنویسه.

    این کدها در واقع به دات نت میفهمونه که کجا باید دنبال تابع CreateProcess بگرده و آرگومان هاش چجوری هستن.

    IntPtr هم تا اونجا که میدونم توی این فرم , به عنوان pointer و یا هندل , و نه فقط pointer به integer استفاده میشه. مثلا توی CreateProcess آرگومان سوم از نوع Pointer به تایپ SECURITY_ATTRIBUTES هست.
    اینجا رو میتونین در این مورد بخونین
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این توابع بعضی مواقع ورودی یا خروجی هاشون struct هایی هستن که ظاهرا با struct هایی که توی دات نت به طور معمول تعریف میشه (Managed Type) متفاوتن در واقع همون struct های C هستن(Unmanaged). کد دوم هم یک struct از این نوع تعریف کرده.

  4. #4
    داره خودمونی میشه CG_'s Avatar
    تاريخ عضويت
    May 2008
    پست ها
    96

    پيش فرض

    اینجا رو میتونین در این مورد بخونین
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مرسی از جوابتون .
    امروز از یه فروم خورجی هم پرسیدم، یکی گفت برم اینجا :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    رفتم و خیلی هم بهم حال داد جداً.
    شما هم یه امتحان بزنین. اون msdn ـه هم که دادین رو همین الآن امتحان می کنم .
    در مورد این که چرا add reference هم نمی شه گفت که چون اسبملی شون NET. نیست.


    نمیدانم ! صبر کن با سوادهاش بیان !یا به اساتید پی ام بده ..
    آقای ultimator شما هم اینقدر شکسته نفسی نکنین. بابا شکسته نفس...! شما سروری...! آی لاو یو.

  5. #5
    مدیر انجمن برنامه نویسی Payman_62's Avatar
    تاريخ عضويت
    Dec 2005
    محل سكونت
    تهران
    پست ها
    2,445

    پيش فرض

    سلام.
    از DllImport برای استفاده از API ها استفاده میشه. این که میگی از کجا فمیده با توجه به نیازش از این API ها استفاده کرده.

  6. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    برای تکمیل جواب سوالات این دوست عزیز با اجازه اساتید دو مطلب را ذکر میکنم.


    خصوصیات [StructLayout(LayoutKind.Sequential)] هم فقط یک تضمین است و اگر حذف شود هم معمولاً نباید مشکلی پیش آید !
    این برچسب تضمین میکند که ترتیب اعضای ساختار توسط بهینه ساز کامپایلر هیچ تغییری نکند و اعضا عیناً به همین ترتیپ تایپ شده در کامپایل نهایی قرار گیرند.
    این مسئله برای کد تحویل گیرنده ساختار بسیار ضروری است، چون اطلاعات بر اساس آفستشان بازیابی میشوند.



    API مربوط به خاموش کردن نامش ExitWindowsEx است.
    دو API که شما در پست اول خود درج کرده اید همانطور که دوستان اشاره کردند مطلقاً ربطی به این مسئله ندارد
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •