Juu, oiskohan kenelläkään tietoa siitä miten koneen voi sammuttaa ohjelmalla turvallisesti? Ja miten rebootattaa? Tossa koodia:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal _ dwReserved As Long) As Long Const EWX_LOGOFF& = 0 'loggaa pois Const EWX_FORCE& = 4 'terminoi kaikki prosessit ja lokkaa pois Const EWX_REBOOT& = 2 'reboottaa Const EWX_SHUTDOWN& = 1 'sammuttaa Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Häivytään: ExitWindowsEx (EWX_REBOOT, 0) 'Tai joku muu häippäsytyyli End Sub
Oliko tässä siis joku kysymys vai vaan esimerkkikoodi muiden ihailtavaksi?
En ole testannut koodia, mutta eikös tietokone sammu turvallisesti silloin kun se alkaa sulkemaan prosesseja yksitellen. Sillä, jos näyttö sammuu (menee valmiustilaan) heti, niin kyseessä ei ole turvallinen sammutus.
Grez: Koodia josta voi värvätä jotain.
Asennusohjelmanhan olisi hyvä kysyä, halutaanko tietokone uudelleenkäynnistää heti. Ja senhän periaatteessa pitää osata uudelleenkäynnistää se tietokone.
Onhan siinäkin ideaa että vain terminoi prosesseja yksitellen.
No jos nyt kysymys on että miten voi sammuttaa tai rebootata turvallisesti, niin to koodihan tekee sen kysytyn reboottaamisen. Jos halutaan sammuttaa niin rebootin tilalle EWX_SHUTDOWN. Ja jos haluaa pakottaa nekin prosessit sammumaan, jotka ei halua sammua (esim. tallentamattomia töitä ja odottaa käyttäjältä vastausta) niin voi laittaa lisäksi tuon lipun EWX_FORCE.
En oikein edelleenkään löydä mitään kysymystä, johon ei olisi jo vastausta.
En kuitenkaan uskalla oikein kokeilla(en tietystikkään halua kenenkään kokeilevan)
koska ei ole vielä omaa konetta. Sitten kun saan joskus syksyllä niin ehkä voin kokeilla...
Miten sinä voit koodata, josset uskalla ajaa mitään tekemääsi ohjelmaa? Vai johtuuko tämä epävarmuus siitä, että olet ns. copy-paste-koodari eli kopioit vain muiden putkalaisten "neuvomia" pätkiä, etkä oikeastaan osaa itse koodata mitään? Siinä tapauksessa sinun täytyy vain ottaa manuaali käteen ja alkaa lukea.
Ei, siis tätä en vain viitsi kokeilla. Kyllä se varmaan yhellä Win 98 koneella hoituu.
Onkohan sinulla jokin syy siihen, miksi koet tämän niin vaaralliseksi, ettet uskalla sitä ajaa? Kaikelle tulisi olla jokin järkiperäinen syy, ja tälle fobiallesi ei oikein sellaista ole. Jos pelkäät yllättävää resettiä, niin koneesta voi nyppäistä vaikka töpselin irti kesken käytön, eikä mitään vahinkoa tapahdu.
Niin, tuo koodihan olisi sellaisenaan käytännössä sama kuin kirjoittaa komentoriville
shutdown -r -t 0
Eikä siitä mitään kummallista tapahdu.
Mutta ajan sen silti vasta omalla koneella. Ja en ole copy-paste-koodari, vaikka käytänkin muita koodinpätkiä hyväksi. Ja muutenhan en osaisi mitään jos en opettelisi mitään!
ErroR++: Mikä on pahinta, mikä tämän koodin ajamalla vois tapahtua?
En tiedä, ehkä jotakin. Mutta silti en aja sitä kun vasta omalla koneella.
Ymmärrän tuskasi, kokeilin piruuttani koodia ja Winukka sammui. Sitten painoin virtanappulaa ja täällä taas ollaan. No problemo!
P.S. Testiä EI SUORITETTU omalla koneella
Suosittelen, että koodaat vain sellaisia asioita, joita uskallat ajaa. Tuollaisessa hölmöilyssä ei ole mitään järkeä.
Kysyin vain, jos joku olisi jotain parempaa tietänyt. Mutta eipä taida olla parempaa (enkä nyt keneltäkään enää kysele mitään!).
Melkein aina ajan tai edes koeajan tekemäni koodit.
ErroR++ kirjoitti:
Kysyin vain, jos joku olisi jotain parempaa tietänyt.
Millä tavalla parempaa? Koodi tekee täsmälleen sen mitä pyydätkin. Jos haluat jotain parempaa, niin voisit kertoa mitä ne haluamasi parannukset ovat.
Ei mitään nyt enää! Paitsi ainut minkä vielä haluaisin tietää on se että mikäs Const on numeroltaan 3? Esim. kun oli ne
Const EWX_LOGGOF = 0', Const EWX_SHUTDOWN = 1 ', Const EWX_REBOOT = 2 ', Const joku = 3 'ja Const EWX_FORCE = 4 '.
niin mikä se 3 on?
3 on EWX_REBOOT + EWX_SHUTDOWN. Lienee aika helppoa havaita, että se ei ole järkevä, koska vain jompi kumpi voidaan tehdä kerrallaan. Veikkaan että jos sitä käyttäisi, niin tapahtuisi jompi kumpi tai tulisi virheilmoitus.
Ja tosiaan tuolla koodissasi olit kirjoittanut kommentiksi 4:lle "terminoi kaikki prosessit ja lokkaa pois". Mielestäni hivenen epätarkka ilmaisu. Mielestäni korrektimpi olisi, että "Pakottaa vastaanhangoittelevatkin ohjelmat sulkeutumaan", koska mikä tahansa noista terminoi kaikki prosessit sikäli kun prosessit ei pistä hanttiin. Lisäksi sitä voi käyttää logoffin lisäksi muidenkin kanssa, esim EWX_REBOOT+EWX_FORCE käynnistää uudelleen terminoiden väkisin.
Parametrit löytyvät täältä.
Tuolta löytyy linkkejä muihinkin koneen sammuttamista koskeviin dokumentteihin.
Huomaa että konetta ei sammuteta tuolla EWX_SHUTDOWN parametrilla, vaan EWX_POWEROFF parametrilla.
Vitsi!!!
Se ihme söpöteema tuli taas!!!
ÄRSYTTÄVÄ!
Aihe on jo aika vanha, joten et voi enää vastata siihen.