1

Тема: АНК: Отслеживание "родного" или текущего разрешения экрана

День добрый обывателям, хочу обратится с вопросом-просьбой.

Что я хочу:
1. При запуске скрипта - происходит отслеживание текущего разрешения экрана.
2. Это разрешение прописывается в реестре HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video, в строках reswidth и resheight.
3. Запуск игры!
Что мы имеем?
Warcraft 3 на wide мониторах. Дело в том, что Близарды ВООБЩЕ не предусмотрели возможность использования широкоформатников без искажения, а этот фикс - будет очень полезной вещью.

Теперь хочу задать вопрос: Можно это сделать через АНК? Если нет, в чем это лучше всего сделать? И как?
Интуитивно чувствую что ничего сложного, буду благодарен за помощь.

2

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Зачем скриптом, а не руками?

3

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Нужна автоматизация, так как хочу что бы этой вкусностью могли пользоватся не только знающие люди, но и простые смертные. Скрип будет запакован в репак игры.

4

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Спасибо, ясно. Экспортируйте раздел реестра и выложите сюда, как образец (интересуют типы параметров).

5

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Или просто напиши, какого типа должны быть эти параметры.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: RyoTsubaki, 2010-10-27 15:46:22)

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Конечно, вот сама запись реестра http://s015.radikal.ru/i332/1010/83/673652c069fc.jpg
что соответствует установленному в игре разрешению 1024*768*75Hz.

[HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video]
"reswidth"=dword:00000400
"resheight"=dword:00000300
"refreshrate"=dword:0000004b

Стоит менять только эти три параметра, остальные настройки гаммы, яркости, текстур настраиватся вручную из-под самой игры.

7 (изменено: RyoTsubaki, 2010-10-27 16:37:12)

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

teadrinker, увы не работает. После запуска скрипта - параметры настроек разрешения становятся и вовсе по 0. http://s010.radikal.ru/i314/1010/a3/9817e8f66672.jpg
Ан, нет, после твоего фикса - работает! Благодарю, теперь допишу скрипт - и уря!)

8 (изменено: RyoTsubaki, 2010-10-27 16:42:03)

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Спасибо огромное!
Только еще вопрос - какое разрешение вводится: родное или текущее?

9

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Родное - это максимально возможное, хотя я сейчас понял что сморозил глупость.  Вообщем решил сделать просто как фикс для широкоформатников, через запуск ехе файла, после которого разрешение вара становится "правильным". Правда думаю еще ГУИ окошко допилить с кнопочкой "готово" что бы всем  было видно что скрип сработал. Все правильно сделал?)

10

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Ах да, заметил проблемку. Глубина цвета в игре автоматически становится 16 бит, хотя нужно 32, но тут сложного нет, а вот какая команда для определения частоты обновления монитора?

11

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Video Resolution Changer

12

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

RyoTsubaki пишет:

а вот какая команда для определения частоты обновления монитора?

Команды такой в AHK нет.

hDCScreen := DllCall("GetDC", UInt, 0)
Refresh := DllCall("GetDeviceCaps", UInt, hDCScreen, UInt, VREFRESH := 116)
DllCall("ReleaseDC", UInt, 0 UInt, hDCScreen)

MsgBox, % Refresh
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Спасибо, добавил в скрипт.

14

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Только я там запятую пропустил, правильно так:

hDCScreen := DllCall("GetDC", UInt, 0)
Refresh := DllCall("GetDeviceCaps", UInt, hDCScreen, UInt, VREFRESH := 116)
DllCall("ReleaseDC", UInt, 0, UInt, hDCScreen)

MsgBox, % Refresh
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Честно - различий в первом и втором варианте не заметил, однако первый вариант - работает.

16

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Запятая в предпоследней строчке, последняя функция — освобождение памяти — не работала.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: АНК: Отслеживание "родного" или текущего разрешения экрана

Точно, благодарю еще раз за неоценимую помощь!