Wie kann man mit VBA über avicap32.dll alle möglichen Auflösungen einer Kamera ermitteln?

Antwort

Um mit VBA und der `avicap32.dll` die möglichen Auflösungen einer Kamera zu ermitteln, kannst du die Funktionen der `avicap32.dll` verwenden, um eine Verbindung zur Kamera herzustellen und die unterstützten Videoformate abzufragen. Hier ist ein grundlegendes Beispiel, wie du dies tun könntest: 1. **Deklaration der API-Funktionen und Konstanten:** ```vba Private Declare Function capCreateCaptureWindowA Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal nID As Long) As Long Private Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Integer, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const WM_CAP_DRIVER_CONNECT As Long = &H40A Private Const WM_CAP_DRIVER_DISCONNECT As Long = &H40B Private Const WM_CAP_GET_VIDEOFORMAT As Long = &H432 Private Const WM_CAP_SET_VIDEOFORMAT As Long = &H42E Private Const WM_CAP_SEQUENCE As Long = &H434 Private Const WM_CAP_STOP As Long = &H435 ``` 2. **Verbindung zur Kamera herstellen:** ```vba Sub ConnectToCamera() Dim hWndC As Long hWndC = capCreateCaptureWindowA("MyCaptureWindow", 0, 0, 0, 640, 480, 0, 0) If SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0) Then MsgBox "Camera connected!" Else MsgBox "Failed to connect to camera." End If End Sub ``` 3. **Ermitteln der unterstützten Auflösungen:** ```vba Sub GetSupportedResolutions() Dim hWndC As Long Dim videoFormat As VIDEOHDR Dim result As Long Dim resolutions As Collection Set resolutions = New Collection hWndC = capCreateCaptureWindowA("MyCaptureWindow", 0, 0, 0, 640, 480, 0, 0) If SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0) Then ' Hier wird eine Schleife benötigt, um die verschiedenen Auflösungen zu testen ' Beispielhafte Auflösungen (du musst die tatsächlichen Werte anpassen) Dim widths As Variant Dim heights As Variant widths = Array(640, 800, 1024, 1280) heights = Array(480, 600, 768, 720) For i = LBound(widths) To UBound(widths) For j = LBound(heights) To UBound(heights) videoFormat.bmiHeader.biWidth = widths(i) videoFormat.bmiHeader.biHeight = heights(j) result = SendMessage(hWndC, WM_CAP_SET_VIDEOFORMAT, Len(videoFormat), videoFormat) If result Then resolutions.Add widths(i) & "x" & heights(j) End If Next j Next i ' Auflösungen anzeigen Dim res As Variant For Each res In resolutions Debug.Print res Next res SendMessage hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0 Else MsgBox "Failed to connect to camera." End If End Sub ``` Dieses Beispiel zeigt, wie du eine Verbindung zur Kamera herstellen und eine Liste von Auflösungen testen kannst. Beachte, dass die tatsächlichen unterstützten Auflösungen je nach Kamera variieren können. Du musst möglicherweise die Liste der getesteten Auflösungen anpassen und erweitern.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie kann die VBA-Formel angepasst werden, sodass alle Mitarbeiter in die Zieltabelle übertragen werden?

Hier ist die überarbeitete Version des Makros, die **jeden Mitarbeiter** aus dem Bereich C9:C66 der Quell-Tabelle ("Personen einzelnd drucken") in die Ziel-Tabelle ("Arbeitsplan&qu... [mehr]

VBA: Tabelle prüfen, ob Spalte 3 Werte stehen. Sobald Spalte 3 leer ist, Wert der Spalte 1 kopieren bis zum letzten Wert in Spalte 1.

Um in VBA zu überprüfen, ob in Spalte 3 Werte stehen und bei einer leeren Zelle in Spalte 3 den Wert aus Spalte 1 zu kopieren, kannst du den folgenden Code verwenden. Dieser Code durchlä... [mehr]

Wie lautet der VBA-Code, um aus Excel eine E-Mail zu erstellen mit einem Empfänger im BCC?

Um in Excel mit VBA eine E-Mail zu erstellen, bei der der Empfänger im BCC steht, kannst du folgenden Code verwenden: ```vba Sub SendEmailWithBCC() Dim OutlookApp As Object Dim OutlookMa... [mehr]

Welche Logik steckt hinter VBA?

Die Logik hinter VBA (Visual Basic for Applications) basiert der Programmiersprache Visual Basic, die speziell für die Automatisierung von Aufgaben in Microsoft-Anwendungen wie Excel, Word und Ac... [mehr]

Volumen der Kugel in VBA?

Das Volumen einer Kugel kann mit der Formel \( V = \frac{4}{3} \pi r^3 \) berechnet werden, wobei \( r \) der Radius der Kugel ist. In VBA (Visual Basic for Applications) kannst eine Funktion erstelle... [mehr]

Wie berechne ich das Volumen eines Würfels in VBA?

Um das Volumen eines Würfels in VBA (Visual Basic for Applications) zuchnen, kannst du die folgende Funktion verwenden. Das Volumen eines Würfels wird mit der Formel \( V = a^3 \) berechnet,... [mehr]

Wie öffne ich mit Access und VBA eine CSV-Datei ohne Zeilenumbruch?

Um eine CSV-Datei in Access mit VBA zu öffnen, ohne dass Zeilenumbrüche berücksichtigt werden, kannst du die Datei als Textdate einlesen und die Daten dann in eine Tabelle importieren.... [mehr]

Kann ich mit Access und VBA die SUBSTITUTE-Funktion in Excel ausführen?

Ja, du kannst die SUBSTITUTE-Funktion in Excel auch über VBA (Visual Basic for Applications) in verwenden. Dazu kannst du die Excel-Objektbibliothek in dein Access-Projekt einbinden und die Funkt... [mehr]