2011-01-06 42 views
7

Tôi đã viết một ứng dụng WPF nhỏ khi 'đóng' thu nhỏ vào khay hệ thống (yêu cầu của khách hàng). Nhấp đúp vào bật lên, hoặc nhấp chuột phải sẽ đưa ra menu ngữ cảnh để thoát.Tối đa hóa ứng dụng trong khay hệ thống?

Nhưng nếu ứng dụng được thu nhỏ và người dùng điều hướng đến Start-> All Programs-> Ứng dụng sẽ bắt đầu một phiên bản mới.

Tôi cần làm gì (trong C#) để ứng dụng tối đa hóa cá thể đang chạy nếu người dùng thực hiện việc này thay vì kích hoạt một phiên bản mới?

Cảm ơn!

+2

tra cứu các đối tượng Mutex và lấy một cửa sổ đang hoạt động. không có mã trước mặt tôi, nhưng đó là hướng bạn cần phải thực hiện. - Tôi đã nói dối, hãy thử [bài viết này về một số ứng dụng .net] (http://www.ai.uga.edu/mc/SingleInstance.html) –

Trả lời

7

answer này từ Jon Skeet thảo luận về cách sử dụng một mutex để làm điều đó

Mutex là con đường để đi. Đó là rất nhiều ít mong manh hơn so với sử dụng tên quá trình v.v.

Tuy nhiên, bạn cần đảm bảo rằng Mutex không phải là rác được thu thập. Trong trường hợp của dịch vụ (sự kiện được điều khiển thay vì có phương thức "chính" chạy đến hoàn thành), cách hợp lý nhất để thực hiện việc này là có thể đặt trong biến tĩnh .

Vứt bỏ mutex khi dịch vụ dừng lại, vì vậy bạn không cần phải chờ kết quả hoặc bất kỳ thứ gì tương tự.

Matthew Brindley cho ví dụ này trong cùng một câu hỏi cho his answer

[STAThread] 
static void Main() 
{ 
    using(Mutex mutex = new Mutex(false, "Global\\" + appGuid)) 
    { 
     if(!mutex.WaitOne(0, false)) 
     { 
     MessageBox.Show("Instance already running"); 
     return; 
     } 

     Application.Run(new Form1()); 
    } 
} 

Để tối đa hóa ứng dụng khác mà bạn sẽ cần phải gửi nó thông điệp để tối đa hóa. Xem bài viết này trên message sending

+0

Hoàn hảo, cảm ơn! – Nicros

+0

Phải rút lại hoàn hảo của tôi! statement- kiểm tra này cho cá thể đang chạy và không bắt đầu một phiên bản mới - nhưng không trả lời câu hỏi làm thế nào để tối đa hóa ứng dụng khay hệ thống này mà không bắt đầu một cá thể mới. – Nicros

+0

Pfft. Hãy để tôi rút lại rút lại của tôi- bỏ lỡ liên kết ở dưới cùng để nhắn tin .. sẽ kiểm tra xem nó ra. – Nicros

Các vấn đề liên quan