|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36560 |
Внимание! В связи с созданием отдельного форума по 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 |
|