Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bildschirmlupe über Uf positionieren

Bildschirmlupe über Uf positionieren
26.01.2021 11:34:28
reiner
Hallo Leute,
die Windows10- Bildschirmlupe lässt sich mit Windows-Logo-Taste + Plus Zeichen (+) aktivieren und mit Windows-Logo-Taste + ESC deaktivieren.
https://support.microsoft.com/de-de/windows/bildschirmlupe-verwenden-damit-elemente-auf-dem-bildschirm-besser-sichtbar-sind-414948ba-8b1c-d3bd-8615-0e5e32204198
Die Beispieldatei

https://www.herber.de/bbs/user/143321.xlsb
enthält eine UF mit diversen (hier funktionslosen) CommandButtons sowie einer als Bilddatei eingefügten Weltkarte.
Über die Schaltfläche "Bildschirmlupe Ein / Aus" soll die Windows10- Bildschirmlupe über der Weltkarte positioniert und auch wieder deaktiviert werden.
Zusätzlich soll durch Bewegung der Maus (aus dem Bereich der Weltkarte heraus), die Bildschirmlupe deakiviert werden.
Hat jemand in diesem Forum einen Vorschlag um diese Idee zu verwirklichen?
mfg
reiner

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildschirmlupe über Uf positionieren
26.01.2021 12:05:24
Daniel
Hi
Mal so als Idee:
Tastatureingaben des Anwenders kann man per VBA über den Befehl SendKeys simulieren (weitere infos zu dem Befehl in der Online-Hilfe)
Um Mausbewegungen zu erkennen und für das Ausführen von Code zu verwenden, gibt es das MouseMove-Event
Dh du müsstest im MouseMove der Weltkarte die Lupe einschalten. Und im MouseMove der Userform wieder ausschalten.
Gruß Daniel
AW: Bildschirmlupe über Uf positionieren
26.01.2021 12:35:38
Nepumuk
Hallo reiner,
klick auf das Bild im Userform1. Ein weiterer Klick auf das Userform2 schließt diese wieder.
https://www.herber.de/bbs/user/143323.xlsb
Gruß
Nepumuk
Anzeige
AW: Bildschirmlupe über Uf positionieren
26.01.2021 12:56:59
reiner
hallo Nepumuk,
vermutlich gibt es ein versionsproblem:
Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
ByVal nIndex As Long) As Long
Private Declare PtrSafe Function GetDesktopWindow Lib "user32.dll" () As LongPtr
Private Declare PtrSafe Function GetDC Lib "user32.dll" ( _
ByVal hwnd As LongPtr) As LongPtr
Private Declare PtrSafe Function ReleaseDC Lib "user32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal hdc As LongPtr) As Long
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32.dll" ( _
ByVal hdc As LongPtr, _
ByVal nIndex As Long) As Long
der vorstehende Code wird in roter Schrift dargestellt. Mein Windows 10 ist eine 64-bit-Version und Excel eine 32-bit-Version. Könnte es daran liegen dass dein Code in ROT angezeigt wird?
Anzeige
AW: Bildschirmlupe über Uf positionieren
26.01.2021 13:16:45
Nepumuk
Hallo reiner,
Entschuldigung, ich habe deine Excelversion nicht berücksichtigt. Ersetze den gesamten Code im Userform2 durch diesen:
Option Explicit

Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Private Declare Function GetDC Lib "user32.dll" ( _
    ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal hdc As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32.dll" ( _
    ByVal hdc As Long, _
    ByVal nIndex As Long) As Long

Private Const SM_CXSCREEN As Long = 0&
Private Const SM_CYSCREEN As Long = 1&
Private Const LOGPIXELS_X As Long = 88&
Private Const LOGPIXELS_Y As Long = 90&

Private Sub UserForm_Activate()
    
    Dim sngWidth As Single, sngHeight As Single
    
    sngWidth = Width
    sngHeight = Height
    
    Left = 0
    Top = 0
    
    Width = GetSystemMetrics(SM_CXSCREEN) * GetResolution(LOGPIXELS_X)
    Height = GetSystemMetrics(SM_CYSCREEN) * GetResolution(LOGPIXELS_Y)
    
End Sub

Private Function GetResolution(ByVal pvlngLogPixel As Long) As Single
    
    Dim lnghWndDesk As Long, lnghDCDesk As Long
    Dim lnglogPixel As Long
    
    lnghWndDesk = GetDesktopWindow()
    lnghDCDesk = GetDC(lnghWndDesk)
    
    lnglogPixel = GetDeviceCaps(lnghDCDesk, pvlngLogPixel)
    
    Call ReleaseDC(lnghWndDesk, lnghDCDesk)
    
    GetResolution = 72 / lnglogPixel
    
End Function

Private Sub UserForm_Click()
    Call Unload(Object:=Me)
End Sub

Gruß
Nepumuk
Anzeige
AW: Bildschirmlupe über Uf positionieren
26.01.2021 14:19:21
reiner
hallo Nepumuk,
genial gelöst, super!!
herzlichen Dank und alles Gute
eine Bitte noch zum Schluss: erklär' bitte mit wenigen Worten wodurch sich die beiden Versionen bezgl. Variablendeklaration unterscheiden
reiner
AW: Bildschirmlupe über Uf positionieren
26.01.2021 14:24:20
Nepumuk
Hallo reiner,
in deiner Excelversion (vor 2013) müssen die API-Funktionen für 32Bit kompatibel sein. Zudem kennt deine Version den Variablentyp LongPtr noch nicht.
Gruß
Nepumuk
Danke
26.01.2021 15:13:38
reiner
o.T.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige