Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit VBScript 2. Monitor erkennen

Frage Entwicklung VB for Applications

Mitglied: VbsUser

VbsUser (Level 1) - Jetzt verbinden

14.01.2015, aktualisiert 17.01.2015, 1826 Aufrufe, 3 Kommentare

Hallo,

benötige Hilfe. Vielleicht hat jemand eine Idee

Vor der Ausgabe einer Diashow auf einen 2. Monitor soll geprüft werden ob der 2. Monitor nun eingeschaltet wurde. Dies funktioniert mit verschiedenen VBSript Methoden sehr gut, allerdings nur wenn der 2. Monitor auch von Windows erkannt wurde.

Das heißt erst nach Rechtsklick auf dem Desktop und dem Menüpunkt "Bildschirmauflösung"/"Erkennen" ist die Anzahl der Monitore von Windows korrekt eingetragen und lässt sich mit Vbs richtig auslesen.

Ich habe nun versucht dies mit einem Script wie folgt zu simulieren:
01.
set WshShell = WScript.CreateObject("WScript.Shell")  
02.
WindowsPfad = WshShell.ExpandEnvironmentStrings("%windir%") 
03.
WSHShell.Run WindowsPfad&"\System32\rundll32.exe shell32.dll, Control_RunDLL Desk.cpl,,3" 
04.
 
05.
set Sk = CreateObject("WScript.Shell") 
06.
'Sk.SendKeys "%n"
Das Skript öffnet zwar das Fenster Bildschirmauflösung, wartet aber immer auf eine Tastatureingabe. Die Zeile mit der Anweisung SendKeys wird erst nach schließen des Fensters abgearbeitet.
Ev. muß auch noch die Einstellung bei "Mehrere Anzeigen:" per Sript geändert werden. Hat jemand eine Idee wie man das Fenster per Vbs bedienen kann?

Oder gibt es eine andere Möglichkeit Windows dazu zu bringen die Anzahl der angeschlossenen Monitore zu aktualisieren?
Mitglied: 116301
14.01.2015 um 18:53 Uhr
Hallo VbsUser!

Ich vermute eher, dass der SendKey in's leere läuft, d.h. das er schon ausgeführt wird, bevor das Fenster geöffnet ist. Versuch mal eine Verzögerung durch ein Sleep vor dem Sendkey...

Grüße Dieter
Bitte warten ..
Mitglied: emeriks
14.01.2015 um 22:33 Uhr
Hi,
schon mal an PowerShell gedacht?

Datei "test.ps1" erstellen ....
01.
$Screens = [System.Windows.Forms.Screen]::AllScreens.Length 
02.
'Anzahl Monitore: ' + $Screens
... und ausführen.

E.
Bitte warten ..
Mitglied: 114757
LÖSUNG 15.01.2015, aktualisiert 17.01.2015
Moin,
Zitat von emeriks:
schon mal an PowerShell gedacht?
....
Datei "test.ps1" erstellen ....
dann musst du aber vorher im Script noch das Assembly laden
Add-Type -AssemblyName System.Windows.Forms
Wenn das ganze aus VBS aufgerufen werden soll geht das bspw. so
01.
Set objShell = CreateObject("Wscript.Shell") 
02.
screens = objShell.Run("""C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"" -ExecutionPolicy ByPass -Command ""&{Add-Type -AssemblyName System.Windows.Forms;exit([System.Windows.Forms.Screen]::AllScreens.Length)}""",0,True) 
03.
MsgBox screens
Gruß jodel32
Bitte warten ..
Ähnliche Inhalte
Grafikkarten & Monitore
gelöst 2 Monitore auf einem "simulieren" oder so ähnlich (3)

Frage von jayjay0911 zum Thema Grafikkarten & Monitore ...

Grafikkarten & Monitore
Monitor defekt?! (5)

Frage von Thor01 zum Thema Grafikkarten & Monitore ...

Grafikkarten & Monitore
Blickschutzfilter für Monitore (12)

Frage von TiTux zum Thema Grafikkarten & Monitore ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Firewall
Richtige Grundeinstellungen der Pfsense für mein Netzwerk (12)

Frage von Spitzbube zum Thema Firewall ...

Switche und Hubs
gelöst Cisco 2960x Stacking über mehrere Etagen (12)

Frage von b3scher zum Thema Switche und Hubs ...