PDA

View Full Version : فقط یک نسخه از برنامه اجرا بشه



ASPX
پنج شنبه 11 آبان 1385, 18:54 عصر
چطور میشه کاری کرد که فقط یک نسخه از برنامه اجرا بشه که اگر کاربر رو آیکون برنامه کلیک کرد جک کنه بگه برنامه الان بازه و 2 نسخه از اون اجرا نشه

محمد میرمصطفی
پنج شنبه 11 آبان 1385, 23:14 عصر
من قبلا با mutex این کار رو کردم. امتحان کن. نشد من یه sample می دم.

asar_001
جمعه 12 آبان 1385, 00:06 صبح
اگه می شه یه sample بزارید
ممنون می شم

احمد سامعی
جمعه 12 آبان 1385, 18:23 عصر
من قبلا با mutex این کار رو کردم. امتحان کن. نشد من یه sample می دم.


درود و صد بدرود بر مردمان ایران زمین

استاد اگه می شه یک نمونه برنامه تک فرمی ساده باشه بدون هیچی کنترل و تابع اضافی تا معلوم باشه به کدوم قسمت باید چی اضافه بشه چون کدی که استاد مهدوی گذاشتن کار نمی کنه ( اگه می تونید بگید چرا مال ایشون اجرا نمی شه .... یعنی چطوری باید به کار برد):خجالت: :خجالت: :خجالت: :خجالت: :خجالت:

با تشکر فراوان
پایدار باشید

SabaSabouhi
شنبه 13 آبان 1385, 12:16 عصر
با سلام
از این روش استفاده کنید:



string iProccessName = System.Diagnostics.Process.GetCurrentProcess().Pro cessName;
if (System.Diagnostics.Process.GetProcessesByName(iPr occessName).Length > 1){
// your code
}



صبا صبوحى

Javad_Mail
شنبه 13 آبان 1385, 13:35 عصر
دات نت یه کد داره من الان خاطرم نیست
ولی تو قسمت System.Application که می گه آیا نرم افزار قبلا باز هست یا نه .
تو این فضا بگرد . مطمئنم که تو اینه ولی کدومشون یادم نمیاد .

احمد سامعی
یک شنبه 14 آبان 1385, 00:13 صبح
با سلام
از این روش استفاده کنید:



string iProccessName = System.Diagnostics.Process.GetCurrentProcess().Pro cessName;
if (System.Diagnostics.Process.GetProcessesByName(iPr occessName).Length > 1){
// your code
}



صبا صبوحی

طبق معمول با کول کول کردن کد کامل دراومد ( با تشکر از اشاره صبا خانم البته بهتر کد کامل رو می گذاشتن( یک اشکال هم داشت باید مساوی یک باشه ) سه ساعت کامل وقت گرفت)



using System.Diagnostics

#region Main method

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
// Get the current process.
Process currentProcess = Process.GetCurrentProcess();

string ProccessName = Process.GetCurrentProcess().ProcessName;
// Get all instances of My Program running on the local
// computer.
Process[] localByName = Process.GetProcessesByName(Application.ProductName );

// Get all instances of My Program running on the specifiec
// computer.
// 1. Using the computer alias (do not precede with "\\").
Process[] remoteByName = Process.GetProcessesByName(Application.ProductName , Environment.MachineName);

if (Process.GetProcessesByName(ProccessName).Length == 1)
{
// your code
Application.Run(new Form1());
}
}

در ضمن کلاس Environment اضافه شده در 2005 است و در 2003 نیست
--------------------

من قبلا با mutex این کار رو کردم. امتحان کن. نشد من یه sample می دم.

آقا این کد منون چک کنید اگر اشکال داره بفرمایید تا اصلاح کنم
در ضمن نمونه شما چی شد ؟؟؟

h.bathaie
دوشنبه 15 آبان 1385, 02:32 صبح
برنامه موقع اجرا وجود یا عدم وجود 1 فایل رو چک کنهو در صورت عدم وجود اونو بسازه و اجرا بشه در غبر این صورت اجرا نشه .. توی تمام زبانهای برنامه نویسی هم قابل اجراست .

محمد میرمصطفی
سه شنبه 16 آبان 1385, 15:13 عصر
public partial class Form1 : Form
{
IntPtr mutex;
[DllImport("Kernel32.dll", SetLastError = true)]
public static extern IntPtr CreateMutex(SecurityAttributes lpMutexAttributes, bool bInitialOwner, string lpName);
[DllImport("Kernel32.dll", SetLastError = true)]
public static extern int GetLastError();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
mutex = CreateMutex(null, true, "MohammadMutexTest");
MessageBox.Show(GetLastError() != 0 ? "Multiple instance" : "Single instance");
}
}
public class SecurityAttributes
{
private int stuctLength;
private IntPtr securityDescriptor;
private bool inheritHandle;
public SecurityAttributes()
{
stuctLength = Marshal.SizeOf(typeof(SecurityAttributes));
securityDescriptor = IntPtr.Zero;
}
public IntPtr SecurityDescriptor
{
get { return securityDescriptor; }
set { securityDescriptor = value; }
}
public bool Inherit
{
get { return inheritHandle; }
set { inheritHandle = value; }
}
}

محمد باقری نسب
پنج شنبه 04 شهریور 1389, 10:36 صبح
بابا چرا اینقدر راه خودتونو دور می کنید. به همین راحتی:



[STAThread]
static void Main()
{
bool not_already_exist;

//application_name اختیاریه

Mutex mux = new Mutex(true, "application_name", out not_already_exist);
if (!not_already_exist )
{
mux.Close();
return;
}

//ادامه برنامه

}

ایمان مدائنی
پنج شنبه 04 شهریور 1389, 10:47 صبح
دوستان نمونه كدش در 1001 نكته هست و من تست كردم جواب ميده !