Hallo!
Welches Ereignis wird in VB6 ausgelöst, wenn ein USB-Stick gesteckt/gezogen wird?
DriveListBox_Change() erkennt das nicht von alleine.
vG
der_kps
Hallo!
Welches Ereignis wird in VB6 ausgelöst, wenn ein USB-Stick gesteckt/gezogen wird?
DriveListBox_Change() erkennt das nicht von alleine.
vG
der_kps
Welches Ereignis wird in VB6 ausgelöst, wenn ein USB-Stick
gesteckt/gezogen wird?
Hallo Kps,
ich bin mir recht sicher vor irgendwie 1-3 Wochen war auch eine USB-Anfrage in einem Brett hier.
Irgendwie gings da auch um Erkennung des Einstöpselns aber irgendwie anders, sorry, weiß nicht mehr.
Sofern dort usb im Betreff genannt wurde müßtest du die Beitrgasfolge hier bei w-w-w finden können.
Und jetzt mal ohne Ahnung, davon hab ich viel , mal so dahingedacht,
warum eigentlich sollte ein BS wie Windows, könnt ja auch ein Mac sein oder sonstwas ein Fremdprogramm wie Vb von sich aus davon informieren daß da was eingesteckt wurde?
Das BS kriegt das wohl schon mit und passt den Win Explorer ruckzuck an usw.
VB kriegt doch davon nix mit. Auch mit API nicht. Außer halt man startet eine VB.exe die sekündlich alle Ports überwacht.
Oder irgendwas im BS „hinterlegt“, woher auch eine Meldung kommt.
Wenn man das hinkriegt (der Code würde mich sehr interessieren).
Regen Informatios/Wissensaustausch zu diesem Thema in dieser Beitragsfolge lese ich begeistert mit, kann ja nur davon lernen.
Gruß
Reinhard
Hallo,
Welches Ereignis wird in VB6 ausgelöst, wenn ein USB-Stick
gesteckt/gezogen wird?
in VB6 gar keins. Als VB6 geschrieben wurde, gab es noch keinen USB.
DriveListBox_Change() erkennt das nicht von alleine.
Die DriveListBox erkennt gar nichts von allein.
Auch wenn Du ein Netzlaufwerk verbindest, muss Dein Code ein
Drive1.Refresh
ausführen, damit das neue Laufwerk in der Liste erscheint.
Das Change Ereignis wird ausgelöst, wenn Du ein anderes Laufwerk auswählst.
Wenn Du mit der DriveListBox feststellen willst, ob ein Laufwerk hinzukommt, musst Du mit einem Timer dauernd ein .Refresh auf die Box ausführen. Das würde ich aber nicht gerade mit der machen, die sichtbar ist.
Gruß Rainer
Hallo,
einen „USB“ Beitrag habe ich gefunden; hilft mir aber nicht unbedingt weiter. Die Methode .Refresh hatte ich schon eingebaut. Aber es ist halt immer das Ereignis _Change durch Klick auf ein Laufwerk, das ich garnicht meine, erforderlich. Der Watchdog-Timer ist mir zu aufwendig! Vielleicht versuche ich doch nochmal die CommonDialogBox, die anfangs nicht lief (Vista?). Deshalb bin ich bei DriveListBox gelandet.
So blieben halt ein paar blöde Kleinigkeiten in VB6 bestehen: Redim bei dynamischen Arrays, kein _GotFocus in der TextBox nach Eingabe mit Return-Taste oder sleep, das nur ganzzahlige Millisekunden kann (
Hallo Reinhard,
Und jetzt mal ohne Ahnung, davon hab ich viel , mal so
dahingedacht,
warum eigentlich sollte ein BS wie Windows, könnt ja auch ein
Mac sein oder sonstwas ein Fremdprogramm wie Vb von sich aus
davon informieren daß da was eingesteckt wurde?
Warum sollte Win das nicht tun, es hat ja keine Ahnung ob ein Task ein Buchhaltungsprogramm oder ein Systemtool ist?
Windows ist meldungsbasiert. Grundsätzlich hat jedes Programm diese berühmte GetMessage-Schlaufe, in welcher dann die Meldungen gefiltert werden müssen. In C muss man dieses Teil selber programmieren, in VB ist es Bestandteil der Laufzeitbibliothek. Auch z.B. Timer-Events werden an VB als Meldung übertragen, auch wenn Callback verwendet wird. Aus diesem Grund ist Win auch nicht echtzeitfähig, auch ein Timer-Event muss erst aus dem Meldungs-Puffer ausgelesen werden. Hat man eine lange Berechnung, oder viele andere Meldungen, wird der Timer-Event erst verzögert in deinem Programm abgearbeitet.
Win stellt übrigens eine Hook.Dll zur Verfügung mit welcher man sich in alle Meldungsströme einklinken kann und entsprechend auch alle Banachrichtigungen beim BS „abonieren“ kann.
MfG Peter(TOO)
Hallo Peter,
warum eigentlich sollte ein BS wie Windows, könnt ja auch ein
Mac sein oder sonstwas ein Fremdprogramm wie Vb von sich aus
davon informieren daß da was eingesteckt wurde?Warum sollte Win das nicht tun, es hat ja keine Ahnung ob ein
Task ein Buchhaltungsprogramm oder ein Systemtool ist?
verstehe ich nicht. Das BS checkt beim Booten was so alles angeschlossen ist. Dann hat es Überwachungstregien für den USB-Anschluß um mitzubekommen wenn da was gewechselt wird.
Wieso sollte das BS von sich aus alle laufenden Tasks davon unterrichten bei einer Veränderung?
M.E. müssen da die „Fremdprogramme“ von sich aus dafür sorgen daß sie da einen USB-Wechsel mitbekommen. Entweder selbst den USB Port überwachen oder sich irgendwie/irgendwo ins BS einklinken.
Windows ist meldungsbasiert. Grundsätzlich hat jedes Programm
diese berühmte GetMessage-Schlaufe, in welcher dann die
Meldungen gefiltert werden müssen.
Ich kenne nicht alle Berühmtheiten Aber GetMessage klingt für mich so als ob da das Fremdprogramm mit GetMessage selbst nachfragen muß ob es Änderungen gab.
Oder soll das bedeuten durch GetMessage im äh Code ist das Fremdprogramm automatisch im BS-Änderungsmitteilungsverteiler mit integriert?
Timer-Events werden an VB als
Meldung übertragen, auch wenn Callback verwendet wird.
Sorry, ich bin nicht fit genug das zu verstehen.
Win stellt übrigens eine Hook.Dll zur Verfügung mit welcher
man sich in alle Meldungsströme einklinken kann und
entsprechend auch alle Banachrichtigungen beim BS „abonieren“
kann.
Aha, das klingt ja so wie ich es oben schrieb, das Fremdprogramm muß sich irgendwie ins BS einklinken um automatisch USB-Änderungen mitgeteilt zu bekommen.
Was ja meine Anfangsthese bestätigt, von Haus aus hat das BS keinerlei Interesse fremde Programme/tasks von irgendwas zu informieren.
Wobei das Wort „These“ bei meinem Kenntnisstand oder daß ich mich überhaupt an dieser Diskussion beteilige sehr sehr gewagt ist *gg*
Gruß
Reinhard
OT MS online bei VB2008 dabei?
Jetzt versuche ich mich mal an VB2008 Express. Habe nur
Bedenken, dass MS da immer online dabei ist.
Hallo Kps,
warum hast du da Bedenken?
Und, kann man mit VB2008 nicht auch Offline arbeiten?
Gruß
Reinhard
Hallo Klaus Peter,
das selbe Problem hatte ich. Also ich musste erkennen wann sich das Laufwerk ändert. Sei es ein USB Stick oder eine austauschbare HD etc.
Ich habe mich dann mal hingesetzt und das mit VB9(VB2008) programmiert.
Bei Interesse kann ich dir gerne den Source dazu geben. Zur Not müsste ich mal schauen, weil ich auch schon lange raus bin( aus der programmierung mit VB6), könnte ich Dir das zur Not noch nach VB6 übersetzen. Bei Interesse, melde Dich einfach mal
MfG Alex
Tja, da passiert wohl viel online; auch installieren at once, Hilfe etc. Und MS schaut ständig auf meine Festplatte.
Aber ich mach das mal!
vg
der_kps
Danke für das Angebot!
Ich habe jetzt mal die CommonDialogBox versucht (keine Ahnung, warum das zu Anfang nicht funktioniert hat). Die erkennt sofort, ob der Stick da ist oder nicht. Geht doch!
vG
der_kps
Ich habe jetzt mal die CommonDialogBox versucht (keine Ahnung,
warum das zu Anfang nicht funktioniert hat). Die erkennt
sofort, ob der Stick da ist oder nicht. Geht doch!
Hallo Kps,
das ist aber ein gewaltiger Unterschied zu deiner Ausgangsfrage.
Ist ja lobenswert wenn das Ding beim Codestart alle angeschlossenen LWs erkennt.
Aber was ist wenn du da während der Laufzeit am USB-Port was ein- oder ausstöpseltst?
Reagiert darauf diese CommonDialogBox? Ich mutmaße nein, wenn müßtest du sie refreshen, neu starten oder sowas.
Falls ich falsch mutmaße bitte ich um Information.
Gruß
Reinhard
Nöö, die CommonDialogBox macht ihr Geschäft sehr gut!
Einmal geöffnet und Arbeitplatz ausgewählt, stecke ich den Stick: Systemtönchen und das USB-LW wird sofort (ohne _Change oder .Refresh) angezeigt. Ich ziehe den Stick: Systemtönchen und das USB-LW verschwindet aus der Liste.
Das elende codieren, um mit Drive-, Dir- und FileListBox den Pfad zu erwischen reduziert sich auf ein Minimum. Auch habe ich direkten Zugriff auf den Desktop ohne \user …
Schreibgeschützt öffen, Datei-vorhanden-Warnung etc. ist alles inclusive.
vG
der_kps
Nöö, die CommonDialogBox macht ihr Geschäft sehr gut!
Einmal geöffnet und Arbeitplatz ausgewählt, stecke ich den
Stick: Systemtönchen und das USB-LW wird sofort (ohne _Change
oder .Refresh) angezeigt. Ich ziehe den Stick: Systemtönchen
und das USB-LW verschwindet aus der Liste.
Das elende codieren, um mit Drive-, Dir- und FileListBox den
Pfad zu erwischen reduziert sich auf ein Minimum. Auch habe
ich direkten Zugriff auf den Desktop ohne \user …
Schreibgeschützt öffen, Datei-vorhanden-Warnung etc. ist alles
inclusive.
Hallo kps,
danke dir für die Informationen
Gruß
Reinhard