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, 1581 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: Eintagsfliege
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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Hardware
Unterstützt mein Laptop einen 1440p 60hz externen Monitor? (2)

Frage von thomasreischer zum Thema Hardware ...

Windows Netzwerk
gelöst Probleme beim Erkennen eines identischen Servers (5)

Frage von DonDento zum Thema Windows Netzwerk ...

Entwicklung
gelöst Get ip from external txt file and use in vbscript (5)

Frage von thankusomuch zum Thema Entwicklung ...

Windows Installation
gelöst Portabel Apps erkennen oder sperren (5)

Frage von joehuaba zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...