如果在构造函数中设置会出现为空

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;

}

 

最新文章

  1. (十二) WebGIS中矢量图层的设计
  2. 《C专家编程》第二章——这不是Bug,而是语言特性
  3. 重命名PDF打印文件名
  4. dynamics_cast&lt;&gt;
  5. iOS 工作遇到问题记录
  6. Swift语法总结补充(一)
  7. URAL1513. Lemon Tale(dp)
  8. struts2+jquery 实现ajax登陆
  9. 【Linux】鸟哥的Linux私房菜基础学习篇整理(三)
  10. 清理下NFC的基本概念
  11. StringBuffer&amp;Runtime demo
  12. HDU 4864Task(更多的联合培训学校1)(贪婪)
  13. the quick brown fox jumps over the lazy dog
  14. 【RL-TCPnet网络教程】第34章 RL-TCPnet之SMTP客户端
  15. 从 Confluence 5.3 及其早期版本中恢复空间
  16. CSS3 :nth-child(n)使用注意
  17. 导出Excel超过65535条限制解决方案
  18. Ubuntu 18.04 gcc降级为4.8.5版本
  19. LeetCode之数据流中第一个唯一的数字
  20. MB506/MB510 ULTRA HIGH FREQUENCY PRESCALER

热门文章

  1. 计算机网络基础09 TCP/IP
  2. C#IIS上传文件大小设置问题:maxRequestLength、maxAllowedContentLength
  3. Mybatis Plus 框架项目落地实践总结
  4. LinkedList内部实现原理
  5. Cesium JulianDate(十八)
  6. ctfshow_web入门 反序列化(254~266)
  7. CSS:linear-gradient()背景颜色渐变
  8. Activity 和 Fragment 中的视图绑定
  9. 补充人物pawn的旋转方向
  10. sentry-sdk 使用