Mensaje    Asunto: Aplicación y ficheros: íconos distintos. Responder citando

Hola muchachos.
Les escribo por el siguiente inconveniente.

Lo que deseo es:
1. registrar un tipo de fichero a mi aplicación, para que al hacer doble
clic en uno de estos ficheros se abra la aplicación y se carguen los
datos en un componente TRichEdit que hay en ella;
2. que se le asigne a esa extensión de ficheros un ícono distinto que el
de la aplicación; y
3. que, si por ejemplo tengo el Explorador de Windows abierto, los cambios
se hagan efectivos tan pronto como le de doble clic al fichero, es decir
que todos los ficheros con esa extensión cambien inmediatamente su ícono
típico de la ventanita de Windows por el asignado por el programa, algo
así como darle una orden de refresco al Explorador de Windows.

El asociación se hace correctamente con el código que cito más abajo. La
parte de la carga del TRichEdit también está resulta.
Si pudieran indicarme cómo hago los otros dos puntos. En uno de mis intentos
añadí un ícono en un fichero de recursos RC, y aquí surge otro problema: que
éste se asigna automáticamente a la aplicación. No sé cómo indicar que ése
es para los ficheros nada más.

También probé el componente obtenido del Proyecto Open Source para el
Builder 6, pero tampoco me resuelve el tema de los íconos.

Estaría muy gozosa si pudieran echarme una mano con este temilla, ¡que me
estoy volviendo loca!. ¡Gracias de antemano!.

Código:
    TRegistry* Registro=new TRegistry();
    Registro->RootKey  =HKEY_CLASSES_ROOT;
    Registro->OpenKey    (".asg",true);
    Registro->WriteString("","SuperG");
    Registro->CloseKey   ();
    Registro->OpenKey    ("SuperG",true);
    Registro->WriteString("","Archivo de SuperG");
    Registro->OpenKey    ("shell",true);
    Registro->WriteString("","open");
    Registro->OpenKey    ("open",true);
    Registro->WriteString("","&Abrir");
    Registro->OpenKey    ("command",true);
    Registro->WriteString("",ParamStr(0)+" \"\%1\"");
    Registro->CloseKey   ();
    Registro->OpenKey    ("SuperG",true);
    Registro->OpenKey    ("DefaultIcon",true);
    Registro->WriteString("",ParamStr(0)+",1");
    delete Registro;