相关疑难解决方法(0)

如何检测USB驱动器已插入?

我想构建一个程序来检测是否插入了usb(或两个或更多)(并将所有内容复制到硬盘上的任何文件夹)

有任何想法吗?我有这个,

using System.Runtime.InteropServices;
Run Code Online (Sandbox Code Playgroud)

但这不是简单的方法(我相信).我想要一些简单的事情

我有另一个想法(如果(文件夹存在)然后复制) - 但可能有一个问题,我想要一个很好的解决方案.

可能还有一个名为SerialPort的工具; 我可以用吗?如果是这样,我该如何使用它?

c# file usb-drive

55
推荐指数
3
解决办法
9万
查看次数

如何使用C#在.NET中使用.NET获取所有驱动器

如何在PC中获取所有驱动器.和每个驱动器的类型和每个的自由空间

即系统驱动器,CD驱动器,DVD驱动器,可拆卸,......等

如果系统附带新驱动器可能是笔式驱动器或外部硬盘.

如何在附件时检测到它们?

.net c#

9
推荐指数
1
解决办法
2万
查看次数

使用 python 在 Windows 10 上检测 USB 设备插入

我无法获得以下用于检测 USB 设备插入的代码,以便在使用 Python 3.7 的 Windows 10(64 位)计算机上运行。

import win32serviceutil
import win32service
import win32event
import servicemanager

import win32gui
import win32gui_struct
struct = win32gui_struct.struct
pywintypes = win32gui_struct.pywintypes
import win32con

GUID_DEVINTERFACE_USB_DEVICE = "{A5DCBF10-6530-11D2-901F-00C04FB951ED}"
DBT_DEVICEARRIVAL = 0x8000
DBT_DEVICEREMOVECOMPLETE = 0x8004

import ctypes

#
# Cut-down clone of UnpackDEV_BROADCAST from win32gui_struct, to be
# used for monkey-patching said module with correct handling
# of the "name" param of DBT_DEVTYPE_DEVICEINTERFACE
#
def _UnpackDEV_BROADCAST (lparam):
  if lparam == 0: return None
  hdr_format = …
Run Code Online (Sandbox Code Playgroud)

python usb windows-10

4
推荐指数
1
解决办法
1288
查看次数

如何挂接到 WPF 窗口句柄以侦听 USB 事件

我在工作中需要挂钩 WPF 应用程序的 Windows 事件。我需要监听 USB 事件。我发现了分散且不完整的答案,因此我想在一个统一的位置记录我的方法。

我最初的问题发生在尝试复制此处的代码示例时:
/sf/answers/1360502111/

我能够挂钩 Windows 事件并接收设备通知,但它们非常通用,没有为我提供太多可用于我的应用程序的信息。

对该页面的进一步阅读使我在同一页面上得到了不同的答案,该答案直接挂接到窗口句柄中以监视事件:
https ://stackoverflow.com/a/620179/1683999

这个答案提供了链接: https:
//www.codeproject.com/Articles/3946/Trapping-windows-messages

通过按照 codeproject 教程进行一些修改以挂钩 WPF 的窗口句柄,我能够获取 WM_DEVICECHANGE 消息,但在解码 wParam 时,我只收到 DBT_DEVNODES_CHANGED,因为我没有注册监听 USB 事件。通过 Google 快速搜索,我找到了一篇旧的 MSDN 论坛帖子: https:
//social.msdn.microsoft.com/Forums/vstudio/en-US/983dc1ee-6208-4036-903f-3fd5674a1efb/registerdevicenotification-in-wpf ?forum =wpf

在这个帖子中,我找到了我正在寻找的答案。我没有注册 Window 来专门查找 USB 事件,因此我从 Windows 获取了通用事件代码。进一步的研究让我回到了 StackOverflow:
/sf/answers/1137213101/

最后的答案为我解决了这个难题。我提供了一些代码片段,概述了通过挂钩到 WPF 窗口然后创建一个注册该窗口以侦听 USB 事件的侦听器来侦听 Windows 事件所需的内容。

.net c# wpf usb

3
推荐指数
1
解决办法
1539
查看次数

如何使用WMI获取USB设备的驱动器号

我需要跟踪C#应用程序中的USB插入和移除事件,因此我根据SO上的其他问题提出了以下想法。

我不能用这种方法

var drives = DriveInfo.GetDrives()
    .Where(drive => drive.IsReady && drive.DriveType == DriveType.Removable).ToList();
Run Code Online (Sandbox Code Playgroud)

因为当您需要区分已连接和已断开连接的设备时,这可能会带来很多麻烦(新设备的驱动器号和名称可以与先前缓存的驱动器号和名称相同)。

因此,我决定使用WMI解决此问题,但是我发现无法通过Win32_USBHub类获取指定USB设备的驱动器号。然后我以为我可以执行这样的另一个查询

foreach (ManagementObject device in new ManagementObjectSearcher(@"SELECT * FROM Win32_USBHub").Get())
{
    string deviceID = (string)device.GetPropertyValue("DeviceID");

    Console.WriteLine("{0}", deviceID);

    string query = string.Format("SELECT * FROM Win32_LogicalDisk WHERE DeviceID='{0}'", deviceID);
    foreach (ManagementObject o in new ManagementObjectSearcher(query).Get())
    {
        string name = (string)o.GetPropertyValue("Name");
        Console.WriteLine("{0}", name);
    }

    Console.WriteLine("==================================");
}
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用-每当我尝试执行与Win32_LogicalDisk表兼容的查询时,都会收到“无效查询”的异常。

为什么?我究竟做错了什么?我该如何解决?也许有更好的方法来解决这个问题?

提前致谢。

c# wmi

2
推荐指数
1
解决办法
6196
查看次数

标签 统计

c# ×4

.net ×2

usb ×2

file ×1

python ×1

usb-drive ×1

windows-10 ×1

wmi ×1

wpf ×1