Trước kia , các giải pháp chỉ là , tìm process , mutex để xem ứng dụng chạy chưa , nếu chạy rồi thì hiện thông báo . Nhưng thấy 2 ứng dụng là yahoo , unikey khi chạy instance thứ 2 thì nó hiện cửa sổ chương trình đã chạy lên chứ không phải thông báo từ ứng dụng vừa bật .
Search được cái này
http://www.hvaonline.net/hvaonline/posts/list/24286.hva
Nhưng code trên nó lại hiện thông báo , mà mình cần là active cơ nên sửa lại tí :
Visual C# Code:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. using System.Threading;
  5. using Microsoft.Win32;
  6. using System.Runtime.InteropServices;
  7. using System.Diagnostics;
  8. using Microsoft.VisualBasic.ApplicationServices;
  9.  
  10.  
  11. {
  12.     static class Program
  13.     {
  14.         /// <summary>
  15.         /// The main entry point for the application.
  16.         /// </summary>
  17.         static Form1 form1;
  18.         [STAThread]
  19.         static void Main()
  20.         {
  21.             Application.EnableVisualStyles();
  22.             Application.SetCompatibleTextRenderingDefault(false);
  23.             SingleInstance.Run(form1=new Form1(),new StartupNextInstanceEventHandler(StartupNextInstanceHandler));
  24.         }
  25.         public static void StartupNextInstanceHandler(object sender, StartupNextInstanceEventArgs e)
  26.         {
  27.             form1.Show(); [b]// chính là cái này [/b]
  28.         }
  29.     }
  30. }
Nhưng lại có 1 vấn đề là khi chạy instance mới nó new Form1() , chưa chạy nó đã tắt luôn nên thành ra 2 cái icon ở khay hệ thống ( dùng chuột chỉ vào cái mới tạo đã tắt ngay thì mới mất ). Nên phải khắc phục bằng hide cái icon notify khi khởi động , đến lúc sự kiện shown (form không bị cản trở khi khởi động và đã load đầy đủ) , thì mới show nó
Visual C# Code:
  1.         private void Form1_Shown(object sender, EventArgs e)
  2.         {
  3.             this.notifyIcon1.Visible = true;
  4.         }
Vậy là giải quyết được trọn vẹn vấn đề
Đây là ứng dụng mẫu (dùng reflector mà dịch ra mã nguồn) , khi bật nó lên sẽ có 1 text , bạn gõ lộn tùng bậy vào đó , rồi bấm nút ẩn để ẩn nó đi .
Rồi giờ kích vào file đó 1 phát nữa (chạy instance thứ 2) , nó sẽ hiện lại cửa sổ cũ (giống hệt vb.net cái single instance) , bằng chứng đó là cửa sổ cũ là ở chỗ , bạn vừa nãy gõ text gì thì cửa sổ đó cũng có text đó
http://www.mediafire.com/?zjw5la20i0j