이전 답변은 구식입니다. 은 MainWindow를가 QMainWindow에서 파생 윈도우 10에 QT5와 나를 위해 일한 다음 : 드라이브가 삽입되고 또한 드라이브 문자를 제공 할 때 이벤트를 만듭니다
#include <QByteArray>
#include <windows.h>
#include <dbt.h>
bool MainWindow::nativeEvent(const QByteArray& eventType, void* pMessage, long* pResult)
{
auto pWindowsMessage = static_cast<MSG*>(pMessage);
auto wParam = pWindowsMessage->wParam;
if (wParam == DBT_DEVICEARRIVAL || wParam == DBT_DEVICEREMOVECOMPLETE) {
auto lParam = pWindowsMessage->lParam;
auto deviceType = reinterpret_cast<DEV_BROADCAST_HDR*>(lParam)->dbch_devicetype;
if (deviceType == DBT_DEVTYP_VOLUME) {
auto unitmask = reinterpret_cast<DEV_BROADCAST_VOLUME*>(lParam)->dbcv_unitmask;
for (int i = 0; i < 32; ++i) {
if ((unitmask & (1 << i)) != 0) {
setDriveChanged('A' + i, wParam == DBT_DEVICEARRIVAL);
}
}
}
}
return false;
}
. "드라이브 번호"(어쩌면 USB 일련 번호)를 탐지하는 것은 훨씬 복잡합니다. 아마도 볼륨 레이블이나 파일 시스템 일련 번호가 대신 사용될 수 있습니다. –
GetSystemPowerStatus (& status)와 같은 함수가 있습니까? 내가 그 상태를 조사 할 수 있도록? 그리고 헤더 파일과 이것을 사용하기 위해 포함해야하는 .lib 파일 이름을 알려주시겠습니까? –
링크가 작동하지 않습니다. 그것을 업데이트 할 수 있습니까? –