واضح آرشیو وب فارسی:سایت ریسک: View Full Version : چطور می شه از اجرای دوباره برنامه جلوگیری کرد؟ azghanimr04-08-2006, 12:03 PMسلام دوستان اگر برنامه ما در حال اجرا باشد چطور می توان از اجرای مجدد برنامه جلوگیری کرد. Admiral04-08-2006, 12:24 PMیه راهش اینه که با استفاده تابع API این کار رو انجام بدین. با تابع FindWindow میتونید پنجره ی برنامه مورد نظر رو پیدا کنید. پس باید در ابتدای برنامه چک بکنید که پنجره ی دیگه ای از برنامه تون باز نباشه و اگه باز بود یک پیغام بدهید و برنامه را ببندید. موفق باشید. azghanimr04-08-2006, 06:04 PMاگه می شه کامل توضیح بدین لطفا Ali-Bahal04-08-2006, 06:43 PMراست میگه منم لازم دارم Admiral04-08-2006, 07:03 PMسلام فرض کنید عنوان (Caption) فرم اول برنامه ی شما Form1 باشه. در ابتدای برنامه شما با تابع FindWindow پنجره ای که این عنوان رو داشته باشه جستجو میکنید. تابع FindWindow دو پارامتر میگیره. پارامتر اول نام کلاس پنجره ی مورد نظر هست و پارامتر دوم عنوان پنجره. شما پارامتر اول رو NULL قرار بدین. پارامتر دوم هم که یک رشته هست Form1 باید باشه. این تابع اگر چنین پنجره ای (پنجره ای با عنوان Form1) پیدا کنه Handle اون پنجره رو برمیگردونه و گرنه NULL رو برمیگردونه. پس اگه مقدار برگشتی این تابع مخالف NULL بود متوجه می شوید که یک نسخه از برنامه ی شما در حال اجراست. پس اجازه نمی دهید برنامه ی فعلی اجرا بشه. موفق باشید. azghanimr04-08-2006, 07:28 PMکسی فهمید؟ Admiral04-08-2006, 07:33 PMکسی فهمید؟ خیلی واضحه !!! یعنی متوجه نشدید ؟ Admiral04-08-2006, 07:41 PMکجاش رو متوجه نمی شید ؟ فرض کنید برنامه ی شما در حال اجراست پس یک پنجره با عنوان Form1 باز هست. حالا اگه دوباره روی آیکون برنامه کلیک شد چون یک پنجره با عنوان Form1 وجود داره پس دیگه نباید برنامه اجرا بشه. همین ! Payman_6204-08-2006, 10:29 PMسلام. این دستور رو تو فرم لود بذار. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ولی اگه از فایل کپی بگیری فایل دوم اجرا میشه. azghanimr06-08-2006, 09:45 PMسلام. این دستور رو تو فرم لود بذار. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ولی اگه از فایل کپی بگیری فایل دوم اجرا میشه. آقا پیمان دست درد نکنه دنبال همین بودم.متشکرم javad_m12-08-2006, 02:44 PMمي توني از اين كد هم استفاده كني: Dim a As Integer Private Sub Form_Load() On Error Resume Next a = GetSetting(App.EXEName, "a", "a", 1) If a = 1 Then MsgBox "this program is opened", vbCritical, "error" End Else a = 1 SaveSetting App.EXEName, "a", "a", a End If End Sub Private Sub Form_Unload(Cancel As Integer) a = 0 SaveSetting App.EXEName, "a", "a", a End Sub Payman_6213-08-2006, 12:18 AMسلام. کدت اشکال داره. در ضمن چه کاریه. وقتی یه خط کد جواب میده. اگه میخوای کاملش کنی بهتره با توابعی مثل findwindow چک کنی که آیا برنامه با این کپشن خاص باز هست یا نه. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 204]