2009-07-22 28 views
8

Khi ẩn thanh tác vụ trên Vista và Windows 7, nút Start (còn gọi là Orb bắt đầu) không bị ẩn. Tôi đã tìm kiếm một giải pháp cho điều này và tôi đã tìm thấy một nhưng nó có vẻ phức tạp hơn cần thiết. Điều này CodeProject article mô tả (và chứa mã cho) một giải pháp mà bạn liệt kê tất cả các cửa sổ con của tất cả các luồng trong quá trình chứa trình đơn bắt đầu.Ẩn Start Orb trên Vista/Win 7 trong C#

Có ai tìm thấy giải pháp đơn giản hơn không?

Chỉ để tham khảo. Mã để ẩn thanh tác vụ (không che giấu Orb) như sau. Đầu tiên, nhập khẩu và khai báo Win32 cần thiết.

[DllImport("user32.dll")] 
private static extern IntPtr FindWindow(string className, string windowText); 

[DllImport("user32.dll")] 
private static extern int ShowWindow(IntPtr hwnd, int command); 


private const int SW_HIDE = 0; 
private const int SW_SHOW = 1; 

Sau đó, trong một phương pháp ở đâu đó, gọi cho họ với các đối số đúng

IntPtr hwndTaskBar = FindWindow("Shell_TrayWnd", ""); 
ShowWindow(this.hwndTaskBar, SW_HIDE); 
+0

Tôi nghĩ đây là một câu hỏi trùng lặp. Ai đó đã đăng yêu cầu làm thế nào để ẩn thanh tác vụ và giải pháp đưa ra là có form.WindowState = FormWindowState.Maximized; form.FormBorderStyle = FormBorderStyle.None; Combo này nên ẩn thanh tác vụ khá tốt. Tôi không có vấn đề làm điều này trên Win7. Không thử trên Vista. –

+0

Điều đó không ẩn Thanh tác vụ. Nó che đậy nó. –

+0

Xem http://stackoverflow.com/questions/505167/how-do-i-make-a-winforms-app-go-full-screen –

Trả lời

12

tôi đã có thể đặt cùng một giải pháp mà không yêu cầu tất cả các chủ đề liệt kê. Dưới đây là các phần liên quan.

Nếu bạn khai báo FindWindowEx như sau

[DllImport("user32.dll")] 
private static extern IntPtr FindWindowEx(
     IntPtr parentHwnd, 
     IntPtr childAfterHwnd, 
     IntPtr className, 
     string windowText); 

Sau đó bạn có thể truy cập vào cửa sổ xử lý dành cho các Start Orb như thế này:

IntPtr hwndOrb = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null); 

và vô hiệu hóa Start Orb như thế này:

ShowWindow(hwndOrb, SW_HIDE); 

Chìa khóa cho phương pháp này là chúng tôi sử dụngLoại 210 cho biến className thay vì một chuỗi trong hàm FindWindowEx. Điều này cho phép chúng tôi sử dụng phần chức năng này có loại ATOM thay vì một số string. Tôi có thể nhận thấy rằng ATOM cụ thể để sử dụng là tại 0xC017 từ bài đăng này: Hide Vista Start Orb

Hy vọng phiên bản đơn giản này sẽ giúp một số người.

CẬP NHẬT: Tôi đã tạo mới Code Project Page này để ghi lại quy trình này.

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