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, 1641 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
Ähnliche Inhalte
Batch & Shell
Herunterfahren erkennen (Batch) (16)

Frage von clragon zum Thema Batch & Shell ...

Notebook & Zubehör
gelöst HP Probook 4525s schwarzer Monitor (13)

Frage von Florian8790 zum Thema Notebook & Zubehör ...

Basic
VBScript erweitern für Subfolder (8)

Frage von 132078 zum Thema Basic ...

Windows 8
gelöst Auflösung ohne Monitor erzwingen (18)

Frage von TuberPlays zum Thema Windows 8 ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (30)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...