Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Googler


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

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


Цитата Maza Faka:
Send("{+ Down}") »
не так, Shift+Down это будет: Send("+{Down}")

Цитата HORRIBLE:
есть команда ControlClick("Adobe Acrobat 8 Professional", "", "[CLASS:Button; TEXT:Accept; INSTANCE:2]")
[...] что это такое »
то же самое что ControlClick("Adobe Acrobat 8 Professional", "", "Button2")

Creat0R
вроде разобрался как управлять кнопками питания, вот UDF и пример:
Код: Выделить весь код
Global Const $PowerActionNone = 0
Global Const $PowerActionReserved = 1
Global Const $PowerActionSleep = 2
Global Const $PowerActionHibernate = 3
Global Const $PowerActionShutdown = 4
Global Const $PowerActionShutdownReset = 5
Global Const $PowerActionShutdownOff = 6
Global Const $PowerActionWarmEject = 7

Dim $aOFF[3]=[0,0,0]
$aBAK = PowerKeysCallState($aOFF) ; читаем/записываем состояние клавиш
MsgBox(0,'','Клавиши питания заблокированы!')
PowerKeysCallState($aBAK) ; восстанавливаем состояние клавиш
MsgBox(0,'','Состояние клавиш восстановлено!')

; $aKeys[0] - Power Key Action
; $aKeys[1] - Sleep Key Action
; $aKeys[2] - NoteBook Close Action

Func PowerKeysCallState($aKeys = 0)
    Local Const $SysPwrPolLen = 232 ; size of SYSTEM_POWER_POLICY structure
    Local $buf = DllStructCreate("byte["&$SysPwrPolLen&"]")
    Local $tmp = DllStructCreate("long;int;long[2];int;long[2];int;long[2]", DllStructGetPtr($buf))
    ; Чтение текущей системной политики питания
    Local $ret = DllCall("PowrProf.dll", "int", "CallNtPowerInformation", "int", 0, _
        "ptr", 0, "int", 0, "ptr", DllStructGetPtr($buf), "int", DllStructGetSize($buf))
    If Not(IsArray($ret)) Then SetError(1, @error) ; ошибка DLL
    If $ret[0] Then Return SetError(2, $ret[0])    ; ошибка чтения политики
    ; Сохранение текущей конфигурации клавиш в выходном массиве
    Local $i, $res[3]
    For $i=1 To 3
        $res[$i-1] = DllStructGetData($tmp,$i*2)
    Next
    ; Сохранение требуемой конфигурации в структуре данных политики
    If UBound($aKeys,1)=3 Then ; проверка типа данных
        For $i=1 To 3
            If BitShift($aKeys[$i-1],3)=0 Then ; проверка допустимого значения
                DllStructSetData($tmp, $i*2, $aKeys[$i-1])
                If $aKeys[$i-1]=0 Then DllStructSetData($tmp,$i*2+1,BitOR (DllStructGetData($tmp,$i*2+1,2),0x80000000),2)
                If $aKeys[$i-1]>0 Then DllStructSetData($tmp,$i*2+1,BitAND(DllStructGetData($tmp,$i*2+1,2),0x7FFFFFFF),2)
            EndIf
        Next
        ; Применение новой политики
        $ret = DllCall("PowrProf.dll", "int", "CallNtPowerInformation", "int", 0, _
            "ptr", DllStructGetPtr($buf), "int", $SysPwrPolLen, "ptr", 0, "int", 0)
        If Not(IsArray($ret)) Then SetError(1, @error) ; ошибка DLL
        If $ret[0] Then Return SetError(3, $ret[0])    ; ошибка записи политики
    EndIf
    Return $res
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:07, 30-11-2007 | #790