vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2026
 
zurück
Rubrik: Oberfläche · Fenster   |   VB-Versionen: VB614.03.26
Mehrmonitorbetrieb Programmaufruf

Der folgende Quellcode öffnet beim Mehrmonitorbetrieb das Programm immer auf dem Monitor, auf welchem sich der Mauszeiger befindet. Danke ChatGPT

Autor:   Bernd TheilackerBewertung:     [ Jetzt bewerten ]Views:  269 
https://bt-soft.deSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

Der folgende Quellcode öffnet beim Mehrmonitorbetrieb das Programm immer auf dem Monitor, auf welchem sich der Mauszeiger befindet. Danke ChatGPT

Code für ein Modul:

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
 
Private Type MONITORINFO
  cbSize As Long
  rcMonitor As RECT
  rcWork As RECT
  dwFlags As Long
End Type
 
Private Declare Function MonitorFromPoint Lib "user32" ( _
  ByVal x As Long, ByVal y As Long, ByVal dwFlags As Long) As Long
 
Private Declare Function GetMonitorInfo Lib "user32" Alias "GetMonitorInfoA" ( _
  ByVal hMonitor As Long, lpmi As MONITORINFO) As Long
 
Private Declare Function GetCursorPos Lib "user32" ( _
  lpPoint As POINTAPI) As Long
 
Private Type POINTAPI
  x As Long
  y As Long
End Type
 
Private Const MONITOR_DEFAULTTONEAREST = &H2
Public Sub CenterFormOnMouseMonitor(frm As Form)
  Dim pt As POINTAPI
  Dim hMon As Long
  Dim mi As MONITORINFO
 
  ' Mausposition holen
  GetCursorPos pt
 
  ' Monitor bestimmen
  hMon = MonitorFromPoint(pt.x, pt.y, MONITOR_DEFAULTTONEAREST)
  mi.cbSize = Len(mi)
  GetMonitorInfo hMon, mi
 
  ' Breite und Höhe des Arbeitsbereichs (ohne Taskleiste)
  Dim workWidth As Long
  Dim workHeight As Long
 
  workWidth = mi.rcWork.Right - mi.rcWork.Left
  workHeight = mi.rcWork.Bottom - mi.rcWork.Top
 
  ' Zentriert positionieren
  frm.Move _
    (mi.rcWork.Left + (workWidth - frm.Width / Screen.TwipsPerPixelX)  2) * Screen.TwipsPerPixelX, _
    (mi.rcWork.Top + (workHeight - frm.Height / Screen.TwipsPerPixelY)  2) * Screen.TwipsPerPixelY
End Sub

Code für die Hauptform:
StartUpPosition 0 - Manuell

Private Sub Form_Activate()
  Static Done As Boolean
 
  If Not Done Then
    CenterFormOnMouseMonitor Me
    Done = True
  End If
End Sub

Dieser Tipp wurde bereits 269 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2026 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