|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36490 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным. Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать gregaz
Цитата:
Цитата:
|
||
------- Отправлено: 14:17, 21-01-2008 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата Maza Faka:
Как обработать их различив Например при одинарном запуск файла - при двойном на редактирование файла Я понимаю нужно начать обработку полученного рез-та через промежуток времени после прохождения двойного клика Не могу сообразить как это сделать не останавливая работу скрипта (Sleep не подходит т.к приостанавливает скрипт) Цитата Maza Faka:
Непонятно чем заказать порядок сортировки .Этот заказанный порядок должен поступить на $WM_NOTIFY. Наверно через стили ListView ? |
||
Отправлено: 16:14, 21-01-2008 | #32 |
Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата Maza Faka:
При первом клике колонки - прямая сортировка При повторном - обратная #include <GuiListView.au3> #include <GuiImageList.au3> $Gui = GUICreate("Demo Func LV_Sort", 400, 250) $hListView = _GUICtrlListView_Create($GUI, "Items|SubItems1|SubItems2|SubItems3", 2, 2, 320, 120, BitOR($LVS_EDITLABELS, $LVS_REPORT)) $hImage = _GUIImageList_Create (16,16,5); _GUIImageList_AddIcon ($hImage, "shell32.dll", 3); _GUIImageList_AddIcon ($hImage, "shell32.dll", 11); _GUIImageList_AddIcon ($hImage, "shell32.dll", 22); _GUIImageList_AddIcon ($hImage, "shell32.dll", 43); _GUIImageList_AddIcon ($hImage, "shell32.dll", 44); _GUICtrlListView_SetImageList ($hListView, $hImage, 1) $ListItem1 = _GUICtrlListView_AddItem($hListView, "Boris",0) $ListItem2 = _GUICtrlListView_AddItem($hListView, "Anna",2) $ListItem3 = _GUICtrlListView_AddItem($hListView, "Sveta",1) $ListItem4 = _GUICtrlListView_AddItem($hListView, "Misha",3) $ListItem5 = _GUICtrlListView_AddItem($hListView, "Olga",4) _GUICtrlListView_AddSubItem ($hListView, 0,'44', 1) _GUICtrlListView_AddSubItem ($hListView, 1,'22', 1) _GUICtrlListView_AddSubItem ($hListView, 2,'11', 1) _GUICtrlListView_AddSubItem ($hListView, 3,'33', 1) _GUICtrlListView_AddSubItem ($hListView, 4,'55', 1) _GUICtrlListView_AddSubItem ($hListView, 0,'Петр', 2) _GUICtrlListView_AddSubItem ($hListView, 1,'Елена', 2) _GUICtrlListView_AddSubItem ($hListView, 2,'Анна', 2) _GUICtrlListView_AddSubItem ($hListView, 3,'Раиса', 2) _GUICtrlListView_AddSubItem ($hListView, 4,'Иван', 2) _GUICtrlListView_AddSubItem ($hListView, 0,'4', 3) _GUICtrlListView_AddSubItem ($hListView, 1,'23', 3) _GUICtrlListView_AddSubItem ($hListView, 2,'1', 3) _GUICtrlListView_AddSubItem ($hListView, 3,'24', 3) _GUICtrlListView_AddSubItem ($hListView, 4,'123', 3) GUISetState() Global $pp=99,$par=0 GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($hListView) ] While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Exit ;------------------------------------------------------------------------------------------- Func LV_Sort($namb) ;Счетчик заходов If $pp=$namb Then $par=1 $pp=$namb ;ListView ---> в массив $itN=_GUICtrlListView_GetItemCount($hListView) $colN=_GUICtrlListView_GetColumnCount($hListView) Dim $iArr[$itN][$colN+2] For $ii= 0 To $itN-1 $aItem=_GUICtrlListView_GetItem($hListView, $ii) $iArr[$ii][0]=_GUICtrlListView_GetItemText($hListView, $ii,$namb);Добавление 0-й колонки с текстом сортируемой For $jj=1 To $colN $iArr[$ii][$jj]=_GUICtrlListView_GetItemText($hListView, $ii,$jj-1) $iArr[$ii][$jj+1]=$aItem[4] Next Next ;Сортировка массива _ArraySort( $iArr,'','','',$colN+2) ;Обратная сортировка массива If $par=1 Then $p=0 $p1=$itN-1 $p2=Ceiling ( $itN/2) For $ii=0 To $p2-1 For $jj=1 To $colN+1 _ArraySwap( $iArr[$p][$jj], $iArr[$p1][$jj] ) Next $p =$p+1 $p1 =$p1-1 Next EndIf ; массив ---> в ListView _GUICtrlListView_DeleteAllItems($hListView) For $ii=0 To $itN-1 _GUICtrlListView_AddItem($hListView,$iArr[$ii][1],$iArr[$ii][$colN+1]) For $jj=1 To $colN _GUICtrlListView_AddSubItem ($hListView, $ii,$iArr[$ii][$jj], $jj-1) Next Next ;Счетчик заходов If $par=1 Then $pp=99 $Par=0 EndFunc ;-------------------------------------------------------------------------------------------- Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $hListView If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $LVN_COLUMNCLICK ; Клик по колонке $aHit = _GuiCtrlListView_SubItemHitTest ($hWndListView) LV_Sort($aHit[1]) Case $LVN_BEGINLABELEDIT Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam) Return False Case $LVN_ENDLABELEDIT Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam) Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text")) If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Поскольку это проба пера просьба дать рекомендации по упрощению ф-ии |
|
Отправлено: 09:50, 23-01-2008 | #33 |
Пользователь Сообщения: 65
|
Профиль | Отправить PM | Цитировать несколько постов выше приводил пример скрипта, кто-нибудь может подсказать как его модифицировать чтобы он вместо существования ярлыка проверял значения ключа в реесте
если значение 1 - скрипт отрабатывает (меняет значение на 0, прописыв себя в автозагрузку и ребутит комп), если значение 0 - выход из скрипта (удаляет себя из автозагрузки)
|
------- Последний раз редактировалось kalikanzaros, 23-01-2008 в 13:01. Отправлено: 12:07, 23-01-2008 | #34 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 16:40, 23-01-2008 | #35 |
Пользователь Сообщения: 65
|
Профиль | Отправить PM | Цитировать Creat0R,
спасибо, вчера вечером долго смотрел справку, но не понял как получить значение ключа для проверки на условие, поэтому и спрашиваю тут... |
------- Отправлено: 16:43, 23-01-2008 | #36 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать gregaz,
Цитата:
#include <GuiConstantsEx.au3> #include <GuiListView.au3> #include <GuiImageList.au3> Global $nCurCol = -1 Global $nHold_Column = -1 Global $nSortDir = 1 Global $bSort_Set = 0 $Gui = GUICreate("Demo Func LV_Sort + Editable LV Items", 400, 250) $hListView = GUICtrlCreateListView("Items|SubItems1|SubItems2", 2, 2, 320, 120, BitOR($LVS_EDITLABELS, $LVS_REPORT)) $hImage = _GUIImageList_Create (16, 16, 5) _GUIImageList_AddIcon ($hImage, "shell32.dll", 3) _GUIImageList_AddIcon ($hImage, "shell32.dll", 11) _GUIImageList_AddIcon ($hImage, "shell32.dll", 22) _GUIImageList_AddIcon ($hImage, "shell32.dll", 43) _GUIImageList_AddIcon ($hImage, "shell32.dll", 44) _GUICtrlListView_SetImageList ($hListView, $hImage, 1) $ListItem1 = _GUICtrlListView_AddItem ($hListView, "Boris", 0) $ListItem2 = _GUICtrlListView_AddItem ($hListView, "Anna", 2) $ListItem3 = _GUICtrlListView_AddItem ($hListView, "Sveta", 1) $ListItem4 = _GUICtrlListView_AddItem ($hListView, "Misha", 3) $ListItem5 = _GUICtrlListView_AddItem ($hListView, "Olga", 4) _GUICtrlListView_AddSubItem ($hListView, 0, '44', 1) _GUICtrlListView_AddSubItem ($hListView, 1, '22', 1) _GUICtrlListView_AddSubItem ($hListView, 2, '11', 1) _GUICtrlListView_AddSubItem ($hListView, 3, '33', 1) _GUICtrlListView_AddSubItem ($hListView, 4, '55', 1) _GUICtrlListView_AddSubItem ($hListView, 0, 'Петр', 2) _GUICtrlListView_AddSubItem ($hListView, 1, 'Елена', 2) _GUICtrlListView_AddSubItem ($hListView, 2, 'Анна', 2) _GUICtrlListView_AddSubItem ($hListView, 3, 'Раиса', 2) _GUICtrlListView_AddSubItem ($hListView, 4, 'Иван', 2) GUICtrlRegisterListViewSort($hListView, "LVSort") ; Register the function "LVSort" for the sorting callback GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd ; Our sorting callback funtion Func LVSort($hWnd, $nItem1, $nItem2, $nColumn) Local $iFind_1, $iFind_2 Local $tInfo = DllStructCreate($tagLVFINDINFO) DllStructSetData($tInfo, "Flags", $LVFI_PARAM) ; Switch the sorting direction If $nColumn = $nCurCol Then If Not $bSort_Set Then $nSortDir *= -1 $bSort_Set = 1 EndIf Else $nSortDir = 1 EndIf $nHold_Column = $nColumn DllStructSetData($tInfo, "Param", $nItem1) $iFind_1 = _GUICtrlListView_FindItem ($hWnd, -1, $tInfo) DllStructSetData($tInfo, "Param", $nItem2) $iFind_2 = _GUICtrlListView_FindItem ($hWnd, -1, $tInfo) $iFind_1 = _GUICtrlListView_GetItemText ($hWnd, $iFind_1, $nColumn) $iFind_2 = _GUICtrlListView_GetItemText ($hWnd, $iFind_2, $nColumn) $nResult = 0 ; No change of item1 and item2 positions If $iFind_1 < $iFind_2 Then $nResult = -1 ; Put item2 before item1 ElseIf $iFind_1 > $iFind_2 Then $nResult = 1 ; Put item2 behind item1 EndIf $nResult *= $nSortDir Return $nResult EndFunc ;==>LVSort Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView $hWndListView = $hListView If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $LVN_COLUMNCLICK Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam) $bSort_Set = 0 $nCurCol = $nHold_Column GUICtrlSendMsg($hListView, $LVM_SETSELECTEDCOLUMN, DllStructGetData($tInfo, "SubItem"), 0) DllCall("user32.dll", "int", "InvalidateRect", "hwnd", $hWndListView, "int", 0, "int", 1) Case $LVN_BEGINLABELEDIT, $LVN_BEGINLABELEDITW Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam) Return False Case $LVN_ENDLABELEDIT, $LVN_ENDLABELEDITW Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam) Local $iTextMax = DllStructGetData($tInfo, "TextMax") Local $pText = DllStructGetData($tInfo, "Text") If $pText = 0 Then Return False Local $sBuffer = "char Text[" & $iTextMax & "]" If $iCode = $LVN_ENDLABELEDITW Then $sBuffer = "wchar Text[" & $iTextMax & "]" Local $tBuffer = DllStructCreate($sBuffer, $pText) Local $sNewText = DllStructGetData($tBuffer, "Text") If StringLen($sNewText) Then Return True EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY |
|
------- Последний раз редактировалось Creat0R, 24-01-2008 в 00:46. Причина: Исправлены неточности в коде Отправлено: 17:08, 23-01-2008 | #37 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать kalikanzaros,
Цитата:
$WindowMetrics_Value = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "MinAnimate") If $WindowMetrics_Value = 1 Then ;Пишем 0 в ветку <HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\MinAnimate> RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "MinAnimate", "REG_SZ", 0) ;Пишем скрипт в автозапуск RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", _ @ScriptName, "REG_SZ", FileGetShortName(@ScriptFullPath)) ;Ребутим. Shutdown(6) Exit Else ;Удаляем скрипт из автозапуска RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName) Exit EndIf |
|
------- Отправлено: 17:22, 23-01-2008 | #38 |
Пользователь Сообщения: 65
|
Профиль | Отправить PM | Цитировать Creat0R,
большое спасибо, проверю - отпишусь, думаю все будет прекрасно работать |
------- Отправлено: 17:47, 23-01-2008 | #39 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Поправил свой пост с примером сортировки и редактирования списка, немного некорректно задавалась переменная ($sNewText) с новым текстом, при юникодной версии нужно использовать wchar а не char.
|
------- Отправлено: 00:56, 24-01-2008 | #40 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 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 |
|