vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Timer mit API 
Autor: dj.tommy
Datum: 26.12.06 14:31

Hallo Leute !
Ich brauche ein Timer, der in einem Modul funktioniert.
Mir wurde dies empfohlen.
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _
        Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long
 
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _
        Long, ByVal nIDEvent As Long) As Long
Nun der ist nicht schlecht, nur ist da ein kleines problem, und zwar der "hWnd". Es benötigt ein " from1.hwnd" damit es funktioniert, oder man gibt "0" ein, dann geht es auch. aber leidner schließst sich der VB-Editor Fenster komplett, wenn man beenden klickt.
Auser man hat den " from1.hwnd" angegeben, dann wird das projekt richtig beedet, und der VB-Editor bleibt offen.
und das ist für mich nicht sehr stabil, wenn man statt "from1.hwnd" sondern "0" eingibt.
nun die Frage gibts auch ein anderen code für ein Timer, auser "SetTimer" und "KillTimer"? wenn ja wäre super.
Wenn nicht, wie schreibe ich den code so, das es auch wenn es durch Vb-Editor Beedet wird, nicht das ganze projekt abstürtzt?
danke für eure hilfe!
MFG Dj.tommy
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: BAStler
Datum: 27.12.06 21:28

Hallo dj.tommy,

habe in der WinAPI32 nachgeschaut, es gibt nur diese 2 Funktionen mit Timer, also keine Andere, mit der man den Timer abschaltet. Dazu mußt du wohl selbst ein Konstrukt bauen.
Warum übergibst du nicht die Form selbst an eine Funktion in deinem Modul?
Private Sub Editor_beenden(frm as Form)
  KillTimer(frm.hWnd, nIDEvent)
End Sub
Viel Erfolg
BAStler
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: dj.tommy
Datum: 28.12.06 16:28

Weil ich es vom modul abrufen möchte,und das möchte ich so machen, das es überall geht. ohne das ich das modul umschreiben muß, und daher nicht schon weiß wie der formular heißt .
zb
Private Sub Form_Load()
Msgbox "Es wird das Fenster in 2 sec geöffnet"
Module1.Selbstgemacher Pause =  2000
Me.Show
End Sub
Denn es heißt ja nicht immer Form1, und somit kann ich nicht "form1.hwnd" schreiben.
denn wenn ich das formular jetzt zb "frmhallo" umbenenne. wird es dann nicht gehen, weil es im modul "form1.hwnd" eingegeben wurde.

Die funktion sieht dann so aus. es wird von "Module1.Selbstgemacher Pause" aufgehalten und nach 2 sec gehts wieder. ja ich weiß, das es sleep gibt !
nur das problem ist, das alles aufgehalten wird, und das brauch ich nicht.

Teste es selber :
Nimm ein timer, und gib dem code ein.
Private Declare Sub Sleep Lib "kernel32" _
  (ByVal dwMilliseconds As Long)
Dim a As Integer
 
Private Sub Form_Load()
Me.Show
Sleep 3000
msgbox "hallo"
End Sub
 
Private Sub Timer1_Timer()
a = a + 1
Label1.Caption = a
End Sub
nun erst wenn 3 sec um sind geht es weiter. und ich brache es so, das timer die zahlen laufen, und nach 3 sec eine meldung kommt mit hallo.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: Saga-Games
Datum: 28.12.06 16:54

Ein projekt ohne fenster ist doch wie...gar nichts
wieso kannst du den timer denn nicht einem versteckten fenster zuweisen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: BAStler
Datum: 28.12.06 21:47

Hallo dj.tommy,

wo befindet sich denn das Label1?
Der Name der Form ist dem Modul egal, wenn du es an die Prozedur oder Funktion übergibst. Das habe ich mal bei einem MDI-Projekt mit dem Resize für die unterschiedlichsten Formen gemacht. Die Prozedur steht im Modul.
Private Sub Selbstgemachte_Pause(frm As Form)
  ' Ausgabe deiner Zahlvariable im Label1.Caption
  ' Könntest ja auch noch weitere Parameter definieren, z.B. für die Dauer
End Sub
Aufrufen kannst du es dann, von jeder Form_Load oder sogar von der Sub_Main.
Private Sub Main()
  Selbstgemachte_Pause(Form1)
End Sub
' oder
Private Sub Form_Load()
  Selbstgemachte_Pause(Me)
End Sub
Viel Erfolg
BAStler
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: dj.tommy
Datum: 29.12.06 15:57

ja nun gut, aber bei "Slepp"Funktion schriebst du ja auch nicht, zb "Slepp form1 2000" sondern nur "Slepp 2000" wie ist das den geschrieben ?

Aber mir ist auch noch eine andere idee eingrfallen, wie ich mein problem lösen könnte.
Und zwar wie bekomme ich ein timer mit millisekunden takt her ?
Denn, dann brauch ich nur wenn ich 2000 millisekunden pause haben möchte, zb wie bei der Time funktion ( wo die zeit angezeigt wird)
Dim anfang As Integer
Dim ende As Integer
Private Sub Command1_Click()
Pause 2
End Sub
Function Pause(Sec As Integer)
anfang = Format(Time, "ss") + Sec
nochmal:
If anfang = Format(Time, "ss") Then
MsgBox "2 Sekunden sind um !"
Else
GoTo nochmal
End If
End Function
So schreiben aber halt nur mit Millisekunden ?
Danke für deine hilfe!!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: BAStler
Datum: 29.12.06 21:07

Hallo dj.tommy,

ich habe daheim kein VB5 oder VB6 und mit der Visual Studio Express komme ich noch nicht richtig parat, deshalb kann ich deinen Source bis nächstes Jahr nicht testen, aber vielleicht hilft dir dieser Tip?

Gruß BAStler
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: BAStler
Datum: 29.12.06 21:15

Hallo dj.tommy,

ich nochmal. Habe hier vielleicht noch einen besseren Tip gefunden, weil es eine Alternative für die Sleep-Funktion sein soll.

Gruß BAStler
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: dj.tommy
Datum: 31.12.06 13:09

Hi BAStler !
danke für deine bemühungen aber der letzte tip "Tipp 0507" ist nicht schlecht, nur kann ich sekunden angeben.
aber ich brauche millisekunden
Aber danke dir trozdem
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: Gateway
Datum: 31.12.06 14:24

du kannst den tipp dennoch verwerten indem du bei dieser zeile im modul:
dblDelay = CDbl(lNumberOfSeconds) *1000* 10000
das mal tausend wegläst sind es merkwürdigerweise milisekunden^^

Wer Rechtschreibfehler findet kann sie behalten oder meinen Deutschlehrer verklagen.

In der Mitte von Schwierigkeiten liegen die M?glichkeiten. [Alber Einstein]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: Gateway
Datum: 31.12.06 14:25

ups... nicht komischerweise, logischweise^^
is ja die umrechnung von Sekunden auf Milisekunden. Wenn man die weglässt muss man die angaben gleich in ms machen!

Wer Rechtschreibfehler findet kann sie behalten oder meinen Deutschlehrer verklagen.

In der Mitte von Schwierigkeiten liegen die M?glichkeiten. [Alber Einstein]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Timer mit API 
Autor: dj.tommy
Datum: 31.12.06 15:35

Ah super Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel