نمایش نتایج 1 تا 8 از 8

نام تاپیک: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

  1. #1

    چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    سلام.
    همون طور که می دونید با استفاده از CreateMutex می تونید کاری کنید که برنامه فقط یک بار ران بشه، به این صورت که سعی می کنید یک میوتکس بسازید و در صورت شکست یعنی قبلا برنامه ران شده. اما اگر بدون اینکه بخواهید میوتکس بسازید، فقط چک کنید ببینید که میوتکس وجود داره یا نه، چاره کار OpenMutex هست.
    اما این تابع یکم کارش نیاز به توضیح داره (بعد از کلی ور رفتن و زیر و رو کردن MSDN و مانیتور کردن میوتکس ها)
    کار این تابع اینه که چک می کنه ببینه قبلا میوتکسی با نامی که بهش می دید وجود داره یا نه، اگر وجود نداشت صفر بر می گردونه اما اگر وجود داشت،
    یک هندل جدید می سازه و به میوتکس مورد نظر اشاره می کنه و هندل رو بهتون می ده.
    این یعنی این که هندلی که CreateMutex ساخته با این هندل جدید فرق داره. و این به این معنیه که دیگه CloseHandle کردنش باعث آزاد سازی Mutex نخواهد شد.
    چاره کار چیه؟ چاره اینه که موقعی که دارید چک می کنید (با OpenMutex) هندل برگشت داده شده رو همونجا ببندید.
    انجام ندادن همین کار کوچیک یکی از سرویس های من رو خوابونده بود.

    نمونه کد برای چک کردن وجود یک میوتکس:
    function MutexExists(MutexName: PAnsiChar): boolean;
    var
    h: THandle;
    begin
    Result := false;
    try
    h := OpenMutex(STANDARD_RIGHTS_REQUIRED, false, MutexName);
    Result := h <> 0;
    finally
    try
    CloseHandle(h);
    except
    end;
    end;
    end;




    اما معرفی یک برنامه،
    برنامه
    Winobj:
    با این برنامه می تونید لیستی از میوتکس های رجیستر شده به همراه کلی اطلاعات باارزش دیگه، از جمله درایور ها و سشن ها رو داشته باشید.

    با احترام -
    فایل های ضمیمه فایل های ضمیمه
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  2. #2

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    حالا اگه بخواهیم هندل Mutex اصلی رو بگیریم و ببندیم، باید چه کنیم.


  3. #3

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    باید همون خروجی CreateMutex رو نگه داشته باشی و اون رو CloseHandle کنی.
    در حقیقت میوتکس یکیه، فقط تعدادی هندل بهش اختصاص پیدا می کنه.
    باید همه هندل ها بسته باشند تا میوتکس آزاد بشه.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

  4. #4

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    نقل قول نوشته شده توسط You-See مشاهده تاپیک
    باید همون خروجی CreateMutex رو نگه داشته باشی و اون رو CloseHandle کنی.
    در حقیقت میوتکس یکیه، فقط تعدادی هندل بهش اختصاص پیدا می کنه.
    باید همه هندل ها بسته باشند تا میوتکس آزاد بشه.
    منظور هندل Mutex یه برنامه دیگست دادا.


  5. #5

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    شرمنده یوسف جان
    حالا اگه بخوایم همون اول میوتکس رو بسازیم که بعد چکش کنیم باید چه کنیم ؟
    ببخشید ها ، ما یک کم سواتمون پایینه

  6. #6

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    با اجازه :
    شرمنده یوسف جان
    حالا اگه بخوایم همون اول میوتکس رو بسازیم که بعد چکش کنیم باید چه کنیم ؟
    ببخشید ها ، ما یک کم سواتمون پایینه
    یه چیز تو این مایه ها میشه:
    function SetMutex: boolean;var
    H: Thandle;
    begin
    H := CreateMutex(nil, False, 'Sample');
    result := False;
    If not(WaitForSingleObject(H, 0) <> Wait_TimeOut) then
    result := true;
    end;


  7. #7

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    این Sample همون اسم برنامه هستش دیگه؟

  8. #8

    نقل قول: چک کردن باز بودن نسخه ای از برنامه، معرفی یک برنامه برای مانیتورینگ Mutex های بانام

    نه. اصلا فرقی نمی کنه چی بدی. در حقیقت شما یک رشته یونیک رو رجیستر می کنی. این رشته برای اطمینان از این که یونیک باشه می تونه مثلا نام برنامه باشه. یا حتی می تونید GUID رو به فرم رشته ای ثبت کنید.
    میوتکس تا خاموش شدن سیستم وجود داره مگر این که برنامه ای که اون رو درست کرده بسته بشه یا خودش ببندتش یا این که سایر برنامه ها میوتکس برنامه شما رو بزنن منهدم کنن!
    آخرین ویرایش به وسیله یوسف زالی : یک شنبه 24 فروردین 1393 در 14:04 عصر
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840
    پایگاه داده، تیونینگ، طراحی و پیاده سازی ..

تاپیک های مشابه

  1. سوال: چک کردن باز بودن فرم
    نوشته شده توسط fghdmhmmd در بخش C#‎‎
    پاسخ: 5
    آخرین پست: چهارشنبه 24 شهریور 1395, 13:57 عصر
  2. مدیریت کردن باز بودن 2 پورت مختلف در یک برنامه
    نوشته شده توسط nbe( amateur C sharp در بخش C#‎‎
    پاسخ: 2
    آخرین پست: یک شنبه 22 خرداد 1390, 13:31 عصر
  3. عدم امکان فوکوس کردن روی پنجره اصلی در حین باز بودن popup
    نوشته شده توسط sahab555 در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: دوشنبه 05 بهمن 1388, 12:27 عصر
  4. سوال: در مورد غیر فعال کردن فریم پدردرهنگام باز بودن فریم فرزند
    نوشته شده توسط little.boy در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 2
    آخرین پست: پنج شنبه 24 بهمن 1387, 10:32 صبح
  5. یک برنامه برای باز کردن در CD ROM (مردم آزاری)بدون هیچ فرمی!
    نوشته شده توسط houshmand در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 0
    آخرین پست: چهارشنبه 18 تیر 1382, 11:36 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •