Что нового

Folder Image Chooser

SECTOR

Продвинутый
Сообщения
399
Репутация
59
AutoIt: 3.3.4.0
Версия: 2.1

Категория: Разное

Описание: Программа для изменения фона папок.
Код: N/A
Screenshot:

Файл: Скачать (в архиве EXE и AU3)

Источник: Эта страница
Автор: SECTOR

Писал и пробовал только на XP.
Программа очень сырая! Коментируйте! Делайте предложения по улучшению!

\----- Версия 1.0 - Первая версия
/

\----- Версия 2.0 - 26.09.2010
+ Код переписан с нуля!
+ Выбор цветов!
+ И много чего нового!
/

\----- Версия 2.1 - 30.09.2010
+ Добавлена кнопка очистки файла Desktop.ini
+ Блокировка повторного запуска
/
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
SECTOR [?]
Прошу помощи добавить функцию смены цвета текста
Позже выложу свой аналог данной утилиты, там эта проблема решена.
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Zaramot сказал(а):
SECTOR сказал(а):
Прошу помощи добавить функцию смены цвета текста (пробовал сам, но цвета отображались не те, которые выбирались :()

Есть функция _ChooseColor() для отображения диалога цвета. Или покопайся тут http://autoit-script.ru/index.php/topic,1382.0.html
А при чем тут это? С выбором цвета проблем нет, проблемы есть с установкой! :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Смена текста чего?
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Yashied сказал(а):
Смена текста чего?

Моя "программа" редактирует Desktop.ini определённой папки. В нем есть секция {BE098140-A513-11D0-A3A4-00C04FD706EC}, в которой есть параметр IconArea_Text. Меняю я значение этого параметра, допустим, на синий (0x000000FF), а в Explorer'e отображается красный!!!

Надеюсь хоть сейчас правильно и понятно описал проблему :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
SECTOR сказал(а):
Меняю я значение этого параметра, допустим, на синий (0x000000FF), а в Explorer'e отображается красный!!!

Потому что в WinAPI цвета представляются в виде BGR, а не RGB, т.е. синий - 0x00FF0000, красный - 0x000000FF. "Вверх ногами". Для перевода туда-сюда используй функцию _WinAPI_SwitchColor() или так:

Код:
BitOR(BitAND($iColor, 0x00FF00), BitShift(BitAND($iColor, 0x0000FF), -16), BitShift(BitAND($iColor, 0xFF0000), 16))
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Yashied, спасибо, попробую. :IL_AutoIt_1:
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Утилита обновлена до версии 2.1

+ Код переписан с нуля!
+ Выбор цветов!
+ Добавлена кнопка очистки файла Desktop.ini
+ Блокировка повторного запуска
+ И много чего нового!
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
это из-за версии?
3290694192_20101011_042438.png
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Guezt Gutsy, это нормально. Я здесь об этом уже говорил.
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
да нет, я имел ввиду что вообще не работает ни скрипт ни исполняемый (скомпилированный ".exe") (попробовал пересобрать - не помогло) :scratch:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Guezt Gutsy сказал(а):
да нет, я имел ввиду что вообще не работает ни скрипт ни исполняемый (скомпилированный ".exe") (попробовал пересобрать - не помогло)

У меня тоже. А все потому, что у меня уже есть открытое окно - Mozilla Firefox, содержащее в заголовке "Folder Image Chooser".

SECTOR, проверку программы на повторный запуск правильнее делать так:

Код:
Opt('WinTitleMatchMode', 3)

Global Const $GUI_UNIQUE = 'FIC_qrwXp'

If Not WinGetHandle($GUI_UNIQUE) Then
	AutoItWinSetTitle($GUI_UNIQUE)
Else
	Exit
EndIf

...


Или более продвинутый вариант:

Код:
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>

Opt('WinTitleMatchMode', 3)
Opt('WinWaitDelay', 0)

Global Const $GUI_NAME = 'Folder Image Chooser'
Global Const $GUI_UNIQUE = 'FIC_qrwXp'

_AutoItCheck()

GUICreate($GUI_NAME & ChrW(160), 400, 400)
GUISetState()

Do
Until GUIGetMsg() = -3

Func _AutoItCheck()

	Local $hWnd = WinGetHandle($GUI_UNIQUE)

	If Not $hWnd Then
		AutoItWinSetTitle($GUI_UNIQUE)
		Return
	EndIf

	Local $PID, $List

	$PID = WinGetProcess($hWnd)
	If $PID > -1 Then
		$List = _WinAPI_EnumProcessWindows($PID, 0)
		If Not IsArray($List) Then
			Exit
		EndIf
	EndIf
	For $i = 1 To $List[0][0]
		If WinGetTitle($List[$i][0]) = $GUI_NAME & ChrW(160) Then
			If BitAND(WinGetState($List[$i][0]), 4) Then
				WinActivate($List[$i][0])
			Else
				For $j = 1 To $List[0][0]
					If (WinGetTitle($List[$j][0])) And (_WinAPI_GetAncestor($List[$j][0], $GA_ROOTOWNER) = $List[$i][0]) Then
						WinActivate($List[$j][0])
						ExitLoop
					EndIf
				Next
			EndIf
			ExitLoop
		EndIf
	Next
	Exit
EndFunc   ;==>_AutoItCheck
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Мда, позже переделаю :smile:
 
Верх