1 (изменено: alexii, 2010-07-01 16:57:12)

Тема: VBS: Определить размеры рабочего стола

Добрый день!

Необходимо получить размеры зоны рабочего стола без панели задач.

Размер всего экрана можно определить так:

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
DeskHight = 0
DeskWidth = 0
For Each objItem in colItems
DeskHight = objItem.ScreenHeight
DeskWidth = objItem.ScreenWidth
Next

ВысотаНужнойЗоны= DeskHight - ВысотаПанелиЗадач

Используйте тэг «code»

Подскажите как определить либо размер самой зоны, либо как определить высоту панели задач?

2 (изменено: Dmitrii, 2010-07-02 13:48:45)

Re: VBS: Определить размеры рабочего стола

DenisArK, на всякий случай замечу, что панель задач может располагаться и сбоку.

3

Re: VBS: Определить размеры рабочего стола

DenisArK пишет:

…как определить либо размер самой зоны…

Option Explicit

With WScript.CreateObject("InternetExplorer.Application")
    .Navigate "about:blank"
    
    Do
        WScript.Sleep 100
    Loop While .Busy
    
    With .Document.Script.Screen
        WScript.Echo .availWidth
        WScript.Echo .availHeight
    End With
    
    .Quit
End With

WScript.Quit 0

4

Re: VBS: Определить размеры рабочего стола

я думал задача не решима...
однако...   

Времени не хватает... :-(

5 (изменено: Xameleon, 2010-07-06 11:44:05)

Re: VBS: Определить размеры рабочего стола

Я бы порекомендовал вот так. Всё таки создание htmlfile меньше нагружает проц, чем создание целого IE.

Dim document, info
set document = CreateObject("htmlfile")
With document.parentWindow.screen
    info = "Разрешение:" & .width & "/" & .height & vbCrlf
    info = info & "Доступная область:" & .availWidth & "/" & .availHeight
    MsgBox info
End With
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

6

Re: VBS: Определить размеры рабочего стола

Точно! Я забыл про него.

7

Re: VBS: Определить размеры рабочего стола

Спасибо за ответы!
Попробовал.
Если панель задач внизу, скрипт дает размер зоны больше, чем в действительности, например,
.availHeight = 996, а в действительности примерно 974
в чем может быть проблема?

8

Re: VBS: Определить размеры рабочего стола

У меня нормально; одинаково — сверху панель задач или снизу. Windows XP, пробовались темы классическая/Windows XP.

Option Explicit

Dim objHTMLDocument


Set objHTMLDocument = WScript.CreateObject("htmlfile")

With objHTMLDocument.parentWindow.screen
    WScript.Echo "Разрешение:        " & .width & "x" & .height
    WScript.Echo "Доступная область: " & .availWidth & "x" & .availHeight
End With

Set objHTMLDocument = Nothing

WScript.Quit 0
Разрешение:        1024x768
Доступная область: 1024x715

9

Re: VBS: Определить размеры рабочего стола

на других компах тоже все нормально
это мои локальные проблемы

Всем спасибо, очень помогли!

10

Re: VBS: Определить размеры рабочего стола

DenisArK, а что ж было?

11

Re: VBS: Определить размеры рабочего стола

без понятия, на моем компе что то странное творится....

12

Re: VBS: Определить размеры рабочего стола

DenisArK пишет:

Размер всего экрана можно определить так:

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
DeskHight = 0
DeskWidth = 0
For Each objItem in colItems
DeskHight = objItem.ScreenHeight
DeskWidth = objItem.ScreenWidth
Next

ВысотаНужнойЗоны= DeskHight - ВысотаПанелиЗадач

что нужно добавить в сей скрипт, чтобы в зависимости от разрешения экрана, запускались два разных приложения. В частности при разрешении менее 1024x768 запускалось одно, при равном или большем разрешении запускалось второе?

13

Re: VBS: Определить размеры рабочего стола

For Each I In GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT ScreenWidth FROM Win32_DesktopMonitor") 
	With CreateObject("WScript.Shell")
    	If I.ScreenWidth < 1024 Then .Run "notepad" Else .Run "wordpad"
	End With 
Next