Seite 1 von 1

(Erledigt) Wie.. Meldung Datenträger einlegen unterdrücken ?

Verfasst: 24.06.2012 09:34
von Fabio
Hallo,
wie kann ich die Windowsmeldung "Datenträger einlegen" unterdrücken?
Bild

Es geht um folgendes:
Ich such diverse Laufwerke nach einer Datei ab und lasse es mir auf der Console anzeigen
ob sie vorhanden ist oder nicht.

Welche Lauferke vorhanden sind, ist mir nicht bekannt, also fahre ich sie einfach von A-Z an.
Das ganze funktioniert ansich ganz gut, nur bekomme ich hier bei mir, wenn es zum Laufwerk H:\ geht,
immer diese Meldung.

Das Laufwerk H:\ ist eigendlich bei mir nicht vorhanden, nur vermute ich das hier das versteckte Laufwerk von
Acronis gemeint ist, wo eines meiner Vollbackups gespeichert ist.

Hier der eigentlich simple Code dazu:

Code: Alles auswählen

EnableExplicit

Global i.a

OpenConsole()

For i = 65 To 90
  
  If FileSize( Chr(i)+":\fabbio.txt" )  < 0
    PrintN("Datei fabbio.txt in: "+Chr(i)+":\  nicht gefunden " )
    Delay(1000)
  Else
    PrintN("Datei in: "+Chr(i)+":\fabbio.txt  gefunden "  )
    Delay(3000)
   EndIf
Next 

      

CloseConsole()

Re: Wie... Meldung -> "Datenträger einlegen" unterdrücken ?

Verfasst: 24.06.2012 10:21
von Bisonte
Das sieht nach Win 7 aus....

Also bei mir rauscht es komplett durch, ohne Fehlermeldung.

Allerdings habe ich auch keine versteckten Laufwerke. Du könntest zum testen mal die API missbrauchen
vielleicht klappts... (Wobei ich mir denke FileSize() macht auch nur FindFirstFile_() )

Code: Alles auswählen

Procedure FileExists(FileName.s)
  Protected Result.i
  Protected Find.WIN32_FIND_DATA
  Result = FindFirstFile_(FileName,Find)
  FindClose_(Result)
  If Result <> #INVALID_HANDLE_VALUE
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure

OpenConsole()

For i=65 To 90
  If FileExists(Chr(i)+":\fabbio.txt") 
    PrintN("Gefunden auf "+Chr(i))
    Delay(1000)
  Else
    PrintN("Nix auf "+Chr(i))
    Delay(1000)
  EndIf
Next i

CloseConsole()

Re: Wie... Meldung -> "Datenträger einlegen" unterdrücken ?

Verfasst: 24.06.2012 10:38
von Nino
Fabio hat geschrieben:wie kann ich die Windowsmeldung "Datenträger einlegen" unterdrücken?
Du kannst folgendes versuchen:

Code: Alles auswählen

EnableExplicit

Define prevErrMode.i, i.i, file$

OpenConsole()

prevErrMode = SetErrorMode_(#SEM_FAILCRITICALERRORS)
For i = 'A' To 'Z'
   file$ = Chr(i) + ":\fabbio.txt"
   Print("Datei '" + file$ + "' ")
   If FileSize(file$) < 0
      Print("nicht ")
   EndIf
   PrintN("gefunden.")
   Delay(1000)
Next
SetErrorMode_(prevErrMode)  ; vorigen Zustand wiederherstellen

CloseConsole()
Grüße, Nino

Re: Wie... Meldung -> "Datenträger einlegen" unterdrücken ?

Verfasst: 24.06.2012 14:35
von Fabio
@ Bisonte,
Oops. Ja es ist Win7, ich habe meine Signatur nun geändert.
Dein Code gibt bei mir auch diese Meldung aus.

@Nino,
mit Deinem Code läuft es durch.
Wenn ich das richtig verstehe, ist das SetErrorMode_ etwas aus der Win API.

Hier das ganze als Filmchen.
http://youtu.be/ZL6oRTmgRcY

Aber hier erstmal ein dickes Dankeschön für Eure Hilfe.

Re: Wie... Meldung -> "Datenträger einlegen" unterdrücken ?

Verfasst: 24.06.2012 15:19
von Nino
Fabio hat geschrieben:Wenn ich das richtig verstehe, ist das SetErrorMode_ etwas aus der Win API.
Ja, richtig. Um nähere Informationen dazu zu bekommen, kannst Du einfach nach dem Begriff googlen; aber ohne den _ am Ende. Der wird nur von PureBasic benutzt, um die API-Funktionen von den eigenen Funktionen bzw. Befehlen zu unterscheiden.

Grüße, Nino