Wie kann ich wissen, wenn ein neues USB-Speichergerät in Qt angeschlossen ist?

8

Ich möchte wissen, wenn ein USB-Gerät an den Computer angeschlossen ist, auf dem meine Qt-Anwendung läuft (unter Windows). In meinem Haupt-QWidget habe ich winEventFilter wie folgt neu implementiert:

%Vor%

Ich würde erwarten, dass qDebug zumindest etwas sendet, wenn ich ein USB-Gerät anschließe, aber ich bekomme nichts.

Ich nehme an, dass ich den Prozess hier grundsätzlich falsch verstehe - das ist meine erste Qt-App!

    
Skilldrick 12.05.2009, 13:21
quelle

3 Antworten

5

Ich glaube, was Sie möglicherweise vermissen, ist der Anruf zur Registrierung für die Gerätebenachrichtigung. Hier ist Code, den ich benutze, um dasselbe zu tun, obwohl ich die winEvent () - Methode der QWidget-Klasse überschreibe und nicht den winEventFilter.

%Vor%

HINWEIS: Sie müssen höchstwahrscheinlich die Werte von DEV_BROADCAST_DEVICEINTERFACE an Ihre Bedürfnisse anpassen.

BEARBEITEN: Um diesen Code zu verwenden, müssen Sie die richtigen Header-Dateien einfügen und die richtige Konfiguration vornehmen. DEV_BROADCAST_DEVICEINTERFACE erfordert, dass der Dbt.h-Header eingeschlossen wird. Der Schwerpunkt dieses Codes liegt außerdem in der Funktion RegisterDeviceNotification. Informationen finden Sie auf MSDN

    
brader24 12.05.2009, 15:39
quelle
2

Ich arbeite in den gleichen Zeilen, aber in C #.

Sie müssen Ihre Anwendung beim System registrieren (sehen Sie sich die Funktion RegisterHidNotification () an). Meine sieht so aus: '

%Vor%

Der wichtigste Teil der Funktion ist das Bit, das ich fett hervorgehoben habe (oder zumindest versucht habe). Definiert als: public Guid GUID_DEVINTERFACE_USB_DEVICE = new Guid("A5DCBF10-6530-11D2-901F-00C04FB951ED"); Hoffe, Sie können es an Ihre Anwendung anpassen.

    
Dark Star1 14.05.2009 20:47
quelle
-1

Dieser Link zur Trolltech-Mailingliste könnte nützlich sein.

>     
Milan 12.05.2009 14:42
quelle

Tags und Links