PDA

View Full Version : نحوه اجراشدن فقط یک برنامه از برنامه



omid-vbAuto
دوشنبه 11 مهر 1390, 10:05 صبح
سلام

ما با چه کد نویسی می تونیم فقط اجازه اجرا شدن فقط یک برنامه از برناممون رو بدیم؟

M.KH-SH
دوشنبه 11 مهر 1390, 12:32 عصر
زمانی که فرم لود میشه بگو که کجای برنامه رو میخوای نمایش بده و کار انجام بده

ولی اگه منظورت این نبود لطفا واضح تر سوال رو بپورس.

راستی مگه یک برنامه کامپایل شده چند برنامه هستش؟؟؟؟
در کل همه برای اجرای یک هدف جمه میشن پس فکر کنم منظورت فرم های برنامه باشه که اونم از همون روش اول که گفتم هستش.

omid-vbAuto
دوشنبه 11 مهر 1390, 13:25 عصر
زمانی که فرم لود میشه بگو که کجای برنامه رو میخوای نمایش بده و کار انجام بده

ولی اگه منظورت این نبود لطفا واضح تر سوال رو بپورس.

راستی مگه یک برنامه کامپایل شده چند برنامه هستش؟؟؟؟
در کل همه برای اجرای یک هدف جمه میشن پس فکر کنم منظورت فرم های برنامه باشه که اونم از همون روش اول که گفتم هستش.

برنامه فقط یک بار قابل اجرا باشه.

M.KH-SH
دوشنبه 11 مهر 1390, 18:29 عصر
خوب حالا بهتر هستش یک فایل dll بسازی یا یک database درست کنی و هروقت برنامه اجرا شد تو اون یک پارامتر ایجاد بشه و برای بار دوم بیاد اون رو چک کنه که اگه پارامتر ایجاد شده وجود داشت دیگه فرم باز نشه و یک پیغام (برای مثال) نمایش بده که مثلا نسخه برنامه شما اشتباه میباشد لطفا تماس بگیرید رو نمایش بده.

این روش رو در چند برنامه دیدم که انجام دادن حالا اگه دوستان روش دیگه ای بلد هستن به ما هم بگن که یاد بگیریم.

alimanam
دوشنبه 11 مهر 1390, 18:54 عصر
با سلام


خوب حالا بهتر هستش یک فایل dll بسازی یا یک database درست کنی و هروقت برنامه اجرا شد تو اون یک پارامتر ایجاد بشه و برای بار دوم بیاد اون رو چک کنه که اگه پارامتر ایجاد شده وجود داشت دیگه فرم باز نشه و یک پیغام (برای مثال) نمایش بده که مثلا نسخه برنامه شما اشتباه میباشد لطفا تماس بگیرید رو نمایش بده.خوب اگه کاربر بیاد از بانک شما یه کپی بگیره راحت میتونه برای هر بار اجرا ! با یک کپی پست ناقابل دورت بزنه درسته ؟

موفق باشید ./

M.KH-SH
دوشنبه 11 مهر 1390, 20:39 عصر
بله درسته ولی اگه فایل مربوطه رو در یک جای خاص از ویندوز قرار بدین این احتمال حدود 20% میشه.

تو سورس برنامه که بعد از کامپایل نمیشه کاری کرد پس باید یکی از روش های ابتکاری رو عمل کنیم.

اگه امکان داره شما راه حلی بگین که این کار ضریب امنیت بیشتری داشته باشه.

مرسی از راهنماییتون.

omid-vbAuto
دوشنبه 11 مهر 1390, 22:18 عصر
چرا بحث رو عوض می کنید و حاشیه می رید!!!

مورد سوال من اینه:

برنامه هائی مثل winamp رو دیدن در هر لحظه فقط یک برنامه بازه نه 2 یا بیشتر.حالا برا این کار چکار کنیم؟

Esmail Solhkhah
دوشنبه 11 مهر 1390, 22:23 عصر
Public Shared Function IsProgramRun() As Boolean
Dim processName As String = Process.GetCurrentProcess().ProcessName
Dim instances As Process() = Process.GetProcessesByName(processName)
If instances.Length > 1 Then
Return True
Else
Return False
End If
End Function

omid-vbAuto
دوشنبه 11 مهر 1390, 22:31 عصر
Public Shared Function IsProgramRun() As Boolean
Dim processName As String = Process.GetCurrentProcess().ProcessName
Dim instances As Process() = Process.GetProcessesByName(processName)
If instances.Length > 1 Then
Return True
Else
Return False
End If
End Function

مقدر تابع رو فلس بدم فقط یه برنامه از برنامم بالا می آد؟



آیا تو اپشهای خود ویبی این امکان گنجا
نده نشده؟




ا

Esmail Solhkhah
دوشنبه 11 مهر 1390, 22:35 عصر
مقدر تابع رو فلس بدم فقط یه برنامه از برنامم بالا می آد؟

این تابع رو اول لود برنامتون فراخانی کنید اگه True بود یعنی یه نسخه از برنامتون درحال اجراس پس
Application.Exit


آیا تو اپشهای خود ویبی این امکان گنجا
نده نشده؟

بنده سی شارپ کار میکنم و این کد رو هم از سی شارپ کانورت کردم تا کارتون راحت بشه
اصل تابع با سی شارپ


public static bool IsProgramRun()
{
string processName = Process.GetCurrentProcess().ProcessName;
Process[] instances = Process.GetProcessesByName( processName );
if (instances.Length > 1)
return true;
else
return false;
}

Mani_rf
سه شنبه 12 مهر 1390, 13:07 عصر
بارها و بارها مطرح شده است؛ اما به احترام پاسخ های داده شده، تاپیک حذف نشد.
لطفا قبل از طرح تاپیک جوستجو نمایید.

برای این کار درمنوی Project گزینه یکی به آخر یعنی[Project_Name] Properties را انتخاب کنید. بعد گزینه Make Single .... را تیک بزنید تا فقط یک نسخه از برنامه اجرا شود.

omid-vbAuto
چهارشنبه 13 مهر 1390, 20:06 عصر
Public Shared Function IsProgramRun() As Boolean
Dim processName As String = Process.GetCurrentProcess().ProcessName
Dim instances As Process() = Process.GetProcessesByName(processName)
If instances.Length > 1 Then
Return True
Else
Return False
End If
End Function


با سلام

نپرسیدن عیب نیست . ندانستن هم عیب نیست.


دوست عزیز من اصلا نتونستم از تابعی که معرفی کردین استفاده کنم.لطفا یه مثال برام آپلود کنید.

Saman_12
چهارشنبه 13 مهر 1390, 21:05 عصر
با سلام

نپرسیدن عیب نیست . ندانستن هم عیب نیست.


دوست عزیز من اصلا نتونستم از تابعی که معرفی کردین استفاده کنم.لطفا یه مثال برام آپلود کنید.

اگر به کد نگاه کرده باشید و تونسته باشید اون رو تحلیل کنید نیاز به نمونه برنامه نیست!(البته مانی جان پاسخ صحیح رو ارئه دادند. این روش بیشتر برای سی شارپ کاربرد داره نه ویبی!)
این کد تعداد پروسه های اجرا شده از برنامه شما رو چک میکنه اگه از یکی بیشتر بود true برمیگردونه واگر نه false پس کافیه :

این تابع رو اول لود برنامتون فراخانی کنید اگه True بود یعنی یه نسخه از برنامتون درحال اجراس پس
Application.Exit

omid-vbAuto
چهارشنبه 13 مهر 1390, 21:59 عصر
اگر به کد نگاه کرده باشید و تونسته باشید اون رو تحلیل کنید نیاز به نمونه برنامه نیست!(البته مانی جان پاسخ صحیح رو ارئه دادند. این روش بیشتر برای سی شارپ کاربرد داره نه ویبی!)
این کد تعداد پروسه های اجرا شده از برنامه شما رو چک میکنه اگه از یکی بیشتر بود true برمیگردونه واگر نه false پس کافیه :


خوب این کارو کردم و نتیجه نگرفتم.

اگه کد دیگه ای برا این کار داریم بفرمائید.

arash020
پنج شنبه 14 مهر 1390, 01:36 صبح
سلام

یه راه خیلی آسون تر ی هم هست و اون اینه که با رجیستری کار کنی:
توی رویداد لودشدن برنامه یا اکتیو شدن فرم یه مقدار توی رجیستری ایجاد کنی با محتوایی که نشون بده برنامه درحال اجراست یا نه.
و توی رویداد form closing یا closed اون مقدار رو به محتوای مناسب (که برنامه دیگه اجرا نیست) برگردونی.
نکته ی مهم:
توی رویداد لود باید قبل از اینکه کد نوشتن کلید توی رجیستری رو بنویسی وجود یا عدم وجود آون رو (شاید برنامه اولین بار ه که اجرا میشه...!) چک کنی
به این صورت که :
مثلا مقدارشو با Null مقایسه کنی یا با "" .
و اگه از قبل وجود نداشت باید اجازه ی اجرا بدی و بعد کلید مربوط رو توی رجیستری ثبت کنی .

کار راحتیه
تجربه خوبی میشه .

موفق باشی:چشمک:

omid-vbAuto
پنج شنبه 14 مهر 1390, 04:53 صبح
سلام

یه راه خیلی آسون تر ی هم هست و اون اینه که با رجیستری کار کنی:
توی رویداد لودشدن برنامه یا اکتیو شدن فرم یه مقدار توی رجیستری ایجاد کنی با محتوایی که نشون بده برنامه درحال اجراست یا نه.
و توی رویداد form closing یا closed اون مقدار رو به محتوای مناسب (که برنامه دیگه اجرا نیست) برگردونی.
نکته ی مهم:
توی رویداد لود باید قبل از اینکه کد نوشتن کلید توی رجیستری رو بنویسی وجود یا عدم وجود آون رو (شاید برنامه اولین بار ه که اجرا میشه...!) چک کنی
به این صورت که :
مثلا مقدارشو با Null مقایسه کنی یا با "" .
و اگه از قبل وجود نداشت باید اجازه ی اجرا بدی و بعد کلید مربوط رو توی رجیستری ثبت کنی .

کار راحتیه
تجربه خوبی میشه .

موفق باشی:چشمک:



نمونه کد دارین؟ یا در حد نظریه هستش؟

arash020
پنج شنبه 14 مهر 1390, 06:38 صبح
کدش هم قبلا نوشته شده و خودم جواب گرفتم.
تعریف از خود نباشه ولی دنبال روش های جدید میرم...
فکر میکنم یه وقتی توی یی از پروژه هام از این روش استفاده کرده بودم.
شاید یه نمونه برنامه ش توی http://www.eaglevb.blogfa.com/ باشه .:چشمک:

omid-vbAuto
پنج شنبه 14 مهر 1390, 09:30 صبح
برام هنوز نتیجه ای حاصل نشده است.


بارها و بارها مطرح شده است؛ اما به احترام پاسخ های داده شده، تاپیک حذف نشد.
لطفا قبل از طرح تاپیک جوستجو نمایید.

لطفا این جستجوها رو معرفی کنید.یا یه بار نحوه صحیح جستجو کردن رو به ما یاد بدین.چون من تا یادم هست نتونستم از سرچ این سایت استفاده کنم.یه حالت آلژی بهش پیدا کردم.:عصبانی:

mortezagt
شنبه 16 مهر 1390, 01:43 صبح
آقا چرا دعوا ميكنيد آقاي Mani_Rf درست گفت ديگه
اين كار اصلا نيازي به كد نويسي نداره به تصوير زير نگاه كن و ياد بگير

http://www.farazrayanebushehr.com/1.JPG

http://www.farazrayanebushehr.com/2.JPG