Deklaration: Declare Function QueryPerformanceCounter Lib "kernel32.dll" ( _ lpPerformanceCount As LARGE_INTEGER) As Long Beschreibung: Parameter:
Rückgabewert: Beispiel: Private Declare Function QueryPerformanceCounter Lib "kernel32.dll" ( _ lpPerformanceCount As ULARGE_INTEGER) As Long Private Declare Function QueryPerformanceFrequency Lib "kernel32.dll" ( _ lpFrequency As ULARGE_INTEGER) As Long Private Declare Function SetPixelV Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal crColor As Long) As Long Private Declare Function SetPixel Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal crColor As Long) As Long Private Declare Sub MoveMemory Lib "kernel32.dll" _ Alias "RtlMoveMemory" ( _ Destination As Any, _ Source As Any, _ ByVal Length As Long) Private Type ULARGE_INTEGER LowPart As Long HighPart As Long End Type Private CounterFreq As Currency Private TmpUInt As ULARGE_INTEGER ' Funktion um eine ULARGE_INTEGER in eine Currency-Variable zu kopieren Private Function UlargeToCurrency(ByRef ULarge As ULARGE_INTEGER) As Currency Dim Retval As Long, TmpCur As Currency ' Ularge in Currency kopieren und mit 10000 Multiplizieren MoveMemory TmpCur, ULarge, 8 UlargeToCurrency = TmpCur * 10000 End Function ' Counter Frequenz ermitteln Private Sub Form_Load() Me.ScaleMode = vbPixels ' Ermitteln, ob ein Hochleistungs-Timer verfügbar ist Retval = QueryPerformanceFrequency(TmpUInt) If Retval = 0 Then MsgBox "Dieses System hat keinen Hochleistungs Zeitmesser" Command1(0).Enabled = False Command1(1).Enabled = False Exit Sub End If ' Umwandeln der 64-Bit-Integer in eine Currency-Variable CounterFreq = UlargeToCurrency(TmpUInt) Debug.Print "Hochleistungs Timer Frequenz: " & CounterFreq & " Counts _ pro Sekunde" End Sub ' Zeit der SetPixel & SetPixelV Füllvariante messen Private Sub Command1_Click(Index As Integer) Dim Retval As Long Dim StartCur As Currency, EndCur As Currency Dim StartInt As ULARGE_INTEGER, EndInt As ULARGE_INTEGER Dim i As Long, j As Long ' Zeit vor dem Beginn der Funktion messen Retval = QueryPerformanceCounter(StartInt) ' Starten der verschiedenen Funktionen Select Case Index Case 0 ' SetPixel For i = 0 To Me.ScaleWidth For j = 0 To Me.ScaleHeight SetPixel Me.hdc, i, j, vbRed Next j Next i Case 1 ' SetPixelV For i = 0 To Me.ScaleWidth For j = 0 To Me.ScaleHeight SetPixelV Me.hdc, i, j, vbBlue Next j Next i End Select ' Zeit nach dem Beenden der Funktion messen Retval = QueryPerformanceCounter(EndInt) ' Umwandeln der Zeiten in ein Currency-Format StartCur = UlargeToCurrency(StartInt) EndCur = UlargeToCurrency(EndInt) MsgBox "Diese aktion dauerte " & CLng((EndCur - StartCur) / _ (CounterFreq / 1000)) & " Millisekunden.." End Sub Diese Seite wurde bereits 12.305 mal aufgerufen. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Buchempfehlung Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||
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. |