Bildschirmauflösung ermitteln mit VBScript

In diesem Artikel zeige ich dir, wie du die Bildschirmauflösung eines Monitors ermitteln kannst. Verwendet wird dazu VBScript eingebettet in ABAP. Um an die gewünschten Informationen zu gelangen, wird WMI – Windows Management Instrumentation bemüht.

Die Ermittlung der Standardauflösung mit ABAP-Mitteln ist hier beschrieben: Bildschirmauflösung des Computers ermitteln

Vielen Dank an Stefan Schnell, der wieder mal beweist, dass der SAPGUI nicht die Grenze ist…

Win32_VideoController

Das unten stehende Programm erzeugt ein VBScript mit dessen Hilfe Informationen des Windows-Videocontrollers ausgelesen werden. Für jedes gefundene Element wird ein Popup erzeugt:

Info

Leider berücksichtigt der Code nicht mehrere angeschlossene Monitore. Für weiterführende Hinweise diesbezüglich bin ich dankbar.

Allerdings: Selbst wenn man weiß, wie viele Monitore, mit welcher Auflösung angeschlossen sind, weiß man immer noch nicht, auf welchem Monitor gerade der SAPGUI-Modus angezeigt wird.

Weiterführende Links

How to use Windows Management Instrumentation (WMI) Inside ABAP

How to use Windows PowerShell Script inside ABAP

WMI – Windows Management Instrumentation

Win32_VideoController

Code

CONSTANTS crlf(2) TYPE c VALUE cl_abap_char_utilities=>cr_lf.
DATA scriptctrl   TYPE ole2_object.
DATA cmd          TYPE string.

CREATE OBJECT scriptctrl 'MSScriptControl.ScriptControl'.
IF sy-subrc = 0.
  SET PROPERTY OF scriptctrl 'AllowUI' = 1.
  SET PROPERTY OF scriptctrl 'Language' = 'VBScript'.
  cmd = 'Set oWMI = GetObject("Winmgmts:\\.\root\cimv2")'                          && crlf &&
        'Set colItems = oWMI.ExecQuery("Select * from Win32_VideoController",,48)' && crlf &&
        'For Each oItem in colItems '                                              && crlf &&
        ' intHorizontal = oItem.CurrentHorizontalResolution'                       && crlf &&
        ' intVertical = oItem.CurrentVerticalResolution'                           && crlf &&
        ' chrCaption  = oItem.Caption'                                             && crlf &&
        ' chrDeviceID = oItem.DeviceID'                                            && crlf &&
        ' MsgBox chrDeviceID & "/" & chrCaption & ": " & intHorizontal & ":" & intVertical'            && crlf &&
        'Next'.
  CALL METHOD OF scriptctrl 'ExecuteStatement' EXPORTING #1 = cmd.
  FREE OBJECT scriptctrl.
ENDIF.

 

Enno Wulff