|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
|
(*.*) Сообщения: 36572 |
Внимание! В связи с созданием отдельного форума по 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 | |
|