gpt4 book ai didi

.net - 检测何时安装驱动器或更改状态(WPF 的 WM_DEVICECHANGE)?

转载 作者:行者123 更新时间:2023-12-02 05:45:46 25 4
gpt4 key购买 nike

我正在为 WPF 编写一个目录选择器控件,我想在目录树中添加/删除一个驱动器,当它被安装或卸载时或者当它准备好或未准备好时(例如,用户插入或删除 CD ).我正在寻找类似于 WM_DEVICECHANGE 的系统事件。

康斯坦丁

最佳答案

即使您使用的是 WPF,您仍然可以拦截 WM_DEVICECHANGE。您可以使用 WPF 回调方法附加到现有的窗口过程,或者您可以使用 System.Windows.Forms.NativeWindow(我的首选方法,更容易控制,但您确实需要添加一个对 System.Windows.Forms.dll 的引用)

// in your window's code behind
private static int WM_DEVICECHANGE = 0x0219;

protected override void OnSourceInitialized(EventArgs e)
{
WindowInteropHelper helper = new WindowInteropHelper(this);
SystemEventIntercept intercept = new SystemEventIntercept(helper.Handle);
base.OnSourceInitialized(e);
}

class SystemEventIntercept : System.Windows.Forms.NativeWindow
{
public SystemEventIntercept(IntPtr handle)
{
this.AssignHandle(handle);
}

protected override void WndProc(ref Winforms.Message m)
{
if (m.Msg == WM_DEVICECHANGE)
{
// do something
}

base.WndProc(ref m);
}
}

关于.net - 检测何时安装驱动器或更改状态(WPF 的 WM_DEVICECHANGE)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3772337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com