Avatar billede vb_begynder Nybegynder
16. februar 2006 - 10:41 Der er 5 kommentarer og
1 løsning

vb timer stopper

Hej

Jeg skal bruge en timer, der ikke stopper når jeg der åbnes en anden dialogbox...

Som det ses at min kode har jeg både prøvet med vb timer og en api timer men de stopper begge to ved linien "Send = FaxDoc.Send()"

nogen der kan hjælpe......

----------- modul ------------
Option Explicit
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long


Public Sub MyTimer(hwnd As Long, msg As Long, idTimer As Long, dwTime As Long)
Static i As Integer

    i = i + 1
    Form1.TimerLabel.Caption = Format$(i)
End Sub


------------- form -----------------------------

Option Explicit

Private TimerID As Long

Private Sub cmd_SendFax_Click()
    Dim Send As Integer
    Dim FaxServ As FAXCOMLib.FaxServer
    Dim FaxDoc As FAXCOMLib.FaxDoc
   
    Dim RetVal As Long
    Dim TS As String

    TS = String(100, " ")
    RetVal = GetComputerName(TS, 100)
    TS = Left(TS, InStr(1, TS, Chr(0)) - 1)

    Set FaxServ = New FAXCOMLib.FaxServer
    FaxServ.Connect (TS)
    Set FaxDoc = FaxServ.CreateDocument("C:\fax.tiff")
    FaxDoc.FileName = "c:\fax.html"
    FaxDoc.FaxNumber = "23456789"
   
'    Timer1.Enabled = True
 
    Send = FaxDoc.Send()
'    SendKeys "{ENTER}"

End Sub

Private Sub cmdStart_Click()
Static running As Boolean
Dim pause As Long

    If running Then
        ' Stop the timer.
        KillTimer 0, TimerID
        cmdStart.Caption = "Start"
        RunningLabel.Caption = "Stopped"
    Else
        ' Start the timer.
        pause = CLng(PauseText.Text)
        TimerID = SetTimer(0, 0, pause, _
            AddressOf MyTimer)
        cmdStart.Caption = "Stop"
        RunningLabel.Caption = "Running"
    End If
    running = Not running
End Sub

Private Sub Form_Load()
    Timer1.Enabled = False
    Timer1.Interval = 1000
End Sub

Private Sub Form_Unload(Cancel As Integer)
'    If TimerID <> 0 Then KillTimer 0, TimerID
End Sub

Private Sub Timer1_Timer()
'  SendKeys "{ENTER}"
  Timer1.Enabled = False
  Text1.Text = "timer1 aktivers"
End Sub
Avatar billede joern Nybegynder
16. februar 2006 - 11:17 #1
Hej.

Jeg har ikke kigget din kildetekst igennem, men jeg mener at timeren kører på en var af typen integer og derfor højst kan køre ca. 1 minut.
Du må så lave en anden tæller, der tæller 1 op for hvert 10. sek. eller hvad du nu vælger.

Fra VB books online:
The interval can be between 0 and 64,767, inclusive, which means that even the longest interval can't be much longer than one minute (about 64.8 seconds).
Avatar billede vb_begynder Nybegynder
16. februar 2006 - 11:31 #2
Problemet er at timerne står stille !, hvis jeg fjerner linien "Send = FaxDoc.Send()" køre begge typer...
Avatar billede joern Nybegynder
16. februar 2006 - 12:14 #3
Hej.

Jeg ved ikke hvorfor du deklarerer nogle timere.  Funktionen findes jo som standard i Visual Basic.  Prøv at bruge standard.  Hvilken VB-version?
Avatar billede vb_begynder Nybegynder
16. februar 2006 - 12:23 #4
Som det ses at min kode har jeg både prøvet med vb timer og en api timer men de stopper begge to ved linien "Send = FaxDoc.Send()"
Avatar billede joern Nybegynder
16. februar 2006 - 13:25 #5
Hej.

Jeg har et program, der sender mails til mange modtagere med et vist (kort) interval, programmet skal nå at hente data i en fil m.v. inden næste afsendelse.  Timeren er sat til intervallet 1000 millesek.  Jeg ved ikke om du kan opnå noget ved at sætte timerID as Long - når nu timeren kører med Integer.  Min anbefaling er at bruge standard timer og hvis du har brug for mere end 1 minut, så at lave en ekstern tæller.    Jeg vender ikke tilbage til sagen.

Du har ikke svaret på hvilken VB-version, du anvender!

Private Sub Timer1_Timer()
    If chksend.Value = 0 Then Exit Sub
    If knsend.Caption <> "Send mail" Then Exit Sub
   
    If forste = 0 Then
      knsend_Click
      forste = 1
      v = 0
    End If
   
    v = v + 1
    t = scrinterval.Value - v
    labintsek.Caption = t
    On Error GoTo fejlauto
   
    If v >= scrinterval.Value Then
     
      If lstdata.ListIndex < lstdata.ListCount - 1 Then
            lstdata.ListIndex = lstdata.ListIndex + 1
            forste = 1
          Else
            chksend.Value = 0
            X = MsgBox("Så er listen i bund.", 64, "Medd. fra 'Send automatisk.")
            forste = 0
            Exit Sub
      End If
     
      'txtdata(2).Text = "abonn@feliks.dk"
      knsend_Click
      v = 0
    End If
   
    Exit Sub
   
fejlauto:
    X = MsgBox("Du har ikke valgt database, post eller mail-tekst.", 48, "Medd fra 'Send automatisk',")
    chksend.Value = 0
    Exit Sub
    Resume Next
End Sub
Avatar billede vb_begynder Nybegynder
05. april 2006 - 13:25 #6
har selv løst det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester