Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Access 2016 - Zweiter Bildschirm

47 views
Skip to first unread message

Jürgen Meyer

unread,
Jul 14, 2017, 8:56:09 AM7/14/17
to
Ich möchte eine Access-DB auf dem 2. Bildschirm öffnen
Bei Excel funktioniert das ganz einfach:

'2nd Panel.vbs
intMonitor = 2

Set objExcel = CreateObject("Excel.Application")
Set objDisplay = GetObject("winmgmts:\\.\root\cimv2").ExecQuery ("Select *
From Win32_DisplayConfiguration")

For Each objItem in objDisplay
intWidth = objItem.PelsWidth
Next

objExcel.Visible = true
objExcel.Workbooks.Open("D:\Test.xlsx")
objExcel.WindowState = -4143
objExcel.Left = (intMonitor - 1) * intWidth + 1
objExcel.WindowState = -4137
Set objExcel = Nothing
Set colItems = Nothing

Wie setzt man das auf Access um?
objAccess.visible = true
objAccess.OpenCurrentDataBase("D:\Test.accdb")

Das Access-Objekt kann aber mit
objAccess.WindowState und objAccess.Left nichts anfangen

Auch der bei Google gefundene Tipp
objAccess.UserControl = true
bringt mich nicht weiter
So wird die DB nur auf dem 1. Bildschirm geöffnet

Gruß
Jürgen

Ulrich Möller

unread,
Jul 14, 2017, 9:35:28 AM7/14/17
to
Hallo Jürgen,
Nach
https://stackoverflow.com/questions/52755/what-determines-the-monitor-my-app-runs-on
kann man dieses mittels den API Funktionen Get/-SetWindowPlacement()
umsetzen. Die jeweils letzte Fenster-Position muß dann irgendwo zwischen
gespeichert werden - vielleicht in der Registry ein Eintrag unter HKCU?

Ulrich

Jürgen Meyer

unread,
Jul 16, 2017, 10:41:26 AM7/16/17
to
On Fri, 14 Jul 2017 15:35:28 +0200, "Ulrich Möller" posted:

>Hallo Jürgen,
>
>Am 14.07.2017 um 14:56 schrieb Jürgen Meyer:
>> Ich möchte eine Access-DB auf dem 2. Bildschirm öffnen

>Nach
>https://stackoverflow.com/questions/52755/what-determines-the-monitor-my-app-runs-on
>kann man dieses mittels den API Funktionen Get/-SetWindowPlacement()
>umsetzen. Die jeweils letzte Fenster-Position muß dann irgendwo zwischen
>gespeichert werden - vielleicht in der Registry ein Eintrag unter HKCU?
>
>Ulrich

Danke für den Link
Interessant ist ja die Möglichkeit, den Bildschirm mit
Shift + Win + [left,right] arrow
zu wechseln

Also gibt es bereits eine entsprechende Funktion in Windows
Aber wie ruft man sie auf?
Sendkeys möchte ich wenn immer möglich, vermeiden

Ich bin da noch auf folgendes gestoßen:
Declare Function SetWindowDisplayAffinity Lib "user32.dll" (hwnd As IntPtr,
Affinity As DisplayAffinity) As Boolean

Wegen meiner begrenzten Kenntnisse bin ich da aber auch noch nicht
weitergekommen.
(Benutzerdefinierter Typ nicht definiert)

Gruß
Jürgen

Ulrich Möller

unread,
Jul 16, 2017, 11:43:09 AM7/16/17
to
Hallo Jürgen,

Am 16.07.2017 um 16:41 schrieb Jürgen Meyer:
>> Am 14.07.2017 um 14:56 schrieb Jürgen Meyer:
>>> Ich möchte eine Access-DB auf dem 2. Bildschirm öffnen
>> Nach
>> https://stackoverflow.com/questions/52755/what-determines-the-monitor-my-app-runs-on
>> kann man dieses mittels den API Funktionen Get/-SetWindowPlacement()
>> umsetzen. Die jeweils letzte Fenster-Position muß dann irgendwo zwischen
>> gespeichert werden - vielleicht in der Registry ein Eintrag unter HKCU?
>>
>> Ulrich
> Danke für den Link
Nicht dafür ...
> Interessant ist ja die Möglichkeit, den Bildschirm mit
> Shift + Win + [left,right] arrow
> zu wechseln
>
> Also gibt es bereits eine entsprechende Funktion in Windows
> Aber wie ruft man sie auf?
> Sendkeys möchte ich wenn immer möglich, vermeiden
Um den Benutzer nicht zu sehr zu verwirren, würde ich es der Anwendung,
wie in dem Link beschrieben, belassen. Wenn es das in Windows schon
gibt, warum das Rad neu erfinden? Deine Anwendung sollte nur auf diese
Tastenkombination wie erwartet regieren.

Hier mal ein anderer Link, wie man die Startup Position explizit setzen
kann - wenn du das wirklich möchtest. Sollte sich für Access anpassen
lassen:
http://www.tek-tips.com/viewthread.cfm?qid=1669894

> Ich bin da noch auf folgendes gestoßen:
> Declare Function SetWindowDisplayAffinity Lib "user32.dll" (hwnd As IntPtr,
> Affinity As DisplayAffinity) As Boolean
>
> Wegen meiner begrenzten Kenntnisse bin ich da aber auch noch nicht
> weitergekommen.
> (Benutzerdefinierter Typ nicht definiert)
Warum möchtest du einen Screenshot verhindern, wo doch jeder ein Handy
hat? Gibt meiner Meinung nach keinen Sinn. Die Declare Anweisung stammt
übrigens von vb.net und ist nicht vollständig. Deshalb auch die
Fehlermeldung.

Ulrich


0 new messages