Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Message abfangen - AutoRun verhindern (https://www.delphipraxis.net/45435-windows-message-abfangen-autorun-verhindern.html)

Mr_G 6. Mai 2005 10:31


Windows Message abfangen - AutoRun verhindern
 
Im Moment schreibe ich an einem Proggi bei dessen Ausführung auf keinen Fall ein Autorun laufen darf. Ich habe mich zu diesem Zweck etwas umgesehen und habe da etwas in der MSDN gefunden. Um den Autorun zu unterbinden gibt es 2 möglichkeiten: Einen Registry-Eintrag schreiben oder eine Windows Message abfangen.
Ich würde gerne letzteres nutzen, da ich leider nicht sicher sein kann das mein Proggi immer Adminrechte hat.
Meine frage nun: Wie setze ich den Beispielcode aus der MSDN in Delphi um?

Danke im Vorraus
Mr_G

chrisw 6. Mai 2005 11:33

Re: Windows Message abfangen - AutoRun verhindern
 
Schau mal hier

Mr_G 6. Mai 2005 11:57

Re: Windows Message abfangen - AutoRun verhindern
 
Vielen Dank! :hello: Genau das was ich suchte! :dp:

gothic_mike 7. Mai 2005 11:58

Re: Windows Message abfangen - AutoRun verhindern
 
Moin,

Zitat:

Zitat von chrisw

hab ich mir auch gerade mal angesehen, funktioniert irgendwie nicht, wenn das fenster nicht das aktive fenster ist, weis vielleicht jemand, wie man das machen könnte, das es auch bei inaktivem fenster funktioniert?

Christian Seehase 7. Mai 2005 12:40

Re: Windows Message abfangen - AutoRun verhindern
 
Moin Mike,

ich habe mir das mal angeschaut, und komme zu dem Schluss, dass das genannte Problem eigentlich nicht auftreten kann.
Wie hast Du es denn implementiert?

gothic_mike 8. Mai 2005 09:54

Re: Windows Message abfangen - AutoRun verhindern
 
Moin,

Zitat:

Zitat von Christian Seehase
Moin Mike,

ich habe mir das mal angeschaut, und komme zu dem Schluss, dass das genannte Problem eigentlich nicht auftreten kann.
Wie hast Du es denn implementiert?


also, ich hab das eigentlich so gemacht, wie es beschrieben war:

Delphi-Quellcode:
...
  public
    { Public-Deklarationen }
    MsgID_QueryCancelAutoPlay: Word;
    procedure WndProc(var Msg: TMessage); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WndProc(var Msg: TMessage);
begin
  if (MsgID_QueryCancelAutoPlay = Msg.Msg) then
  begin
    if RadioButton_Off.Checked then
      Msg.Result := 0  // stop AutoPlay
    else
      Msg.Result := 1; // continue with AutoPlay
  end else
    inherited WndProc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MsgID_QueryCancelAutoPlay := RegisterWindowMessage('QueryCancelAutoPlay');
end;
...
wenn meine Form aktiv ist, funktioniert es auch wunderbar, ist meine Form aber inaktiv oder gar minimiert funktionierts nicht...

Mr_G 8. Mai 2005 17:21

Re: Windows Message abfangen - AutoRun verhindern
 
Zitat:

Zitat von gothic_mike
wenn meine Form aktiv ist, funktioniert es auch wunderbar, ist meine Form aber inaktiv oder gar minimiert funktionierts nicht...

Das liegt daran das Windows diese Message nur dem Fenster sendet das gerade im Vordergrund läuft.

Zitat:

Zitat von MSDN
... Your application must be running in the foreground window...

Ich habe 3 Möglichkeiten gefunden das Autoplay trozdem zu verhindern:
1. Explorer abschießen (Taskbar und Destop verschwinden auch...)
2. mit einem Timer abfraen ob das Form im Vordergrund ist (hab da mal irgendwas im Forum gesehen...)
3. wie in der MSDN einen Registry-Eintrag schreiben und den Explorer neustarten

gothic_mike 9. Mai 2005 12:43

Re: Windows Message abfangen - AutoRun verhindern
 
Zitat:

Zitat von Mr_G
Das liegt daran das Windows diese Message nur dem Fenster sendet das gerade im Vordergrund läuft.

Zitat:

Zitat von MSDN
... Your application must be running in the foreground window...


das ist bissel bumm, weil, wollte mir ein kleines Programm basteln, was im Tray sitzt, wo ich das an/ab-stellen kann...

Zitat:

Zitat von Mr_G
Ich habe 3 Möglichkeiten gefunden das Autoplay trozdem zu verhindern:
1. Explorer abschießen (Taskbar und Destop verschwinden auch...)
2. mit einem Timer abfraen ob das Form im Vordergrund ist (hab da mal irgendwas im Forum gesehen...)
3. wie in der MSDN einen Registry-Eintrag schreiben und den Explorer neustarten

ist nicht so praktisch, wenn man keine schreibrechte auf die Reg-Keys hat und den explorer abschiessen ist auch nicht so die gute methode...

es muss doch eine methode geben, wie man trotzdem an die message rankommt und das autoplay unterbinden kann...

NicoDE 9. Mai 2005 12:52

Re: Windows Message abfangen - AutoRun verhindern
 
Zitat:

Zitat von gothic_mike
es muss doch eine methode geben, wie man trotzdem an die message rankommt und das autoplay unterbinden kann...

Es muss gar nichts :)
Eine Möglichkeit wäre ein systemweiter Hook - aber ist eigentlich zuviel Arbeit. BTW, Registry-Rechte dürften kein Problem sein, da viele Schlüssel/Werte auch unter HKCU stehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz