我试图在我的WPF应用程序中检测到Windows或关机。有人能帮忙吗?
xaml.cs
private static int WM_QUERYENDSESSION = 0x11;
private static bool systemShutdown = false;
public static event Microsoft.Win32.SessionEndingEventHandler SessionEnding;
protected virtual void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
{
MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot");
systemShutdown = true;
}
// If this is WM_QUERYENDSESSION, the closing event should be
// raised in the base WndProc.
base.WndProc(ref m); //Error
} //WndProc错误: RadWindow不包含“WndProc”的定义
发布于 2019-02-22 13:22:50
一旦加载了Win32,您应该能够获得对父WPF窗口的引用,并创建一个RadWindow钩子:
public class MyRadWindow : RadWindow
{
public MyRadWindow()
{
Loaded += MyRadWindow_Loaded;
}
private void MyRadWindow_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
System.Windows.Window wpfWindow = this.ParentOfType<System.Windows.Window>();
HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(wpfWindow).Handle);
source.AddHook(new HwndSourceHook(WndProc));
}
private const int WM_QUERYENDSESSION = 0x11;
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_QUERYENDSESSION)
{
//...
}
return IntPtr.Zero;
}
...
}https://stackoverflow.com/questions/54824389
复制相似问题