![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
hola, gracias a todos por la ayuda.
he probado con la funcion SHChangeNotify... ahun si exito, pero creo que la solucion esta alli... Gracias a todos... Se acepatan sugerencias... Saludos. El Negriz |
|
#2
|
||||
|
||||
|
Me gustaría resucitar este hilo para aportar un detalle útil en este tema, al menos para mi.
Código:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); He traceado los mensajes del explorador y he visto dos cosas interesantes: 1º Al pulsar F5 se genera un mensaje WM_COMMAND LPARAM 0x1A220 LPARAM 0 2º Al elegir la opción de menú ver \ actualizar, se genera un mensaje WM_COMMAND LPARAM 0x0A220 LPARAM 0 Así que: Código:
PostMessage(HWND_BROADCAST, WM_COMMAND, 0x0A220, 0); La pega está en que este sistema es muy dependiente del software del explorador actual y si Microsoft lo cambia dejará de funcionar, así como no funcionará, muy posiblemente, en otros exploradores. Como curiosidad, me ha parecido interesante publicarlo. Saludos. |
|
#3
|
||||
|
||||
|
Bueno, he de hacer una aclaración a mi post anterior.
El sistema funciona tal cual, pero SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); envía a "todas" las ventanas top-level. He comprobado que algunos elementos del Microsoft Office reaccionan mal a ese mensaje y se cuelgan. Como la idea me sigue pareciendo buena, he creado un código para enviar el mensaje a todas las ventanas de una determinada clase (ClassName) con lo que el "bug" queda solucionado. Publico el código, considero que puede ser interesante para otras utilidades también. Código:
// Estructura con los datos del mensaje a enviar y el nombre de la clase de ventana
struct TClassMsg{
UINT Msg;
WPARAM wParam;
LPARAM lParam;
char* ClassName;
};
BOOL CALLBACK EnumWindowsProc(HANDLE Handle, LPARAM lParam)
{
int SizeBuffer = 256;
char* Buffer = new char[SizeBuffer+1];
TClassMsg *ClassMsg = (TClassMsg*)lParam;
int S = GetClassName(Handle, Buffer, SizeBuffer);
if(S)
if(stricmp(Buffer, ClassMsg->ClassName)==0){
// Si coincide el ClasName con el deseado, se envía el mensaje
PostMessage(Handle, ClassMsg->Msg, ClassMsg->wParam, ClassMsg->lParam);
}
delete Buffer;
return true;
}
typedef BOOL (__stdcall *TP)();
void PostMessageToWindowClass(char *ClassName, UINT Msg, WPARAM wParam, LPARAM lParam)
{
TClassMsg ClassMsg;
ClassMsg.Msg = Msg;
ClassMsg.wParam = wParam;
ClassMsg.lParam = lParam;
ClassMsg.ClassName = ClassName;
// Enumero las ventanas
EnumWindows((TP)EnumWindowsProc, LPARAM(&ClassMsg));
}
Código:
PostMessageToWindowClass("CabinetWClass", WM_COMMAND, 0x0A220, 0);
Saludos. Última edición por escafandra fecha: 10-10-2008 a las 21:34:20. |
|
#4
|
||||
|
||||
|
pues la verdad si estab un poco muerto, voy a mirar gracias.
|
|
#5
|
||||
|
||||
|
pues va de maravilla, muchas gracias...
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Tab en el Explorador de Windows | vtdeleon | Noticias | 2 | 16-05-2007 00:14:09 |
| FlashMemory no se ve en Explorador | Deiv | Windows | 5 | 16-02-2007 00:28:58 |
| Ejecutar un PHP sin explorador | majaco | Internet | 1 | 24-04-2006 17:24:34 |
| Problemas con el Explorador con las PC en Red | santi33a | Windows | 0 | 20-12-2005 17:16:46 |
| Explorador de directorios. | zugazua2001 | Varios | 1 | 08-06-2005 17:48:54 |
|