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

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;

}

 

WPF检测设备变化的更多相关文章

  1. 前端笔记之JavaScript(十二)缓冲公式&检测设备&Data日期

    一.JavaScript缓冲公式ease 原生JS没有自己的缓冲公式,但是你要自己推理的话,必须要懂一些数学和物理公式: 让div用100毫秒(帧),从left100px的位置变化到left800px ...

  2. 转载 iOS全局检测网络变化的实时状态

      昨天浏览了cocoaChina,发现了一遍文章是优化Reachablity框架的出来的检测网络类,大家都知道这个Reachablity框架是用来检测网络变化的!但是也是有一点bug,事实上,基于此 ...

  3. 论wpf的设备无关性 - 简书

    原文:论wpf的设备无关性 - 简书 WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile ...

  4. Device.js——检测设备平台、操作系统的Javascript 库

    http://segmentfault.com/a/1190000000373735 Device.js 是一个可以让你检测设备的平台,操作系统和方向 JavaScript 库,它会自动在 <h ...

  5. 检测网络变化(wifi、2g、3g、4g)

    检测网络变化(wifi.2g.3g.4g) 1.注册广播"android.net.conn.CONNECTIVITY_CHANGE"和"android.net.wifi. ...

  6. 使用device.js检测设备并实现不同设备展示不同网页

    现在很多时候会用@media来控制页面在不同分辨率的设备商展示不同效果,但是有些时候想在直接在PC上展示一个做好的页面,在mobile展示另一个页面.这个时候可以借助device.js来检测设备,然后 ...

  7. [one day one question] nodejs require 缓存,无法检测文件变化

    问题描述: nodejs require 缓存,无法检测文件变化,当文件require引入后,当文件发生变动后即使再次使用require,返回的依然是第一次引入的文件内容,这怎么破? 解决方案: de ...

  8. 检测设备平台,操作系统,方向 Javascript 库:Device.js

    Device.js 是一个可以让你检测设备的平台,操作系统和方向 JavaScript 库,它会自动在 <html> 标签添加一些设备平台,操作系统,方向相关的 CSS class,这样就 ...

  9. [Swift通天遁地]五、高级扩展-(1)快速检测设备属性:版本、类型、屏幕尺寸

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  10. js代码检测设备问题:为什么在移动端检测设备的时候会出现pc的页面

    为了在手机上也能正常显示页面,所以为之前写的页面又重写了一遍,专门用来在移动端显示,用js代码检测设备,如果是pc就显示pc的页面,如果是移动就显示移动的页面,但遇到一个问题就是在移动端打开会有一个延 ...

随机推荐

  1. Kinsoku jikou desu新浪股票接口变动

    1.问题原因 新浪股票接口返回如标题所示值:Kinsoku jikou desu! http://hq.sinajs.cn/list=code 新浪股票的接口变动,需要在请求头中添加Referer值. ...

  2. ROS入门:服务

    服务端实现一个加法,将结果反馈给客户端 客户端将要计算的和的两个数发给服务的. 1.自定义服务数据 创建一个srv文件:AddTwoInts.srv int64 a int64 b --- int64 ...

  3. C++练习-1 简单输入输出

    首先完整代码如下: #include <iostream> #include <string> using namespace std; int main() { int on ...

  4. https://lamp.sh/

    转载:LAMP一键安装包 LAMP一键安装包

  5. Mars3D入门示例

    1. 引言 Mars3D是基于Cesium的Web端的三维GIS库,对Cesium做了进一步封装和扩展 Mars3D官网:Mars3D三维可视化平台 | 火星科技 Mars3D开发手册:开发教程 - ...

  6. PostgreSQL Repmgr集群

    一.概述 repmgr是一套开源工具,用于管理PostgreSQL服务器群集内的复制和故障转移.它支持并增强了PostgreSQL的内置流复制,该复制流提供了一个读/写主服务器以及一个或多个只读备用数 ...

  7. pat乙级 1019 数字黑洞

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> ...

  8. 【10】java之final关键字

    1.使用final 定义的变量就变成了常量,常量必须在定义的时候就设置好内容且不能修改. public static final 声明的就是全局常量. public static final Stri ...

  9. 关于vue组件传值和事件绑定问题

    <template> <view style="width: 100%; height: 100%;"> <view class="tabs ...

  10. ucloud 签名算法

    # Python version:3.6.5 import hashlib import urllib from urllib.parse import urlparse params = { &qu ...