Author: William Gerbert
Control the AutoPlay feature
Answer:
You know how to stop Windows' [CD-ROM] AutoPlay from occurring by holding SHIFT or
by changing Windows settings.
Here's how to detect whether an AutoPlay is about to occur from your application
and then either allowing or stopping it.
We're going to ask Windows to send us a message when the AutoPlay is about to
occur. In order to catch this message, first of all we have to override our default
Windows message handler -- "WndProc()."
You can do this by inserting the following code in your form's (named "Form1" for
example) public declarations section:
MsgID_QueryCancelAutoPlay: Word;
procedure WndProc(var Msg: TMessage); override;
Now, type in the following code in the "implementation" section (again, assuming
that your form is named "Form1") to actually handle the Windows messages. As you
can see, we're only interested in catching "QueryCancelAutoPlay" messages, so we'll
let the default (or the inherited) "WndProc()" handle all other messages.
1 procedure TForm1.WndProc(var Msg: TMessage);
2 begin3 if Msg.Msg = MsgID_QueryCancelAutoPlay then4 begin5 { set Msg.Result6 to 1 to stop AutoPlay or7 to 0 to continue with AutoPlay }8 Msg.Result := 1;
9 end10 else11 inherited WndProc(Msg);
12 end;
Finally, we have to ask Windows to actually send a "QueryCancelAutoPlay" message to
our message handler by inserting the following code in the "FormCreate()" event
(click on your form, go to the "events" tab in the "Object Inspector" and double
click on "Create"):
MsgID_QueryCancelAutoPlay := RegisterWindowMessage('QueryCancelAutoPlay');