Что нового

Как задать ассоциации типов файлов?

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Всем привет.

Подскажите, как ассоциировать определенный тип файлов с определенной программой?
Есть мысли, что делается это через реестр. Но я понятия не имею, где именно.

Если кто не понял суть - объясню подробно:
допустим, есть файл "file.asso";
нужно с помощью скрипта AutoIt задать ассоциацию файлов с расширением "*.asso" с программой "AssoExecute.exe".
 

sngr

AutoIT Гуру
Сообщения
988
Репутация
393
Код:
RegWrite('HKCR\.asso','',"REG_SZ",'Asso')
RegWrite('HKCR\Asso\shell\open\command','',"REG_SZ",'"C:\AssoExecute.exe" "%1"')
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
kasper_sky [?]
как ассоциировать определенный тип файлов с определенной программой?

Код:
_RegSetFileExt('asso', 'C:\MyProgram.exe %1', 'Открыть с MyProgram', 0, 'C:\MyProgram.exe,0', 'Описание')

Func _RegSetFileExt($sExt, $sCommand, $sVerb, $iDefault = 0, $sIcon = "", $sDescription = "")
	Local $sExtRead = RegRead("HKCR\." & $sExt, "")

	If @error Then
		RegWrite("HKCR\." & $sExt, "", $g_REGTYPE_REG_SZ, $sExt & "file")
		$sExtRead = $sExt & "file"
	EndIf

	Local $sCurrentDescription = RegRead("HKCR\" & $sExtRead, "")

	If @error Then
		If $sDescription <> "" Then RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
	Else
		If $sDescription <> "" And $sCurrentDescription <> $sDescription Then
			RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
			RegWrite("HKCR\" & $sExtRead, "olddesc", $g_REGTYPE_REG_SZ, $sCurrentDescription)
		EndIf

		If $sCurrentDescription = "" And $sDescription <> "" Then RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
	EndIf

	Local $sCurrentVerb = RegRead("HKCR\" & $sExtRead & "\shell", "")
	Local $iError = @error

	If $iDefault = 1 Then
		RegWrite("HKCR\" & $sExtRead & "\shell\Open\Command", "", $g_REGTYPE_REG_EXPAND_SZ, $sCommand)

		If $iError Then
			RegWrite("HKCR\" & $sExtRead & "\shell", "", $g_REGTYPE_REG_SZ, $sVerb)
		Else
			RegWrite("HKCR\" & $sExtRead & "\shell", "", $g_REGTYPE_REG_SZ, $sVerb)
			RegWrite("HKCR\" & $sExtRead & "\shell", "oldverb", $g_REGTYPE_REG_SZ, $sCurrentVerb)
		EndIf
	EndIf

	Local $sCurrentCommand = RegRead("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "")

	If Not @error Then
		RegRead("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "oldcmd")
		If @error Then RegWrite("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "oldcmd", $g_REGTYPE_REG_SZ, $sCurrentCommand)
	EndIf

	RegWrite("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "", $g_REGTYPE_REG_SZ, $sCommand)

	If $sIcon <> "" Then
		Local $sCurrentIcon = RegRead("HKCR\" & $sExtRead & "\DefaultIcon", "")

		If @error Then
			RegWrite("HKCR\" & $sExtRead & "\DefaultIcon", "", $g_REGTYPE_REG_SZ, $sIcon)
		Else
			RegWrite("HKCR\" & $sExtRead & "\DefaultIcon", "", $g_REGTYPE_REG_SZ, $sIcon)
			RegWrite("HKCR\" & $sExtRead & "\DefaultIcon", "oldicon", $g_REGTYPE_REG_SZ, $sCurrentIcon)
		EndIf
	EndIf
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,432
Репутация
599
http://autoit-script.ru/index.php?topic=2444.0
http://autoit-script.ru/index.php?topic=1195.0
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
joiner
Это готовые программы для ассоциации, насколько я понял автору же нужен метод отдельно.
 

joiner

Модератор
Локальный модератор
Сообщения
3,432
Репутация
599
программы вроде как с исходниками.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
joiner [?]
программы вроде как с исходниками.
Тебе не кажется что новичку лучше дать пример решения его задачи, нежели показывать исходник программы и чтобы он в ней копался?
Я понимаю если речь про не очень простую задачу, но тут же всё довольно тривиально (при наличии некоторой смекалки).
 

AZJIO

Меценат
Меценат
Сообщения
2,768
Репутация
1,156
kasper_sky
ContMenuFiles - во первых визуально показывает необходимые данные для регистрации. Во вторых достаточно сделать экспорт одного расширения и посмотреть reg-файл.
 
Верх