Eli koodasin pienen ohjelman Visual Studio 2002:lla ja nyt kaipaisin vielä koodia millä estää ALT+F4:n ja tehtävienhallinnan käyttö ohjelman sammuttamiseen, koska ohjelmassa on Exit-näppäin joka kysyy salasanaa ??? Muuten ei Exitistä ja salasanasta ole paljon hyötyä !!!
Prosessin tappamista tehtävänhallinnasta et voi estää. Applications-välilehdeltä saat sen piiloon (VB6:ssa App.TaskVisible = False), mutta Processes-lehdeltä et.
Alt+F4:n voit estää (ainakin VB6:ssa) disabloimalla otsikkorivin ruksin (Form.ControlBox = False).
ControlBoxin poistaminen ei estä Alt+F4:sta VB.Netissä.
Sen sijaan prosessin sammuttamisen tehtävienhallinnasta voit estää tappamalla tehtävienhallinnan, muutoin aika hankalaa...
Laita salasanan kysyminen formin Closing -tapahtuma-aliohjelmaan.
VB.NETin ohjeessa väitetään:
Form.ControlBox Property [Visual Basic] kirjoitti:
Note If your form does not display a control box, the form is not able to close using the ALT+F4 keyboard combination.
Mutta näköjään ohjelma silti sulkeutuu.
Laita Exit-napin taakse joku boolean, joka on formin tasolle määritelty (eli "globaali" formin tasolla)
Sitten formin Closing-tapahtumaan tutkit tuon booleanin, jotta tiedät yritetäänkö poistamista exit-napin takaa. Jos ei, eli halutaan perua poistuminen, asetat vain:
e.Cancel = True
Voithan tehdä toisen ohjelman joka tarkkailee onko se toinen ohjelma käynnissä. Alt + f4 voi toki estää mutta ei tehtävienhallinnasta prosessin tappoa.
formin unloadiin: cancel = true
kuten jo mainittiinkin.
Niin jos prosessin tapon haluaa estää niin silloin ei käyttäjää saisi lainkaan päästää tehtävienhallintaan, ja se taitaisi vaatia windowsin käyttäjäasetusten muokkausta, joku windows-guru varmaan osaisi antaa siitä hyvän ohjeen.
Jooh, eräässä koulussa ainakin on oppilaiden tunnuksilta estetty pääsy tehtävienhallintaan, kokoruudun always-on-top goatse naamioituna Quaken executableksi aiheutti siellä kuulemma pientä hämmennystä >:)
Taitaisi onnistua seuraavalla rekisterikikalla, löysin osoitteesta: http://www.winguides.com/registry/display.php/
Ja itse kikka:
lainaus:
Open your registry and find the key below. Create a new DWORD valued named "DisableTaskMgr" and set it to "1" to disable Task Manager. You may need to log off for the changes to take effect.
ja toisin sanoen:
User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ System] Value Name: DisableTaskMgr Data Type: REG_DWORD (DWORD Value) Value Data: (0 = default, 1 = disable Task Manager)
Tulee ihan mieleen yhden tyypin tekemä (tai oikeastaan kopioima, hän kopioi kaikki lähdekoodit ja yhdisti ne) Visual Basic 6-ohjelma joka väänsi ruudun 320x200-resoluutiolle ja tivasi salasanaa. Sen jälkeen jos salasana oli väärä, prosessi toistui, ja jos oikea, niin resoluutio meni ennalleen ja ohjelma sulkeutui. Kerran siinä oli pieni bugi, ja resoluutio jäi siihen tilaan ohjelman päätyttyäkin. :D
while(1) { HWND taskmgrhwnd = FindWindow(NULL, "Tehtävienhallinta"); if(taskmgrhwnd!=NULL) CloseWindow(taskmgrhwnd); }
tuohan olikin hyvä, tapetaan Tehtävienhallinta ennenkuin se tappaa meidät =)
esakom kirjoitti:
tuohan olikin hyvä, tapetaan Tehtävienhallinta ennenkuin se tappaa meidät =)
Jota ehdotin jo aiemmin :)
No, harald, mitenkäs projekti etenee?
Aihe on jo aika vanha, joten et voi enää vastata siihen.