Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Сообщения: 36560
Благодарности: 6694


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата TERMINAL:
ошибки выдают »
сам не хошь поразвлекаться? какой выбрал?... там по ходу скрипты немного устарели, надо править для новых версий AutoIT

Отправлено: 12:57, 14-04-2008 | #441



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


amel27, у меня просто времени нет в чужих трудах копаться Пробовал все 3 которые ты давал-ниодин не заработал...

-------
Автоматизация прежде всего....


Отправлено: 14:01, 14-04-2008 | #442


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата TERMINAL:
у меня просто времени нет в чужих трудах копаться »
ну... тут со временем у всех туго, вряд ли кто "с нуля" напишет для тебя прогу - начни и тебе помогут... собственно, за готовыми решениями в другую ветку

Отправлено: 09:45, 15-04-2008 | #443


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


amel27
Только ты можешь помочь!
Пытаюсь сменить разрешение экрана, но безуспешно
Код: Выделить весь код
Global Const $CDS_TEST      = 0x00000002
Global Const $CCDEVICENAME  = 32
Global Const $CCFORMNAME    = 32
Global Const $DM_PELSWIDTH  = 0x80000
Global Const $DM_PELSHEIGHT = 0x100000
Global Const $DM_BITSPERPEL = 0x40000
Global Const $WM_DISPLAYCHANGE = 0x007E
Global Const $HWND_BROADCAST = 0xFFFF
Global Const $SPI_SETNONCLIENTMETRICS = 0x2A
Global Const $DM_DISPLAYFLAGS = 0x200000

$DEVMODE = DllStructCreate("char dmDeviceName[255];ushort dmSpecVersion;ushort dmDriverVersion;ushort dmSize;" & _
                           "ushort dmDriverExtra;dword dmFields;int dmOrientation;int dmPaperSize;int dmPaperLength;" & _
                           "int dmPaperWidth;int dmScale;int dmCopies;int dmDefaultSource;int dmPrintQuality;" & _
                           "int dmColor;int dmDuplex;int dmYResolution;int dmTTOption;int dmCollate;char dmFormName[255];" & _
                           "int dmUnusedPadding;int dmBitsPerPel;int dmPelsWidth;int dmPelsHeight;dword dmDisplayFlags;" & _
                           "dword dmDisplayFrequency")

DllStructSetData($DEVMODE, "dmDeviceName", $CCDEVICENAME)
DllStructSetData($DEVMODE, "dmFormName", $CCFORMNAME)
DllStructSetData($DEVMODE, "dmPelsWidth", 800)
DllStructSetData($DEVMODE, "dmPelsHeight", 600)
DllStructSetData($DEVMODE, "dmBitsPerPel", 16)
DllStructSetData($DEVMODE, "dmDisplayFrequency", 60)
DllStructSetData($DEVMODE, "dmSize", DllStructGetSize($DEVMODE))
DllStructSetData($DEVMODE, "dmFields", BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL))

$DllRet = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)

ConsoleWrite("DllRet = " & $DllRet[0] & @LF)

DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
        "int", $SPI_SETNONCLIENTMETRICS, "int", 0)

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 16:49, 16-04-2008 | #444


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Maza Faka,
Цитата:
Пытаюсь сменить разрешение экрана
Многое уже до нас придумано

Код: Выделить весь код
$iWidth = 1024
$iHeight = 768
$iBitsPP = 32
$iRefreshRate = 85

$vRes = _ChangeScreenRes($iWidth, $iHeight, $iBitsPP, $iRefreshRate)
If @error Then
    MsgBox(262160, "ERROR", "Unable to change screen - check parameters")
EndIf

;===============================================================================
;
; Function Name:    _ChangeScreenRes()
; Description:      Changes the current screen geometry, colour and refresh rate.
; Version:          1.0.0.1
; Parameter(s):     $i_Width - Width of the desktop screen in pixels. (horizontal resolution)
;                   $i_Height - Height of the desktop screen in pixels. (vertical resolution)
;                   $i_BitsPP - Depth of the desktop screen in bits per pixel.
;                   $i_RefreshRate - Refresh rate of the desktop screen in hertz.
; Requirement(s):   AutoIt Beta > 3.1
; Return Value(s):  On Success - Screen is adjusted, @ERROR = 0
;                   On Failure - sets @ERROR = 1
; Forum(s):         http://www.autoitscript.com/forum/index.php?showtopic=20121
; Author(s):        Original code - psandu.ro
;                   Modifications - PartyPooper
;
;===============================================================================
Func _ChangeScreenRes($i_Width=@DesktopWidth, $i_Height=@DesktopHeight, $i_BitsPP=@DesktopDepth, $i_RefreshRate=@DesktopRefresh)
    Local Const $DM_PELSWIDTH = 0x00080000
    Local Const $DM_PELSHEIGHT = 0x00100000
    Local Const $DM_BITSPERPEL = 0x00040000
    Local Const $DM_DISPLAYFREQUENCY = 0x00400000
    Local Const $CDS_TEST = 0x00000002
    Local Const $CDS_UPDATEREGISTRY = 0x00000001
    Local Const $DISP_CHANGE_RESTART = 1
    Local Const $DISP_CHANGE_SUCCESSFUL = 0
    Local Const $HWND_BROADCAST = 0xffff
    Local Const $WM_DISPLAYCHANGE = 0x007E

    If $i_Width = "" Or $i_Width = -1 Then $i_Width = @DesktopWidth ; default to current setting
    If $i_Height = "" Or $i_Height = -1 Then $i_Height = @DesktopHeight ; default to current setting
    If $i_BitsPP = "" Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth ; default to current setting
    If $i_RefreshRate = "" Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh ; default to current setting

    Local $stDEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]")
    Local $aEnumDisplay = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, _
        "ptr", DllStructGetPtr($stDEVMODE))

    If @error Then Return SetError(1, 0, 0)

    If $aEnumDisplay[0] <> 0 Then
        DllStructSetData($stDEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5)
        DllStructSetData($stDEVMODE, 4, $i_Width, 2)
        DllStructSetData($stDEVMODE, 4, $i_Height, 3)
        DllStructSetData($stDEVMODE, 4, $i_BitsPP, 1)
        DllStructSetData($stDEVMODE, 4, $i_RefreshRate, 5)

        $aEnumDisplay = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($stDEVMODE), "int", $CDS_TEST)

        If @error Then
            $aEnumDisplay = -1
        Else
            $aEnumDisplay = $aEnumDisplay[0]
        EndIf

        Select
            Case $aEnumDisplay = $DISP_CHANGE_RESTART
                $stDEVMODE = ""
                Return 2
            Case $aEnumDisplay = $DISP_CHANGE_SUCCESSFUL
                DllCall("user32.dll", "int", "ChangeDisplaySettings", _
                    "ptr", DllStructGetPtr($stDEVMODE), "int", $CDS_UPDATEREGISTRY)
                DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
                        "int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width)

                $stDEVMODE = ""
                Return 1
            Case Else
                $stDEVMODE = ""
                Return SetError(1, 0, $aEnumDisplay)
        EndSelect
    EndIf
EndFunc ;==>_ChangeScreenRes

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:45, 16-04-2008 | #445


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Creat0R
Цитата Creat0R:
Многое уже до нас придумано »
Я знаю, про этот код, но он у меня не работает, из 11 компьютеров срабатывает только на нескольких, да и то через раз. Так же есть утилитка написаная на C с использованием функции ChangeDisplaySettings и она прекрасно работает, вот я и пытаюсь написать рабочий код.

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 18:03, 16-04-2008 | #446


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Maza Faka
Цитата:
из 11 компьютеров срабатывает только на нескольких, да и то через раз »
Тут немного погуглил - оказалось эта проблема встречается довольно часто когда функции ChangeDisplaySettings() и EnumDisplaySettings() для нормальной работы требуют снятия в свойствах экрана чекбокса "Скрыть неподдерживаемые режимы...", к примеру: http://www.codeproject.com/KB/system...lay_modes.aspx (см. комменты). Думаю это зависит от конкретного драйвера, но нигде не встречал решения равно как и программного способа снять эту галку... Тем более цепляет что:
Цитата:
есть утилитка написаная на C с использованием функции ChangeDisplaySettings и она прекрасно работает
может она использует EX-версии функций?

Отправлено: 05:03, 18-04-2008 | #447


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


amel27
Спасибо за информацию, как я уже тебе писал (в личку), всё дело именно в чекбоксе, а снять его несложно через реестр.
Спасибо ещё раз

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 07:27, 18-04-2008 | #448


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Maza Faka,
Цитата:
снять его несложно через реестр
Было бы полезно подсказать, где заветный раздел можно найти? - ведь функцию тогда можно сделать так, чтобы в начале (запомнив значение) записать снятие птички, а на возврате функции вернуть всё обратно...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 09:00, 18-04-2008 | #449


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Creat0R
Цитата Creat0R:
Было бы полезно подсказать, где заветный раздел можно найти? »
Воть:
Код: Выделить весь код
_ScreenSetting(800, 600, 32, 85)

Func _ScreenSetting($iWidth = @DesktopWidth, $iHeight = @DesktopHeight, $iDepth = @DesktopDepth, $iRefresh = @DesktopRefresh)
    Local Const $DISP_CHANGE_SUCCESSFUL = 0
    Local Const $DISP_CHANGE_RESTART    = 1
    Local Const $DISP_CHANGE_FAILED     = -1
    Local Const $DISP_CHANGE_BADMODE    = -2
    Local Const $DISP_CHANGE_NOTUPDATED = -3
    Local Const $DISP_CHANGE_BADFLAGS   = -4
    Local Const $DISP_CHANGE_BADPARAM   = -5

    Local Const $CDS_TEST           = 0x4
    Local Const $CDS_UPDATEREGISTRY = 0x1

    Local Const $DM_PELSWIDTH        = 0x80000
    Local Const $DM_PELSHEIGHT       = 0x100000
    Local Const $DM_BITSPERPEL       = 0x40000
    Local Const $DM_DISPLAYFREQUENCY = 0x400000

    Local Const $ENUM_CURRENT_SETTINGS   = -1
    Local Const $WM_DISPLAYCHANGE        = 0x007E
    Local Const $HWND_BROADCAST          = 0xFFFF
    Local Const $SPI_SETNONCLIENTMETRICS = 0x2A

    Local $DEVMODE, $DllRet

    $DEVMODE = DllStructCreate("char dmDeviceName[32];ushort dmSpecVersion;ushort dmDriverVersion;short dmSize;" & _
                               "ushort dmDriverExtra;dword dmFields;short dmOrientation;short dmPaperSize;short dmPaperLength;" & _
                               "short dmPaperWidth;short dmScale;short dmCopies;short dmDefaultSource;short dmPrintQuality;" & _
                               "short dmColor;short dmDuplex;short dmYResolution;short dmTTOption;short dmCollate;" & _
                               "byte dmFormName[32];dword dmBitsPerPel;int dmPelsWidth;dword dmPelsHeight;" & _
                               "dword dmDisplayFlags;dword dmDisplayFrequency")

    $DllRet = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "dword", $ENUM_CURRENT_SETTINGS, _
                      "ptr", DllStructGetPtr($DEVMODE))
    $DllRet = $DllRet[0]

    If $DllRet = 0 Then
        MsgBox(16, "Error", "Unable to get graphic mode")
        Return False
    EndIf

    $VGA_MAP_KEY = RegRead("HKLM\HARDWARE\DEVICEMAP\VIDEO", "\Device\Video0")
    $VGA_KEY = StringReplace($VGA_MAP_KEY, "\Registry\Machine", "HKLM")

    RegWrite($VGA_KEY, "PruningMode", "REG_DWORD", 0)

    DllStructSetData($DEVMODE, "dmSize", DllStructGetSize($DEVMODE))
    DllStructSetData($DEVMODE, "dmPelsWidth", $iWidth)
    DllStructSetData($DEVMODE, "dmPelsHeight", $iHeight)
    DllStructSetData($DEVMODE, "dmBitsPerPel", $iDepth)
    DllStructSetData($DEVMODE, "dmDisplayFrequency", $iRefresh)
    DllStructSetData($DEVMODE, "dmFields", BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY))

    $DllRet = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)
    $DllRet = $DllRet[0]

    If $DllRet <> $DISP_CHANGE_SUCCESSFUL Then
        Switch $DllRet
            Case $DISP_CHANGE_RESTART
                MsgBox(48, "Warning", "Restart your computer for change display settings")
            Case $DISP_CHANGE_FAILED
                MsgBox(16, "Error", "The video driver not set a new mode")
                Return False
            Case $DISP_CHANGE_BADMODE
                MsgBox(16, "Error", "Video mode not supported")
                Return False
            Case $DISP_CHANGE_NOTUPDATED
                MsgBox(16, "Error", "Unable to write in registry")
                Return False
            Case $DISP_CHANGE_BADFLAGS
                MsgBox(16, "Error", "Bad flags")
                Return False
            Case $DISP_CHANGE_BADPARAM
                MsgBox(16, "Error", "Bad parameters")
                Return False
        EndSwitch
    EndIf

    $DllRet = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY)
    $DllRet = $DllRet[0]

    DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
            "int", $SPI_SETNONCLIENTMETRICS, "int", 0)

    RegWrite($VGA_KEY, "PruningMode", "REG_DWORD", 1)

    $DEVMODE = ""
    $DllRet  = ""
EndFunc
P.S.
2 All! Пожалуйста протестируйте кому не лень.

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:48, 18-04-2008 | #450



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ FOX RED Защита компьютерных систем 67 21-11-2007 15:05
[Архив - Часть 1.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.2] AutoIt скрипты Dirk Diggler AutoIt 505 02-12-2006 11:00
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход