Ver Mensaje Individual
  #2  
Antiguo 12-04-2006
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Reputación: 22
German Va por buen camino
Supongo que te refieres a que una determinada extensión de archivo aparezca en el explorador de Windows con un determinado icono, y que se abra con un determinado programa. Esto puede conseguirse a través de los registros del sistema, pero tendrás que hacerlo en cualquier ordenador que utilice el ejecutable hecho en delphi, e incluir el icono que utilizara en el directorio de tu programa. Para ello, bastaría que comprobaras en el evento "OnCreate" del form principal si estos registros ya están creados, y si no, crearlos.

Por ejemplo, si la extensión fuera ".jur":
Código Delphi [-]
Uses (...) ShlObj, Registry;

(...)

procedure TForm1.FormCreate(Sender: TObject);
var Registro: tRegistry;
begin
  Registro := tRegistry.Create;
  with Registro do
  begin
    RootKey := HKEY_CLASSES_ROOT;
    if not OpenKey('.jur',False) then
    begin
      CreateKey('.jur');
      OpenKey('.jur',False);
      WriteString('','jur');
      CloseKey;
      CreateKey('jur');
      OpenKey('jur',False);
      // Descripción del tipo de archivo personal:
      WriteString('','Archivo personal de mi programa');
      CloseKey;
      CreateKey('jur\DefaultIcon');
      OpenKey('jur\DefaultIcon',False);
      // Ruta hasta el icono que utilizara el tipo de archivo personal:
      WriteString('','C:\MiPrograma\MiIcono.ico,0');
      CloseKey;
      CreateKey('jur\Shell\Open');
      OpenKey('jur\Shell\Open',False);
      // Descripción que aparece en el menu contextual del explorador:
      WriteString('', '&Abrir archivo personal'); 
      CloseKey;
      CreateKey('jur\Shell\Open\Command');
      OpenKey('jur\Shell\Open\Command',False);
      // Ruta hasta el EXE que abrirá el tipo de archivo personal:
      WriteString('', '"C:\MiPrograma\MiEjecutable.exe" "%1"');
      CloseKey;
      // Esto actualiza la "vista" del explorador:
      SHChangeNotify( SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil, nil);
    end;
    CloseKey;
    Free;
  end;
end;


Nota: La creación de los registros también la podria hacer el programa de instalación de tu aplicación.

Salu2.
__________________
Tengo las manos llenas de dedos... Tengo los dedos llenos de teclas...
Tengo las teclas desordenadas... Tengo el desorden muy controlado...
Tengo el control en mis manos.

Última edición por German fecha: 14-04-2006 a las 00:15:11.
Responder Con Cita