Delphi - CD autorun funkciójának figyelése, tiltása programból

forráskód letöltése
Egy kis trükk segítségével megkérhetjük a Windows-t, hogy szóljon a programunknak, mikor a felhasználó egy olyan CD lemezt helyez a gépbe, melyen automatikusan induló program van.

Azon kívül, hogy keletkezik egy esemény, melyben értesítést kap a programunk fenti eseményről, még arra is lehetőségünk van, hogy engedélyezzük, vagy letiltsuk ennek a programnak az indulását. A cél érdekében az elvégzendő trükk a következő: mivel a Windows nem küld minden programnak ilyen üzenetet, ezért a RegisterWindowMessage függvénnyel regisztráltatnunk kell a programunk részére a QueryCancelAutoPlay üzenetet.

A RegisterWindowMessage visszatérési értékként adja meg azt a számot, mellyel a későbbiek folyamán azonosíthatjuk a QueryCancelAutoPlay üzenetet.

Ezek után már csak figyelnünk kell, hogy programunkhoz mikor érkezik ilyen üzenet. Ehhez felülírjuk a WndProc ablakkezelő eljárást. Ezen belül pedig minden hívásnál ellenőrizzük, hogy nem a várt üzenetet kaptuk-e, ha igen, akkor a kapott Message változó Result mezőjének a megfelelő értéket adva szabályozhatjuk, hogy a Windows elindíthatja-e a CD-n lévő automatikusan induló programot vagy sem.

Ha nem a várt üzenet jön, akkor ne feledkezzünk meg róla, hogy az inherited hívásával meghívjuk az eredeti WndProc eljárást az üzenetek feldolgozása érdekében.