Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '====================================================================
- ' Default size: 820×575
- '
- ' For autostart, in AkelPad.ini or registry CmdLineBegin/CmdLineEnd
- ' key, need to add:
- ' /Call("Scripts::Main", 1, "SetWindowSize.VBS")
- '====================================================================
- Option Explicit
- Const AppTitle = "SetWindowSize.VBS"
- Const DEF_WIDTH = 820
- Const DEF_HEIGHT = 575
- Call Main
- '====================================================================
- Private Sub Main()
- Dim ComputerName
- Dim Left
- Dim Top
- Dim Width
- Dim Height
- Dim hWnd
- Dim Sys
- ' Юзаем одну переменную для разрешения и имени машины.
- ' Если разрешение получить не удаётся, руководствуемся именем
- ' машины. Первое универсальнее, но возможны ошибки...
- ComputerName = GetScreenResolution()
- If ComputerName = "" Then _
- ComputerName = UCase(GetComputerName())
- If ComputerName = "" Then _
- Exit Sub
- ' Теперь смотрим, где мы и соответственно выбираем размеры...
- Select Case ComputerName
- Case "KURUMU", "1024×600"
- Width = DEF_WIDTH
- Left = (1024 - Width) \ 2
- Height = DEF_HEIGHT
- Top = (600 - Height) \ 2
- Case "NANAMI", "1440×900"
- Width = DEF_WIDTH
- Left = (1440 - Width) \ 2
- Top = 21
- Height = 900 - Top * 2
- Case "MIZORE", "1280×1024"
- Width = DEF_WIDTH
- Left = (1280 - Width) \ 2
- Top = 26
- Height = 1024 - Top * 2
- Case Else ' ХЗ что - выходим...
- Exit Sub
- End Select
- ' Получаем манипулятор окна AkelPad...
- hWnd = AkelPad.GetMainWnd()
- ' Вызываем Win32 функцию MoveWindow()...
- Set Sys = AkelPad.SystemFunction()
- Sys.AddParameter(hWnd)
- Sys.AddParameter(Left)
- Sys.AddParameter(Top)
- Sys.AddParameter(Width)
- Sys.AddParameter(Height)
- Sys.AddParameter(1)
- Sys.Call "User32::MoveWindow"
- End Sub
- '====================================================================
- Private Function GetComputerName()
- Dim WN
- Set WN = CreateObject("WScript.Network")
- GetComputerName = WN.ComputerName
- End Function
- '====================================================================
- Private Function GetScreenResolution()
- Dim ScreenWidth
- Dim ScreenHeight
- ScreenWidth = 0
- ScreenHeight = 0
- If Not DetectScreenResolution(ScreenWidth, ScreenHeight) Then
- GetScreenResolution = ""
- Else
- GetScreenResolution = CStr(ScreenWidth) & "×" & CStr(ScreenHeight)
- End If
- End Function
- '====================================================================
- Private Function DetectScreenResolution(ByRef ScreenWidth, _
- ByRef ScreenHeight)
- Dim WMIService
- Dim ComputerName
- Dim Items
- Dim Item
- ScreenWidth = 0
- ScreenHeight = 0
- DetectScreenResolution = False
- On Error Resume Next
- ComputerName = "."
- Set WMIService = GetObject("winmgmts:" & _
- "{impersonationLevel=impersonate}!\\" & _
- ComputerName & "\root\cimv2")
- Set Items = WMIService.ExecQuery _
- ("Select * from Win32_DisplayControllerConfiguration")
- ' У Items.Item() очень странный синтаксис, там аргумент строковый
- ' и называется что-то-там-path, и мне не удалось вызвать его
- ' не получив ошибку "Общая ошибка". Поэтому решено было сделать
- ' через перечисление.
- For Each Item in Items
- ScreenWidth = Item.HorizontalResolution
- ScreenHeight = Item.VerticalResolution
- Exit For
- Next
- If Err.Number = 0 Then _
- If ScreenWidth > 0 Then _
- If ScreenHeight > 0 Then _
- DetectScreenResolution = True
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement