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

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




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

نام تاپيک: آموزش : چگونه تشخيص دهيم برنامه ما در حال اجراست ؟

  1. #1
    اگه نباشه جاش خالی می مونه delphianddotnet's Avatar
    تاريخ عضويت
    Jan 2007
    پست ها
    438

    پيش فرض آموزش : چگونه تشخيص دهيم برنامه ما در حال اجراست ؟

    گاهي پيش مي آيد كه بخواهيم زماني كه برنامه ما در حال اجرا مي باشد كاربر نتواند آن را مجددا اجرا كند . چرا كه ممكن است در منابع بكار گرفته شده توسط برنامه خللي ايجاد گردد . اين ترفند بخصوص در برنامه هاي بانك اطلاعاتي كاربرد زيادي مي تواند داشته باشد چرا كه اجراي مجدد برنامه و دستكاري آن در ركوردهاي بانك اطلاعاتي همان برنامه ( به شرط آنكه بانك اطلاعاتي توسط اجراي اول تسخير نشده باشد چرا كه در آن صورت تا زمانيكه اجراي اول فايل را آزاد نكند دستكاري ركورد ها غير ممكن است ) اختلالات جبران ناپذيري بوجود مي آورد . پس در ابتداي كار لازم است بدانيم آيا برنامه ما در حال اجرا مي باشد يا نه سپس تصميمات لازم را اخذ كنيم . بطور مثال براي كاربر پيغام دهيم كه برنامه هم اكنون در حال اجرا مي باشد .

    ابتدا بلاك اصلي پروژه را باز كنيد . اين عمل را مي توانيد با فشردن كليدهاي Ctrl + F12 و سپس انتخاب يونيت اصلي پروژه انجام دهيد .

    در ابتدا در قسمت معرفي يونيت ها يونيت Windows را اضافه كنيد :


    کد:
    Uses Windows;
    حال در قسمت تعريف متغير ها , متغيري از نوع THandle تعريف كنيد :


    کد:
    Var Mutex : THandle;
    Mutex يك مقدار 32 بيتي براي تشخيص يكتا بودن يك منبع مي باشد.

    حال به بلاك اصلي برنامه مي رسيم كه مي بايست كد آن را به صورت زير تغيير دهيد :


    کد:
    begin
    Mutex:=CreateMutex(nil,False,'OneCopyMutex');
    if WaitForSingleObject(Mutex,0) <> wait_TimeOut then
    begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
    end;
    end.
    تابع CreateMutex متغيري كه از نوع THandle تعريف كرده ايد را با مقدار اوليه OneCopyMutex مقدار دهي مي كند . توجه داشته باشيد كه در واقع منظور از اين مقدار دهي اوليه قرار دادن رشته OneCopyMutex در متغير نيست بلكه متغير براي تشخيص وجود يك كپي از يك منبع مقدار دهي اوليه مي شود.

    حال با استفاده از شرط if WaitForSingleObject(Mutex,0)<>wait_TimeOut then تشخيص مي دهيم كه آيا يك كپي ديگر از Mutex تعريف شده است يانه. كه چنانچه مقدار برگشتي تابع WaitForSingleObject برابر با wait_TimeOut باشد مسلم است كه برنامه در حال اجرا مي باشد.

    منبع : اینترنت

  2. #2
    داره خودمونی میشه
    تاريخ عضويت
    Apr 2005
    محل سكونت
    اهواز
    پست ها
    170

    پيش فرض

    با سلام
    دوست عزيز كاش تو وي بي شو هم توضيح ميدادين !

  3. #3
    پروفشنال MasterData's Avatar
    تاريخ عضويت
    Jul 2005
    محل سكونت
    مشهدالرضا
    پست ها
    623

    پيش فرض

    با تشکر از زحمات دوست عزیز
    فقط چند نکته رو میخوام توضیح بدم:
    1- کد های دستورات رو داخل تگ کد قرار بدین تا بهم ریخته نباشن
    2- عنوان تاپیک رو به عنوان "نکته های دلفی" تغییر بدین تا از این به بعد دوستان این جور نکته ها رو توی این تاپیک بزنن
    3- لطف کنید مشخصاتی که باید سیستم عامل و سیستم و .... باید داشته باشند رو هم ذکر کنید

  4. #4
    اگه نباشه جاش خالی می مونه delphianddotnet's Avatar
    تاريخ عضويت
    Jan 2007
    پست ها
    438

    پيش فرض

    با تشکر از زحمات دوست عزیز
    فقط چند نکته رو میخوام توضیح بدم:
    1- کد های دستورات رو داخل تگ کد قرار بدین تا بهم ریخته نباشن
    2- عنوان تاپیک رو به عنوان "نکته های دلفی" تغییر بدین تا از این به بعد دوستان این جور نکته ها رو توی این تاپیک بزنن
    3- لطف کنید مشخصاتی که باید سیستم عامل و سیستم و .... باید داشته باشند رو هم ذکر کنید
    سلام
    Master dataنکات شما یادم میمونه

  5. #5
    پروفشنال MasterData's Avatar
    تاريخ عضويت
    Jul 2005
    محل سكونت
    مشهدالرضا
    پست ها
    623

    پيش فرض

    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    فعال/غيرفعال كردن / مخفي و نمايش دادن Taskbar
    كد نمونه بر روي دلفي 7 و ويندوز XP تست شده است

Thread Information

Users Browsing this Thread

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

User Tag List

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

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