با سلام
من چطوری می تونم وقتی برنامه ای رو که با زبان سی شارپ
نوشتم وقتی یه بار اجرا کردم و در حال اجرا است دوباره نشه اجراش کرد:10:
Printable View
با سلام
من چطوری می تونم وقتی برنامه ای رو که با زبان سی شارپ
نوشتم وقتی یه بار اجرا کردم و در حال اجرا است دوباره نشه اجراش کرد:10:
سلام. یه راهش اینه که تو یه فایل یا دیتابیس مثلا بنویسی 1
بعد برنامه موقع لود شدن اون فایل رو بخونه. اگه 1 بود دیگه لود نشه.
ممکنه راه دیگه ای هم باشه که بهتر باشه.
با سلام
کد متد Main از کلاس Program رو با کد زیر تعویض کنید :
موفق باشید.کد:System.Diagnostics.Process[] processes =
System.Diagnostics.Process.GetProcessesByName(
System.Diagnostics.Process.GetCurrentProcess().ProcessName);
if (processes.Length <= 1 || processes == null)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(newForm1());
}
سلامنقل قول:
بهتر است بعد از ایجاد اولین instance از برنامه process های ایجاد شده بعدی را از بین ببریم و instance اصلی را فعال کنیم، با این کار با هر بار اجرای جدید برنامه برنامه اصلی به پنجره فعال تبدیل خواهد شد:
ابتدا namespace های زیر را به برنامه اضافه کن
و بعدکد:using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
موفق باشی :)کد:static class Program
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
///<summary>
/// The main entry point for the application.
///</summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//use Mutex to prevent multi instances of the program
System.Threading.Mutex mutex = null;
bool owned = false;
try
{
mutex = new System.Threading.Mutex(true, Assembly.GetExecutingAssembly().FullName, out owned);
if (!owned)
{
Process current = Process.GetCurrentProcess();
foreach (Process process in Process.GetProcessesByName(current.ProcessName))
{
if (process.Id != current.Id)
{
SetForegroundWindow(process.MainWindowHandle);
break;
}
}
Process.GetCurrentProcess().Kill();
}
}
catch (Exception ex)
{
}
finally
{
if (mutex != null && owned)
mutex.ReleaseMutex();
}
Application.Run(new Form1());
}
}
نقل قول:نقل قول:خیلی ممنوننقل قول:
مشکلم حل شد.:10: