AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows-Ereignis "Diskette eingelegt"
Thema durchsuchen
Ansicht
Themen-Optionen

Windows-Ereignis "Diskette eingelegt"

Ein Thema von Hennes_RldPf · begonnen am 25. Mär 2009 · letzter Beitrag vom 3. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Hennes_RldPf

Registriert seit: 23. Mär 2009
Ort: Grafschaft
4 Beiträge
 
Delphi 7 Professional
 
#1

Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 11:59
Hallo zusammen,

ich such mir seit ein paar Tagen nen Ast.

Ich erstelle eine Anwendung, die unter anderem erkennen soll, dass ein neues Laufwerk hinzugekommen ist um dieses LW dann mittels Fremdroutinen zu scannen.

Für USB, DVD/CD und Netzwerklaufwerke kein Thema...aber für Disketten-LW krieg ich`s nicht hin...

Welches Windows-Event (falls es das überhaupt für solch veraltete Technik gibt...) sagt mir, dass eine neue Diskette eingelegt wurde?


Danke im voraus für Eure Hilfe!

Hennes
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#2

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 12:03
Mal eine Gegenfrage: Hast Du eine Applikation gesehen, die soetwas kann?

Sherlock
Oliver
  Mit Zitat antworten Zitat
Hennes_RldPf

Registriert seit: 23. Mär 2009
Ort: Grafschaft
4 Beiträge
 
Delphi 7 Professional
 
#3

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 12:10
Klar könnte ich alle x Sekunden prüfen, ob da ein Datenträger eingelegt wurde...aber das ist für den Nutzer etwas nervig...

Ich denke, dass mir nichts anderes übrig bleiben wird, als die Disketten-LW in meiner Domäne komplett zu sperren...
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 12:27
Zitat von Sherlock:
Mal eine Gegenfrage: Hast Du eine Applikation gesehen, die soetwas kann?

Sherlock
Japp, Das Backupprogramm von Microsoft in DOS Zeiten konnte das...
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 12:29
Ob eine Diskette eingegt ist, überprüft Windows auch erst, wenn daruf zugegriffen werden soll. Und was CD/DVD angeht, hast du das mal probiert, wenn das Autorun abgeschaltet ist?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hennes_RldPf

Registriert seit: 23. Mär 2009
Ort: Grafschaft
4 Beiträge
 
Delphi 7 Professional
 
#6

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 12:36
Das Teil funzt auch, wenn autorun abgeschaltet ist...hab autorun aus Sicherheitsgründen in der gesamten Domäne abgeschaltet

Also bisher bin ich zufrieden damit...

___________________________________

Delphi-Quellcode:
function TForm1.ApplicationWndProcHook(var Message: TMessage): Boolean;
var zw_LW_liste : Array[0..25] of laufwerksliste;
    i,x : integer;
    Ergebnis : integer;
    LW_gefunden : boolean;



begin
  if Message.wParam = DBT_DEVICEARRIVAL then
    Begin
      LW_gefunden :=false;
      // Neues Laufwerk ermitteln
      neues_lw := '0';
      Laufwerksliste_bauen(zw_lw_liste);
      // folgende Codezeile rausschmeißen, wenn final
      For i := 0 to 25 do ListBox2.Items.Add(zw_lw_Liste[i].lw + Drivetype(i));

      For i := 0 to 25 do
        Begin
        If lw_liste[i].lw <> zw_lw_liste[i].lw then
          Begin
          Neues_lw:= zw_lw_liste[i].lw;
          messagedlg('Neues Laufwerk ' + Neues_lw + ':\ erkannt!',mtinformation,[mbok],0);
          Laufwerksliste_bauen(lw_liste);
          LW_Gefunden := true;
          End;

        //Wenn beide Listen gleich sind, ist eines der CD-Rom`s betroffen
          // und jede Menge weiteres blabla...

      End;


    End;


  if Message.wParam = DBT_DEVICEREMOVECOMPLETE then
    Begin
      //Laufwerksliste nach Änderung neu aufbauen
      Laufwerksliste_bauen(LW_Liste);
      neues_lw := '0';
      Messagedlg('Ding wech...',mtConfirmation, [mbok],0);
    End;




  Result := False;
end; // of function



procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
    groesse : integer;
    buffer : PChar;
begin
    Application.HookMainWindow(ApplicationWndProcHook);
    Laufwerksliste_bauen(LW_Liste);
    // Windowsdirectory ermitteln
    WindowsDir := SysUtils.GetEnvironmentVariable('windir');
    // do something more...
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.UnhookMainWindow(ApplicationWndProcHook);
end;

end.
[edit=MrSpock]Delphi Code Tags gesetzt. Mfg, MrSpock[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#7

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 12:53
Zitat von Sunlight7:
Zitat von Sherlock:
Mal eine Gegenfrage: Hast Du eine Applikation gesehen, die soetwas kann?

Sherlock
Japp, Das Backupprogramm von Microsoft in DOS Zeiten konnte das...
Das hat aber auch das Laufwerk gepollt bzw. in regelmäßigen Abständen testweise draufzugegriffen

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 13:13
Anders geht es nur mit einem MAC-Laufwerk, das weiterleitet, wenn eine Diskette eingelegt wird.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Hennes_RldPf

Registriert seit: 23. Mär 2009
Ort: Grafschaft
4 Beiträge
 
Delphi 7 Professional
 
#9

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 13:48
Ok...ich lass diese Thema nochmal auf..vielleicht kommt ja noch jemand mit einer geschickten hintertür aus dem Busch...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Windows-Ereignis "Diskette eingelegt"

  Alt 25. Mär 2009, 18:25
Zitat von Sherlock:
Zitat von Sunlight7:
Zitat von Sherlock:
Mal eine Gegenfrage: Hast Du eine Applikation gesehen, die soetwas kann?

Sherlock
Japp, Das Backupprogramm von Microsoft in DOS Zeiten konnte das... :mrgreen:
Das hat aber auch das Laufwerk gepollt bzw. in regelmäßigen Abständen testweise draufzugegriffen ;)

Sherlock
Wenn ich mich richtig erinnere war das Bios schuld daran. Es gab da meiner Erinnerung nach eine Signalleitung "Laufwerkverriegelt" (für 5,25") und dann wurde automatisch der erste Sektor gelesen. Wenn der ein Bootsektor war, wurde die Kiste brutal neu gestartet.
"Schuld" daran war die ursprüngliche Auslegung des IBM-PC als "Disketten-Rechner".

Es könnte sein, daß unter IOControl (MediaChange) noch etwas zu finden ist, aber offiziell sollte da nichts mehr existieren.

Gruß
K-H

Pardon vertan!
Das mit dem automatischen Booten war ein Spezialfeature in einem Laborrechner. Der normale IBM-PC bootete erst mit dem Affengriff.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz