Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: ajastin ohjelma

Sivun loppuun

sami_jokimies [04.05.2004 10:34:47]

#

olen vastaalkaja ja olen tekemässä seuraavanlaista ajastin ohjelmaa...

kun windows käynnistyy, samalla käynnistyy myös ajastin joka tulee päällimmäiseksi ikkunaksi ilman otsikkopalkkia näytön vasempaan yläreunaan, ajastin ei näy tehtäväpalkissa. kun ajastimessa oleva aika on kulunut loppuun, tulee näytön keskelle ikkuna päällimmäiseksi ilman otsikkopalkkia ja joka ei näy tehtäväpalkissa. tässä ikkunassa on myös ajastin jonka kuluttua kone sammuttaa itsensä... ennen kuin tämä ikkuna aukeaa se syöttää cd aseman kelkan ulos ja sisään huomautukseksi...

tässä on ohjelman koodia:

ajastin.frm

Option Explicit
Dim aktivointiaika
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Sub Form_Load()
    SetWindowPos frmajastin.hwnd, -1, 0, 0, 0, 0, 3
    frmajastin.Left = 0
    frmajastin.Top = 0
    If Time >= (Time + #12:00:30 AM#) Then
        frmaktivointi.Show
        BeginPlaySound 1
        tmraktivointi.Enabled = False
    Else
        aktivointiaika = Time + #12:00:30 AM#
    End If
End Sub
Private Sub tmraktivointi_Timer()
    Static aktivointi As Integer
    If lblaika.Caption <> CStr(Time) Then
        If Time > aktivointiaika And Not aktivointi Then
            frmaktivointi.Show
            BeginPlaySound 1
            aktivointi = True
            tmraktivointi.Enabled = False
        ElseIf Time < aktivointiaika Then
            aktivointi = False
            lblaika.Caption = CDate(aktivointiaika - Time)
        End If
End If
End Sub

aktivointi.frm

Option Explicit
Dim nopassword
Dim salasana
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLenght As Long, ByVal hwndCallback As Long) As Long
Private EWX_SHUTDOWN As Integer
Private Sub Form_Load()
    SetWindowPos frmaktivointi.hwnd, -1, 0, 0, 0, 0, 3
    frmaktivointi.Left = (Screen.Width - frmaktivointi.Width) / 2
    frmaktivointi.Top = (Screen.Height - frmaktivointi.Height) / 2
    Dim X As Long
    X = mciSendString("Set CDAudio Door Open", "", 0, 0)
    X = mciSendString("Set CDAudio Door Closed", "", 0, 0)
End Sub
Private Sub tmrlaskuri_Timer()
    Static laskuri
    If lbllaskuri.Caption = 0 Then
        tmrlaskuri.Enabled = False
        ExitWindowsEx EWX_SHUTDOWN, 1
        Unload Me
        End
    End If
    BeginPlaySound 1
    If laskuri Then
        lbllaskuri.Caption = lbllaskuri.Caption - 1
        laskuri = Not laskuri
    Else
        lbllaskuri.Caption = lbllaskuri.Caption - 1
        laskuri = Not laskuri
    End If
End Sub

ajastin.bas

Option Explicit
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As Any, ByVal uFlags As Long) As Long
Global Const SND_ASYNC = &H1
Global Const SND_NODEFAULT = &H2
Global Const SND_MEMORY = &H4
Global SoundBuffer As String
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Sub BeginPlaySound(ByVal ResourceId As Integer)
    Dim Ret As Variant
    SoundBuffer = StrConv(LoadResData(ResourceId, "AJASTIN"), vbUnicode)
    Ret = sndPlaySound(SoundBuffer, SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY)
End Sub

ohjelmaan pitäisi tehdä seuraavanlaisia lisäyksiä:
ohjelman ollessa käynnissä ei sitä pysty mitenkään sammuttamaan, jos tietokoneen sammuttaa ja käynnistää uudelleen niin ajastimessa oleva aika jatkuu siitä mihin se jäi kun kone tai ohjelma sammui ja ainoastaan kun päivä vaihtuu niin ajastimen aika resetoituu...

VINKKEJÄ JA KOODIA TULEMAAN!!!

sooda [04.05.2004 12:30:09]

#

Pistä ensiksi koodivb-tagit jotta tota voisi ehkä ainakin melkein lukea. Kai muistit sisentää?

Antti [04.05.2004 13:08:29]

#

Katsoppa koodivinkeistä tekemääni pilailu ohjelmaa... olet ilmeisesti tekemässä samaa ohjelmaa.

hunajavohveli [04.05.2004 15:16:19]

#

Oijoi, sisennä ihmeessä. Tuollaista koodia on aika häijy lukea. Saisi paremmin selvää, ja ymmärtäisi ehkä, mikä on ongelmana.

sami_jokimies [05.05.2004 09:51:34]

#

eikun olen tekemässä ohjelmaa minkä käynnistyttyä siinä oleva aika alkaa kulua ja sen päätyttyä järjestelmä sammuu (ennen sammumista cd asema syöttää levyn pihalle ja tiedostojen tallennusaikaa on 15 sekuntia) jos järjestelmän sammuttaa kun aikaa on vielä jäljellä ajastimessa ja käynnistää myöhemmin uudestaan ajastin jatkaa siitä ajasta mihin se jäi kun järjestelmä sammutettiin...

sooda [05.05.2004 11:12:24]

#

Tiedot voi tallentaa vaikka tiedostoon, siitä löytyy täältä paljon keskustelua, haku on ystäväsi. Koodivinkkejäkin on toki tästä. EiVoiSammuta systeemin voi tehdä vaikka siten että laitat form_unloadiin käskyn vaikka shellillä että käynnistetään samainen ohjelma tyyliin shell(app.path & "\" & app.exename & ".exe").

sami_jokimies [05.05.2004 12:46:52]

#

olen laittanut tiedot tiedostoon, mutta kun käynnistän koneen niin ajastimessa kulunut aika on niin sanotusta kulkenut koneen ollessa pois päältä... miten saan ajan jatkumaan siitä hetkestä kun koneen on sammuttanut, jos aikaa jäljellä???

sami_jokimies [05.05.2004 12:47:37]

#

miten pystyn muokkaamaan viestiäni?? ylhäällä oleva muokkaa ei ole käytössä?

Olga [05.05.2004 12:50:47]

#

ohjeet kirjoitti:

Voit muokata viestejä jälkikäteen jokaisen viestin yläreunasta olevasta Muokkaa-linkistä. Samasta paikasta löytyy myös mahdollisuus viestin poistamiseen. Muokkaus ja poisto ovat käytettävissä puolen tunnin ajan viestin lähettämisestä. Tämän jälkeen viesti jää pysyvästi palvelimelle.

Mut jos tarkoitit tuota viestiä, jonka kirjoitit juuri ennen seuraavan lähettämistä, niin sit en tiä missä mättää.


Sivun alkuun

Vastaus

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

Tietoa sivustosta