Button + Accelerator + ShowWindow(SW_HIDE) – EnableWindow(FALSE) = Falle
Da hat man einen Multifunktionalen Dialog. Einer der Schalter in dem Dialog heißt Delete. Und das D ist als Accelerator mit einem & versehen. Gemäß einer internen Rechteverwaltung haben manche Nutzer nicht das Recht diesen Button zu benutzen. Der Programmierer (nicht ich
) hat in diesem Fall einfach den Schalter mit ShowWindow(SW_HIDE) verborgen. Ein weiterer Test ob die Rechte wirklich gegeben sind entfiel im OnBtDelete Handler.
Nun stellte sich aber heraus, dass es manche Nutzer geschafft haben, dennoch Einträge zu löschen.
Nun der Grund ist einfach. Solange der Button nicht mit EnableWindow(FALSE) auch disabled wird, kann man mit ALT+D, also Drücken der ALT-Taste und des Accelerators diesen Schalter auslösen.
Jo. So einfach hat man ein Userinterface gebastelt, mit dem man sich hereinlegen kann.
1 Kommentar zu “Button + Accelerator + ShowWindow(SW_HIDE) – EnableWindow(FALSE) = Falle”
Link für diesen Beitrag | RSS-Feed zu diesem Beitrag
Hinterlassen sie einen Kommentar:
Beachten sie bitte, dass Kommentare evtl. nicht sofort hier erscheinen. Die Kommentare werden zur Moderation an den Webmaster gesendet. Es kann also etwas dauern, bis Ihr Kommentar hier veröffentlicht wird!
on Do 14 Aug 2008 um 19:20 # Martin’s Blog » Acceleratoren in Dialogen für Felder ohne Prompt bzw. Static Control
[...] Man kann das Static Control an die korrekte Stelle in der Z-Order platzieren und dann einfach auf “Invisible” setzen. Der Accelerator funktioniert trotzdem. Nur Statics, die disabled sind werden als Acceleratoren ignoriert. Das Acceleratoren auch für nicht sichtbare Controls funktionieren habe ich bereits in diesem Artikel Button + Accelerator + ShowWindow(SW_HIDE) – EnableWindow(FALSE) = Falle erwähnt. [...]