Не отрабатывает функция обновления скрипта
Есть код:
читать дальше »
Код:
#include <ButtonConstants.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
Global $hKey, $sKey, $hSubKey, $sData, $tData, $aCreateNew, $aList1, $sList1 ='', $aList2, $sList2 ='', $Count = 1
Dim $aKey[1]
Global $hKeySR, $hKeyRR
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate('Редактирование меню "Создать"', 505, 355, 236, 233)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
$Group_Delete = GUICtrlCreateGroup("Удалить из меню", 8, 8, 489, 201)
$ListView_New = GUICtrlGetHandle(GUICtrlCreateListView("Расширение|Путь к ShellNew...", 16, 26, 377, 172, -1, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT)))
_GUICtrlListView_SetColumnWidth(-1, 0, 80)
_GUICtrlListView_SetColumnWidth(-1, 1, 272)
$Button_SelectAllNew = GUICtrlCreateButton("Выделить Все", 400, 26, 89, 39, BitOR($BS_MULTILINE,$WS_GROUP))
GUICtrlSetOnEvent(-1, '_SelectAllNew')
$Button_UnSelectAllNew = GUICtrlCreateButton("Отменить", 400, 78, 89, 39, BitOR($BS_MULTILINE,$WS_GROUP))
GUICtrlSetOnEvent(-1, '_UnSelectAllNew')
$Button_CleanNew = GUICtrlCreateButton("Удалить", 400, 160, 89, 39, BitOR($BS_MULTILINE,$WS_GROUP))
GUICtrlSetOnEvent(-1, '_CleanNew')
$Button_RefreshNew = GUICtrlCreateButton("Обновить", 400, 305, 89, 39, BitOR($BS_MULTILINE,$WS_GROUP))
GUICtrlSetOnEvent(-1, '_RefreshNew')
#EndRegion ### END Koda GUI section ###
_ArCreateNew()
GUISetState()
While 1
Sleep(100)
WEnd
Func CLOSEClicked()
Exit
EndFunc
Func _ArCreateNew()
$tData = DllStructCreate('wchar[260]')
$hKey = _WinAPI_RegOpenKey($HKEY_CLASSES_ROOT, '', $KEY_READ)
While 1
$sData = ''
$sKey = _WinAPI_RegEnumKey($hKey, $Count)
If @error Then
ExitLoop
EndIf
$Count += 1
$hSubKey = _WinAPI_RegOpenKey($hKey, $sKey & '\ShellNew', $KEY_READ)
If @error Then
If StringLeft($sKey, 1) <> '.' Then
ContinueLoop
EndIf
$hSubKey = _WinAPI_RegOpenKey($hKey, $sKey, $KEY_READ)
If @error Then
ContinueLoop
EndIf
If _WinAPI_RegQueryValue($hSubKey, '', $tData) Then
$sData = DllStructGetData($tData, 1)
Else
$sData = ''
EndIf
_WinAPI_RegCloseKey($hSubKey)
If Not $sData Then
ContinueLoop
EndIf
$hSubKey = _WinAPI_RegOpenKey($hKey, $sKey & '\' & $sData & '\ShellNew', $KEY_READ)
If @error Then
ContinueLoop
EndIf
EndIf
If (_WinAPI_RegQueryValue($hSubKey, 'NullFile', $tData)) Or (_WinAPI_RegQueryValue($hSubKey, 'Command', $tData)) Or (_WinAPI_RegQueryValue($hSubKey, 'FileName', $tData)) Or (_WinAPI_RegQueryValue($hSubKey, 'ItemName', $tData)) Then
$sList1 &= StringRegExpReplace('HKEY_CLASSES_ROOT\' & $sKey & '\' & $sData, '\\*\Z', '') & '\ShellNew' & '|'
$sList2 &= $sKey & '|'
EndIf
_WinAPI_RegCloseKey($hSubKey)
WEnd
_WinAPI_RegCloseKey($hKey)
$aList1 = StringSplit(StringTrimRight($sList1, 1), '|', 2)
$aList2 = StringSplit(StringTrimRight($sList2, 1), '|', 2)
Dim $aCreateNew [UBound($aList2)][2]
For $n = 0 To UBound($aList2) - 1
$aCreateNew [$n][0]=$aList2[$n]
$aCreateNew [$n][1]=$aList1[$n]
Next
_GUICtrlListView_AddArray($ListView_New, $aCreateNew)
EndFunc
Func _SelectAllNew() ; Выделить Все
_GUICtrlListView_SetItemChecked($ListView_New, -1)
EndFunc
Func _UnSelectAllNew() ; Отменить
_GUICtrlListView_SetItemChecked($ListView_New, -1, False)
EndFunc
Func _CleanNew() ; Удалить
For $p =1 To _GUICtrlListView_GetItemCount($ListView_New)
If _GUICtrlListView_GetItemChecked($ListView_New, $p)=1 Then
RegDelete(_GUICtrlListView_GetItemText($ListView_New, $p, 1))
Endif
Next
_GUICtrlListView_DeleteAllItems($ListView_New)
_ArCreateNew()
EndFunc
Func _RefreshNew() ; Обновить
GUICtrlSetState($Button_RefreshNew, $GUI_DISABLE)
_GUICtrlListView_DeleteAllItems($ListView_New)
_ArCreateNew()
sleep(1000)
GUICtrlSetState($Button_RefreshNew, $GUI_ENABLE)
EndFunc
Скрипт не отрабатывает при попытке обновить информацию (кнопка "Обновить"+ в кнопке "Удалить" тоже есть функция обновления) в окне вывода ListViewNew, т.е. при удалении того/иного элемента (item) информация в окне обновляется только после перезагрузке всего скрипта....
PS Система XP SP3, autoit 3 +
|