WPF检测设备变化
2024-10-21 13:06:44
如果在构造函数中设置会出现为空
HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
此时 source = null,
所以就该放在加载事件中
void Main()
{
var window = new Window
{
Width = 0,
Height = 0,
WindowStyle = WindowStyle.None,
ShowInTaskbar = false,
ShowActivated = false
};
window.Loaded += a_Loaded;
window.Show();
} void a_Loaded(object sender, EventArgs e)
{
var s = (Window) sender;
var source = PresentationSource.FromVisual(s);
if (hwndSource != null)
{
hwndSource.AddHook(newHwndSourceHook(USBDeviceChanged));
}
//...
s.Close();
}
/// <summary>
/// 设备变更
/// </summary>
WM_DEVICECHANGE = 0x219,
/// <summary>
/// 设备树节点变更(新增或删除了设备)
/// </summary>
DBT_DEVNODES_CHANGED = 0x0007,
private IntPtr USBDeviceChanged(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handle)
{
if (msg == WindowsMessage.WM_DEVICECHANGE.GetHashCode())
{
if (wParam.ToInt32() == WindowsMessage.DBT_DEVNODES_CHANGED.GetHashCode())
DeviceUpdate();
}
return IntPtr.Zero;
}
最新文章
- (十二) WebGIS中矢量图层的设计
- 《C专家编程》第二章——这不是Bug,而是语言特性
- 重命名PDF打印文件名
- dynamics_cast<;>;
- iOS 工作遇到问题记录
- Swift语法总结补充(一)
- URAL1513. Lemon Tale(dp)
- struts2+jquery 实现ajax登陆
- 【Linux】鸟哥的Linux私房菜基础学习篇整理(三)
- 清理下NFC的基本概念
- StringBuffer&;Runtime demo
- HDU 4864Task(更多的联合培训学校1)(贪婪)
- the quick brown fox jumps over the lazy dog
- 【RL-TCPnet网络教程】第34章	 RL-TCPnet之SMTP客户端
- 从 Confluence 5.3 及其早期版本中恢复空间
- CSS3 :nth-child(n)使用注意
- 导出Excel超过65535条限制解决方案
- Ubuntu 18.04 gcc降级为4.8.5版本
- LeetCode之数据流中第一个唯一的数字
- MB506/MB510 ULTRA HIGH FREQUENCY PRESCALER