Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Turvallinen sammutus

Sivun loppuun

ErroR++ [18.06.2011 19:13:35]

#

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

Grez [18.06.2011 20:11:34]

#

Oliko tässä siis joku kysymys vai vaan esimerkkikoodi muiden ihailtavaksi?

Petja [18.06.2011 20:22:07]

#

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.

ErroR++ [19.06.2011 12:59:40]

#

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.

Grez [19.06.2011 14:58:30]

#

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.

ErroR++ [19.06.2011 16:33:46]

#

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...

The Alchemist [19.06.2011 19:19:28]

#

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.

ErroR++ [19.06.2011 20:14:18]

#

Ei, siis tätä en vain viitsi kokeilla. Kyllä se varmaan yhellä Win 98 koneella hoituu.

The Alchemist [19.06.2011 20:37:02]

#

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.

Grez [19.06.2011 20:59:49]

#

Niin, tuo koodihan olisi sellaisenaan käytännössä sama kuin kirjoittaa komentoriville

shutdown -r -t 0

Eikä siitä mitään kummallista tapahdu.

ErroR++ [20.06.2011 13:38:42]

#

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!

Blaze [20.06.2011 14:26:28]

#

ErroR++: Mikä on pahinta, mikä tämän koodin ajamalla vois tapahtua?

ErroR++ [20.06.2011 14:46:09]

#

En tiedä, ehkä jotakin. Mutta silti en aja sitä kun vasta omalla koneella.

Petja [20.06.2011 15:34:13]

#

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

Metabolix [20.06.2011 15:42:20]

#

Suosittelen, että koodaat vain sellaisia asioita, joita uskallat ajaa. Tuollaisessa hölmöilyssä ei ole mitään järkeä.

ErroR++ [20.06.2011 15:52:45]

#

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.

Torgo [20.06.2011 16:19:43]

#

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.

ErroR++ [20.06.2011 16:39:17]

#

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?

Grez [20.06.2011 16:48:12]

#

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.

Torgo [20.06.2011 16:54:58]

#

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.

ErroR++ [20.06.2011 17:04:32]

#

Vitsi!!!
Se ihme söpöteema tuli taas!!!
ÄRSYTTÄVÄ!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta