Что нового

Объединение скриптов на показ/сокрытие скрытых файлов и обновление проводника

amorphyc

Новичок
Сообщения
45
Репутация
0
Здравствуйте, уважаемые мастера AutoIt ! Подскажите, как осуществить соединение этих скриптов:
Код:
If RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden') = 0 Then

      RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'REG_DWORD', 1)
      RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'REG_DWORD', 1) 

   Else

      RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'REG_DWORD', 0)
      RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'REG_DWORD', 2)

EndIf


и

Код:
Global Const $SHCNE_ASSOCCHANGED = 0x08000000
Global Const $SHCNF_IDLIST = 0

DllCall('shell32.dll', 'none', 'SHChangeNotify', 'long', $SHCNE_ASSOCCHANGED, 'uint', $SHCNF_IDLIST, 'ptr', 0, 'ptr', 0)


Поочереди они прекрасно работают в XP, а при попытке соединить - ничего. Первый скрипт делает запись в реестре на показ или сокрытие скрытых файлов, а второй скрипт делает обновление проводника (сразу скажу что у меня другие варианты обновления, встречающиеся на этом форуме не работают, только этот). Так вот, запись в реестре проходит, а обновления не происходит. Пробовал давать паузу перед исполнением обновления, 10 секунд, проводник моргает - и никаких изменений! следом обновляем вручную - все проходит замечательно.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Соединение двух скриптов.

Вот тут есть методы обновления.
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
Re: Соединение двух скриптов.

Уважаемый CreatoR , я написал, что ни один из других вариантов не работает. Я давно просмотрел все эти темы, к сожалению подходит только один вариант, почему-то. А вопрос мой не в методе обновления (он уже определен), а как слить два скрипта вместе, и чтоб они работали.
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Re: Соединение двух скриптов.

А почему бы просто нельзя и таймерами разделить?
вот функции которые могут пригодится:
Код:
TimerInit()
TimerDiff()

И 2 переменных, хотя можно и без них:
Код:
$Timer1 = TimerInit()
$Timer2 = TimerInit()
While 1
if TimerDiff($Timer1) >= 10000 then
$Timer1 = TimerInit()
;Скрипт 1
EndIf
If TimerDiff($Timer2) >= 40000 Then
$Timer2 = TimerInit()
;Скрипт 2
EndIf
Sleep(1)
Wend



Добавлено:
Сообщение автоматически объединено:

amorphyc [?]
Разве такой тип есть? По моему если ничего то void
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Соединение двух скриптов.

amorphyc
Во-первых...
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Соединение двух скриптов." - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.










А во-вторых посмотри на это, работает оно в XP?
У меня кстати соединённые два скрипта в первом сообщении работают в Win 7.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Соединение двух скриптов.

Проверил на XP, этот код работает (как впрочем и в Win 7):

Код:
If RegRead('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden') = 0 Then
	RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'REG_DWORD', 1)
	RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'REG_DWORD', 1)
Else
	RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'ShowSuperHidden', 'REG_DWORD', 0)
	RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', 'Hidden', 'REG_DWORD', 2)
EndIf

_UpdateExplorer()

Func _UpdateExplorer()
	Local $Opt = Opt('WinSearchChildren', 1)
	Local $List = WinList('[CLASS:SHELLDLL_DefView]')
	
	For $i = 1 To UBound($List) - 1
		DllCall('user32.dll', 'long', 'SendMessage', 'hwnd', $List[$i][1], 'int', 0x0111, 'int', 0x7103, 'int', 0)
	Next
	
	Opt('WinSearchChildren', $Opt)
EndFunc
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
Re: Соединение двух скриптов.

Ganibal95

Разве такой тип есть? По моему если ничего то void - Я этот код нашел здесь, на форуме. Сам я пока совсем-совсем нуб... :-\


Добавлено:
Сообщение автоматически объединено:

CreatoR

Спасибо огромное!!! Вы -волшебник! :laugh: Как Вам такое удается?!!

P.S. Прошу прощение за оформление топика, более информативно не сумел выразить суть...
 
Верх