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:
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; |
procedure TForm1. WndProc( var Msg : TMessage ); begin if( MsgID_QueryCancelAutoPlay = Msg.Msg )then begin // set Msg.Result // to 1 to stop AutoPlay or // to 0 to continue with AutoPlay Msg.Result := 1; end else inherited WndProc( Msg ); end; |
MsgID_QueryCancelAutoPlay := RegisterWindowMessage( 'QueryCancelAutoPlay' );