2009-03-15 30 views
12

Vâng, tôi biết điều này có vẻ như một câu hỏi ngớ ngẩn, nó chỉ là một hack một lần tôi cần phải quấn lên một nhiệm vụ hơi nhàm chán để tôi có thể chuyển sang một cái gì đó thú vị hơn.Làm cách nào để làm mới cửa sổ máy tính để bàn theo chương trình (tức là F5) từ C#?

EDIT: Có thể có thêm thông tin sẽ giúp: Tôi đang cố gắng xóa một số phím tắt khỏi màn hình và tôi cần người dùng thấy phím tắt ngay lập tức (vì vậy họ không phải nhấn F5).

+0

PS. googling tiết lộ rằng một người nào đó từ expertsexchange có cùng một câu hỏi, nhưng tôi không muốn đăng ký trên trang web của họ. – DSO

+1

@ DSO: Tôi nghĩ bạn có thể nhận được câu trả lời về các chuyên gia trao đổi bằng cách cuộn xuống cuối trang .. (bạn nên sử dụng dấu gạch ngang trong các chuyên gia trao đổi, nếu không nó sẽ giống như "chuyên gia-cái gì đó khác";]) –

Trả lời

36

Bạn có thể sử dụng API SHChangeNotify.

[System.Runtime.InteropServices.DllImport("Shell32.dll")] 
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2); 

và sau đó gọi nó theo cách này

SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero); 
+0

vui vì tôi có thể giúp –

+0

Cảm ơn, nó thực sự giải quyết được vấn đề của tôi. – Sean

+1

@DSO Bạn đã "Cắt" nó như thế nào? – SepehrM

2

Tôi nghĩ bạn đang tìm kiếm IActiveDesktop::ApplyChanges. Bạn sẽ cần truy cập thông qua giao diện COM, điều này khá dễ dàng với tất cả các documentation Microsoft cung cấp trên COM Interop.

+0

Cảm ơn các mẹo, có vẻ như điều này có lẽ sẽ làm việc ... tuy nhiên cách tiếp cận Win32 từ Tom là một chút dễ dàng hơn để sử dụng ngay lập tức. – DSO

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