Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Timer *VB*

Sivun loppuun

Jarkko [02.08.2002 19:38:59]

#

Elikkäs kuinka saan joka tunti kuulumaan beep. Ja sit sen kuvan sais tonne mis toi kello on.

HtH [02.08.2002 20:07:57]

#

joka tunti saat kuuluumaan beep helposti:
alku = TIMER
DO
if timer - alku > 3600 THEN alku = TIMER: beep
DoEvents
LOOP

Siis sais minkä kuvan sinne?

Zorro [02.08.2002 20:24:30]

#

Taitaa Jarkko meinata että miten saa pienennettyy ohjelman järjestelmäpalkkiin(SysTray).
Samaa on tullut itsekkin mietittyä???

thefox [02.08.2002 20:25:43]

#

Muutamalla API-kutsulla hoituu.. kai joku voisi tuostakin vääntää koodivinkin.

Jarkko [03.08.2002 11:26:44]

#

Ootko HtH varma et toi on VB:lle. Ei nimitäin toimi.

Pekka Kauppila [03.08.2002 21:17:18]

#

Muuten se toimii, mutta tuo komento "beep" ei näy oikein toimivan kaikilla koneilla tai jotain. Kokeile vaikka vaihtaa tuon beep komennon tilalle jotain muuta niin näet koodin toimivan täysin oikein.

Kannattaa katsoa tieto noista API-kutsuista vaikka osoitteesta http://www.allapi.net/ tai no pitäisi VB:n mukanakin tulla jotain tieto noista.

vipemype [03.08.2002 22:01:20]

#

Tuo beep ei toimi välttämättä sen takia jos tuo ääni tulee piipperistä. Ainakin QB:ssä beep komento tuottaa äänen piipperistä.

Jarkko [05.08.2002 13:47:50]

#

Kyl mun piipperi toimii. Ja on toi beep käsky ennen toiminu.

(nimetön) [14.08.2002 17:22:18]

#

Tässä toimiva lähdekoodi, joka toimii VB:käyttäen yhtä form-objektia (Form1) ja Timer-objektia (Timer1).

Form-objekti menee piiloon Form_Load eventissä komennolla Me.Hide

SysTray ikonin eventit ovat Form_MouseMove eventissä (poista kommentit niin saat lomakkeen tulemaan esiin kaksois-näpäytyksellä)

Private iCnt
Private Type NOTIFYICONDATA
        cbSize As Long
        hwnd As Long
        uId As Long
        uFlags As Long
        uCallBackMessage As Long
        hIcon As Long
        szTip As String * 64
End Type
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const WM_LBUTTONDBLCLK = &H203   'Double-click
Private Const WM_LBUTTONDOWN = &H201     'Button down
Private Const WM_LBUTTONUP = &H202       'Button up
Private Const WM_RBUTTONDBLCLK = &H206   'Double-click
Private Const WM_RBUTTONDOWN = &H204     'Button down
Private Const WM_RBUTTONUP = &H205       'Button up
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim nid As NOTIFYICONDATA

Private Sub Form_Load()
    Timer1.Interval = 1000
    If App.PrevInstance = False Then
        nid.cbSize = Len(nid)
        nid.hwnd = Form1.hwnd
        nid.uId = vbNull
        nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        nid.uCallBackMessage = WM_MOUSEMOVE
        nid.hIcon = Form1.Icon
        nid.szTip = "Ohjelma" & vbNullChar
        Shell_NotifyIcon NIM_ADD, nid
    End If
    bRState = False
    Me.Hide
End Sub

Private Sub Form_Unload(Cancel As Integer)
  'Ok now this is the time to remove the icon from systray
  Shell_NotifyIcon NIM_DELETE, nid
  End
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim lMsg As Long
   Dim sFilter As String
   lMsg = X / Screen.TwipsPerPixelX
   Select Case lMsg
   'you can play with other events as I did as per your use
      Case WM_LBUTTONDOWN
      Case WM_LBUTTONUP
      Case WM_LBUTTONDBLCLK
      'Form1.WindowState = vbNormal
      'Form1.Show
      Case WM_RBUTTONDOWN
      Case WM_RBUTTONUP
      Case WM_RBUTTONDBLCLK
   End Select
End Sub

Private Sub Timer1_Timer()
    If iCnt = 60 * 60 Then
        iCnt = 0
        Beep
    Else
        iCnt = iCnt + 1
    End If
End Sub

Sivun alkuun

Vastaus

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

Tietoa sivustosta