| |
Fortgeschrittene ProgrammierungTimer 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 | |
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 | |
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. | |
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? | |
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 | |
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!! | |
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 | |
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 | |
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 | |
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] | |
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] | |
Re: Timer mit API | | | Autor: dj.tommy | Datum: 31.12.06 15:35 |
| Ah super Danke | |
| 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 |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|