我编写了一个WindowsFormApplication,它通过Windows消息处理基本的更新过程和USB检测,这就是问题所在。在一个形式中,像我这样的“受保护的覆盖子WndProc”是没有问题的:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
' >>>>Process USB Insertion<<<<
If m.Msg = WM_DEVICECHANGE Then
If CInt(m.WParam) = DBT_DEVICEARRIVAL Then
Dim DeviceInfo As DEV_BROADCAST_HDR
DeviceInfo = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(DEV_BROADCAST_HDR)), DEV_BROADCAST_HDR)
If DeviceInfo.dbch_devicetype = DBT_DEVTYP_VOLUME Then
Dim Volume As DEV_BROADCAST_VOLUME
Volume = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(DEV_BROADCAST_VOLUME)), DEV_BROADCAST_VOLUME)
Driveletter = (GetDriveLetterFromMask(Volume.dbcv_unitmask) & ":\")
有没有办法在模块中包含它,以便我可以构建一个无形的应用程序?
提前致谢!
我不认为这是可能的。 System.Windows.Forms.NativeWindow类是窗口的基类。使用此类,您可以使用名为AssignHandle的函数,该函数接受一个参数,即对象的HWND(控件)。而且你必须覆盖一个名为WndProc的方法。所以,没有表格就没有WndProc。