PDA

Ver la Versión Completa : ¿RunDll32? Funciones extendidas para explorer.exe


NeWNeO
06-09-2004, 00:26:42
Wolaps. Hace tiempo estoy trabajando en la integración de una aplicación dentro del entorno del explorer de windows.
Mi objetivo es integrarla lo máximo posible para que los usuarios interactuen como si un apartado más de windows se tratara.

Para iniciar mi camino empezé trabajando con claves del registro para añadir
un nuevo icono en "Mi PC" haciendo:

1-. Creando una nueva clave en HKEY_CLASSES_ROOT\CLSID
2-. Añadiendo el nombre de la clave a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\explorer\MyComputer\NameSpace
(Si alguien quiere la info completa que me lo diga)

Hasta aquí todo bien, el icono aparece en Mi PC, el comentario, las opciones en el botón derecho.. pero.. llegamos al problema: Abrir.

Basandome en el software de 1 dispositivo bluetooth (que hace justamente lo que yo quiero) encontré que este ejecuta esta línea de comando al "abrir":

rundll32.exe C:\WINDOWS\System32\BtWizard.dll,RunMyComputerShortcut

Carga ciertas funciones en memoria para que el explorer pueda interactuar con ellas, creo. Al abrir aparece en la ventana una serie de iconos y opciones del bluetooth.

El problema es que no se que acciones se encuentran en dicho dll del bluetooth para que sean cargadas por el explorer de windows. ¿Alguien me puede ayudar, o decirme alguna web donde puedan?

Gracias.

vic_ia
06-09-2004, 18:27:13
Hola....
Para iniciar mi camino empezé trabajando con claves del registro para añadir un nuevo icono en "Mi PC" haciendo:

1-. Creando una nueva clave en HKEY_CLASSES_ROOT\CLSID
2-. Añadiendo el nombre de la clave a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\explorer\MyComputer\NameSpace
(Si alguien quiere la info completa que me lo diga)

te agradeceria si mandaras o postearas esta información...

saludos...

NeWNeO
07-09-2004, 16:21:17
Antes que nada debemos obetener un GUID (Global Unic Identifier) para el registro. Usaremos la función CreateGUID para obtenerla..


var
s: string;
begin
CreateGUID(GuidToString(s));
edit1.caption(s);
end;


Una vez tenemos el GUID...

1º debemos crear un nuevo tipo en: (Nueva clave)
HKEY_CLASSES_ROOT\CLSID quedando así
HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
(sin x, las x serían el GUID generado con nuestra aplicación delphi)

En HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} :
Creamos un nuevo valor alfanumérico llamado "InfoTyp"
editamos los valores:
1) (Predeterminado) = "Nuestra Carpeta de Sistema"
2) InfoTip = "Esta es la descripción de la carpeta que aparecerá en Mi PC y en el escritorio

Creamos una subclave llamada DefaultIcon y editamos el predeterminado con la dirección al icono de nuestro invento :D

HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\DefaultIcon

Ahora debemos de crear 2 subclaves debajo de esta
HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\Shell
HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\ShellFolder

Nuevas subclaves debajo de "Shell" (estas serán las acciones que querramos dar a nuestra carpeta en el popup del botón derecho)

HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\Shell\Abrir\Command

Y Editamos el predeterminado con la acción que realizaría nuestro icono ej: "explorer.exe"
(arrancaría el explorador de windows)

Y así tantas acciones como queramos

Ahora en ShellFolder creamos un valor binario y lo editamos:
00 40 00 30 (esto impedirá que sea borrado o renombrado, 00 00 00 00 para poder editarlo)

Y por ultimo tomamos el GUID i nos dirigimos a
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Explorer\MyComputer\NameSpace y creamos una nueva clave (todo esto para el escritorio) con nuestro GUID quedando:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Explorer\MyComputer\NameSpace\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

Y editando el predeterminado de esta clave le ponemos el nombre

lo mismo pero

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Explorer\Desktop\NameSpace\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

para el escritorio

Resumen:

- HKEY_CLASSES_ROOT
-CLSID
-{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
-Shell
+DefaultIcon>Predetermiando
-Shell
-Abrir
Command>Predeterminado
-...
+ShellFolder>Atributes

- HKEY_LOCAL_MACHINE
-Software
-Microsoft
-Windows
-CurrentVersion
-Explorer
-MyComputer
-{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}>Predeterminado
-Desktop
-{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}>Predeterminado

Espero que me haya explicado bien y que sea de ayuda para todo el que lo necesite. Si hay alguna duda podeis preguntar aquí mismo

Y a ver si alguien puede resolver mi duda en la parte de \Shell\Abrir\Command
y me puede contestar a la pregunta del principio.
Gracias.