Ayuda > Desarrollo de Scripts

Asociar Extensión

(1/2) > >>

Texic:
Creador: Texic
Versión de Gm utilizada:  :GM8:
Descripción: Este script sirve para crear una asociación entre un tipo de archivo y un archivo ejecutable. Puede hacerlo de dos maneras, por medio de los scripts en gml (silencioso), y si no funciona (por ejemplo en windows 7 o similares) pasa al modo no silencioso, creando y ejecutando un archivo de registro .reg
Script:

--- Código: ---//argument0: Extensión a asociar (string) Ej: ".svk"
//argument1: Ruta del archivo con que abrirlo (string) Ej: "C:\Mijuego\Juego.exe"
//argument2: Ruta del ícono asociado (string) Ej: "C:\Mijuego\Icono.ico" (Opcional)
//argument3: Tipo de archivo (string) Ej: "Archivo Guardado"
b=registry_set_root(2)
if registry_exists("\"+argument0) {exit}
b+=registry_write_string_ext("\"+argument0,"",string_copy(argument0,2,3)+"file")
b+=registry_write_string_ext('\'+string_copy(argument0,2,3)+"file","",argument3)
b+=registry_write_string_ext('\'+string_copy(argument0,2,3)+"file"+'\shell\open\command',"",argument1+' %1')
if variable_local_exists(argument2) {b+=registry_write_string_ext("\"+string_copy(argument0,2,3)+"\DefaultIcon","",argument2)}
if b=0{
argument1=string_replace_all(string_replace_all(argument1,"\","|"),"|","\\")
argument2=string_replace_all(string_replace_all(argument2,"\","|"),"|","\\")
str='Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\'+argument0+']
@="'+string_copy(argument0,2,3)+"file"+'"

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+']
@="'+argument3+'"

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+"file"+'\DefaultIcon]
@="'+argument2+'"

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+'\shell]

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+'\shell\open]

[HKEY_CLASSES_ROOT\'+string_copy(argument0,2,3)+'file'+'\shell\open\command]
@="'+argument1+' %1"
'
a=file_text_open_write(working_directory+"\reg.reg")
file_text_write_string(a,str)
file_text_close(a)
execute_shell(working_directory+"\reg.reg",0)
}
str='@echo off
taskkill /IM explorer.exe /F
CD /d %userprofile%\AppData\Local
DEL IconCache.db /a
explorer.exe
exit'
a=file_text_open_write(temp_directory+"\act.bat")
file_text_write_string(a,str)
file_text_close(a)
while(1)
{
screen_redraw()
screen_refresh()
if registry_exists_ext("\"+argument0,"") {execute_shell(temp_directory+"\act.bat",0) break}
}
--- Fin del código ---

Soporte para íconos personalizados agregado, y ejemplo sobre cómo usar los parameter string y count para reconocer los archivos asociados abiertos. Usenlo con sabiduría! ;P

Ejemplo Adjunto

PD: Para que el ícono y el nombre de la extensión sean visibles se corre un comando .bat, si lo desean pueden pasar esos comandos de manera silenciosa con silentdos, que se encuentra en gmtoolbox.com. Lo dejo a su elección, de otra manera se muestra en pantalla

Mgbu:
Que bueno! podria venirme bien para un juego que estoy haciendo...

Texic:
Genial, aunq creo q estaría mejor con ícono, no? Cuando logre esa parte posteo acá para que se enteren, y de paso hago un ejemplo usando parameter_count y parameter_string para que al abrir el archivo asociado, el juego haga algo específico

Mgbu:

--- Cita de: Texic en Agosto 01, 2012, 11:20:46 pm ---Genial, aunq creo q estaría mejor con ícono, no? Cuando logre esa parte posteo acá para que se enteren, y de paso hago un ejemplo usando parameter_count y parameter_string para que al abrir el archivo asociado, el juego haga algo específico

--- Fin de la cita ---
Ah, entonces por ahora cuando haces doble click a un .svk se abre el juego como si hubieras entredo al .exe
Ahora que lo pienso es obvio, porque el juego se abre y ni se entera XD

Texic:
Claro, a menos que sepas usar los parameter_count y parameter_string, porq si no me equivoco, así como está ya pasa el parámetro de la ruta completa del archivo abierto al juego

Edit: Actualizado el post principal y agregado soporte para íconos y nombre del tipo de extensión!

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa