[архив - Часть 2] AutoIt скрипты

Ответить
 • Просмотры: 22
Аватара пользователя
Drsmog

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Drsmog »

Огроменное спасибо !!!!!!!!!!!! Изображение Изображение Изображение
Аватара пользователя
Drsmog

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Drsmog »

Creat0R


Цитата:



у тебя случайно на клаве нет лишних кнопочек? например Power/Sleep
[архив - Часть 2] AutoIt скрипты




угу, кнопки питания не блокируются... на MSDN по этому поводу написано, что эти события не доходят до API, т.е. их нужно перехватывать раньше - в драйвере клавиатурного фильтра:
How to disable the keyboard Sleep button with a filter driver
... хотя можно попытаться порулить политикой питания, на ентот счет есть свои API и, к примеру, менять эти настройки на время блокировки Изображение


Цитата:



я не ставил ещё последнюю версию
[архив - Часть 2] AutoIt скрипты




не вопрос - вот вариант для версии 3.2.8.1, там в общем все довольно просто... объединил заодно две функции в одну - теперь кодировку текста можно задавать прямо в параметрах (для текста в UTF8 - 65001)... Кстати, обнаружил что, в 10-ке алгоритм более продуманный в плане производительности.

Код:

Код: Выделить всё

Func _GUICtrlStatusBarSetTextEx($h_StatusBar, $s_Data = "", $i_Part = 0, $iCode = 0)
    If Not IsHWnd($h_StatusBar) Then $h_StatusBar = HWnd($h_StatusBar)
    If Not _IsClassName ($h_StatusBar, "msctls_statusbar32") Then Return SetError(-1, -1, False)
    Local $ret = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
        "int", $iCode, "int", 0, _
        "str", $s_Data, "int", -1, _
        "ptr", 0, "int", 0)
    If $ret[0]=0 Then Return SetError(-1, -1, 0)
    Local $struct_String = DllStructCreate("byte[" & $ret[0]*2+2 & "]")
    Local $sBuffer_pointer = DllStructGetPtr($struct_String)
    Local $struct_MemMap
    Local $Memory_pointer = _MemInit ($h_StatusBar, DllStructGetSize($struct_String), $struct_MemMap)
    If @error Then
        _MemFree ($struct_MemMap)
        Return SetError(-1, -1, 0)
    EndIf
    $ret = DllCall("Kernel32.dll", "int", "MultiByteToWideChar", _
        "int", $iCode, "int", 0, _
        "str", $s_Data, "int", -1, _
        "ptr", DllStructGetPtr($struct_String), "int", $ret[0])
    If $ret[0]=0 Then
        _MemFree ($struct_MemMap)
        Return SetError(-1, -1, 0)
    EndIf
    _MemWrite ($struct_MemMap, $sBuffer_pointer)
    If @error Then
        _MemFree ($struct_MemMap)
        Return SetError(-1, -1, 0)
    EndIf
    $ret = _SendMessage($h_StatusBar, $SB_SETTEXT+10, $i_Part, $Memory_pointer)
    If @error Then
        _MemFree ($struct_MemMap)
        Return SetError(-1, -1, 0)
    EndIf
    _MemFree ($struct_MemMap)
    Return $ret
EndFunc   ;==>_GUICtrlStatusBarSetTextEx
Аватара пользователя
Drsmog

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Drsmog »

Нужна помощь !!!!!!!! Пажалуйста кто нибуть !!!!!!!!!!!! Изображение



а если в блокноте, строке есть знак + тогда выполнить дествие, а если нет + тогда естественно другое дествие





я так примерно написал а почему то тока плюс проверяет



$NotepadTitle = "[CLASS:Notepad]"





WinWait($NotepadTitle)







$EditText = ControlGetText($NotepadTitle, "", "Edit1")



If StatusbarGetText ( $EditText,"+" ) Then

Send('{DOWN}')

;Делаем наше действие Изображение

MsgBox(0, "", "ПЛЮС")

ElseIf StatusbarGetText ( $EditText, "-" ) Then

Send('{DOWN}')

;Делаем наше действие Изображение

MsgBox(0, "", "МИНУС")





EndIf



Мне надо так

если +(тока в строке) тогда дествие

если -(тока в строке) тогда другое дествие

если ?(тока в строке) тогда другое дествие

ну и т.д
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

fak1r,


Цитата:



нельзя ли как нить сделать прогу на автоите для заливки картинок на этот сайт



Если помучаться, то наверняка можно, смотри в сторону TCP-функции, ну или через библиотеку IE.au3.



Drsmog,


Цитата:



StatusbarGetText



А при чём тут StatusBar? Изображение




Цитата:



Мне надо так





Код:

Код: Выделить всё

$NotepadTitle = "[CLASS:Notepad]"
Run(@WindowsDir & "\Notepad.exe")
WinWait($NotepadTitle)
ControlSetText($NotepadTitle, "", "Edit1", "Просто текст с - ") ;Задаём текст с "-"
$EditText = ControlGetText($NotepadTitle, "", "Edit1")
Select
    Case StringInStr($EditText, "+") And Not StringRegExp($EditText, "-|\?")
        Action_Plus()
    Case StringInStr($EditText, "-") And Not StringRegExp($EditText, "\+|\?")
        Action_Minus()
    Case StringInStr($EditText, "?") And Not StringRegExp($EditText, "\-|\+")
        Action_Question()
EndSelect
;Просто закроем то что открыли
WinClose($NotepadTitle)
WinWaitClose($NotepadTitle, "", 1)
If WinActive("[CLASS:#32770]", "&") Then ControlClick("[CLASS:#32770]", "&", "Button2")
Func Action_Plus()
    ;Тут что-то делаем
    MsgBox(0, "", "ПЛЮС")
EndFunc
Func Action_Minus()
    ;Тут делаем что-то другое
    MsgBox(0, "", "МИНУС")
EndFunc
Func Action_Question()
    ;Тут делаем что-то другое
    MsgBox(0, "", "ВОПРОС")
EndFunc

Я только не уверен, что значит “тока в строке”?
Аватара пользователя
Drsmog

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Drsmog »

Этот скрипт проверяет всю страницу в блокноте на наличии знаков, а надо чтоб искал тока в строчке, допустим в блокноте

стоят знаки в столбик.

+

-

?

тогда этот скрипт несрабатывает.

Надо чтоб возле каждого символа писал слово

например

+ это плюс

- это минус

? а это вопрос
Аватара пользователя
Drsmog

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Drsmog »

Как выслать в EXEL 2003 клавиши Ctrl+a

я делаю так send('{Ctrl}+{a}')

и несрабатывает :-((, а должно было все выделится
Аватара пользователя
fak1r

Re: [архив - Часть 2] AutoIt скрипты

Сообщение fak1r »

SvetlanaK,
Цитата SvetlanaK:



Мне надо ответить - "не обновлять"
[архив - Часть 2] AutoIt скрипты




хм, а почему "не обновлять"?.. Вот нажатие "обновлять" можно "автоматизировать" в Excel: параметры\правка\запрашивать об обновлении... Проблема в том, что скрипт простаивает ожидая завершения открытия файа, поэтому чтобы нажать на кнопку нужен уже второй скрипт... Изображение Можно конечно замутить аналог AdLib на CallBack, но для этого нужно знать версию AutoIT... а может все-таки "обновить"? Изображение



Drsmog



Код:

Код: Выделить всё

send("^a")
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Drsmog,


Цитата:



Этот скрипт проверяет всю страницу в блокноте на наличии знаков



Задача была поставлена значит неясно...






Цитата:



Надо чтоб возле каждого символа писал слово



А это уже совсем другая задача Изображение



Что то вроде этого:





Код:

Код: Выделить всё

$NotepadTitle = "[CLASS:Notepad]"
Run(@WindowsDir & "\Notepad.exe")
WinWait($NotepadTitle)
ControlSetText($NotepadTitle, "", "Edit1", "+" & @CRLF & "-" & @CRLF & "?")
$EditText = ControlGetText($NotepadTitle, "", "Edit1")
;Разделим весь текст из блокнота по строчкам, и заменим в каждой строчке по надобности
$SplitText = StringSplit($EditText, @CRLF)
$NewText = ""
For $i = 1 To UBound($SplitText)-1
    If StringInStr($SplitText[$i], "+") Then
        $SplitText[$i] = StringReplace($SplitText[$i], "+", "+ это плюс")
    ElseIf StringInStr($SplitText[$i], "-") Then
        $SplitText[$i] = StringReplace($SplitText[$i], "-", "- это минус")
    ElseIf StringInStr($SplitText[$i], "?") Then
        $SplitText[$i] = StringReplace($SplitText[$i], "?", "? это вопрос")
    EndIf
    $NewText &= $SplitText[$i] & @CRLF
Next
ControlSetText($NotepadTitle, "", "Edit1", $NewText)
MsgBox(0, "", "Сделано!")
;Просто закроем то что открыли
WinClose($NotepadTitle)
WinWaitClose($NotepadTitle, "", 1)
If WinActive("[CLASS:#32770]", "&") Then ControlClick("[CLASS:#32770]", "&", "Button2")



fak1r,

Увы, мне тоже никогда не приходилось производить авторизацию на сайте/форуме, я поищю на оф. форуме, возможно там кто-то уже делал подобное...
Аватара пользователя
Drsmog

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Drsmog »

Спасибо !!! Ну вроде то что надо
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Два вопроса на повестке дня:



1) Возможно ли отключить (временно) устройство ввода (клавиатуру)? позже нужно будет его включить, без “побочных эффектов” Изображение



2) Как определить, установлен ли Flash Player для Internet Explorer?

Обсуждение на оф. форуме
зашло в тупик, функция чуть ниже возвращает True, однако при открытии странички с роликом на YouTube к примеру, получаю предупреждение о том что нужно установить Flash Player...





Код:

Код: Выделить всё

Func ShockWavePlayer_Installed()
    Local $sObjRead = RegRead("HKCR\CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}\ProgID", "")
    Local $sFlashObj = ObjCreate($sObjRead)
    If Not IsObj($sFlashObj) Then Return False
    Return True
EndFunc
Ответить

Вернуться в «AutoIt»