Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 30-05-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Puedes convertir a tu aplicación en una extensión del Shell, para elle debes ser capaz de recibir el mensaje WM_SETTINGCHANGE que se envía al Shell y sus extensiones al producirse cambios. Esas notificaciones se envían mediante la API
SHChangeNotify. En tu caso debes controlar el valor SHCNE_CREATE:

Código:
typedef ULONG(WINAPI *PSHChangeNotifyRegister)(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
                                     int cEntries, const SHChangeNotifyEntry *pshcne);

typedef BOOL (WINAPI *PSHChangeNotifyDeregister)(ULONG ulID);

// Convertir el formulario en receptor del mensaje WM_SETTINGCHANGE
void __fastcall TForm1::StartNotification()
{
    PSHChangeNotifyRegister SHChangeNotifyRegister =
           (PSHChangeNotifyRegister)GetProcAddress(GetModuleHandle("shell32.dll"), "SHChangeNotifyRegister");

    SHChangeNotifyEntry shCNE;
    shCNE.pidl = 0;
    shCNE.fRecursive = TRUE;

    // Eventos que se van a registrar
    LONG Events =  SHCNE_CREATE |SHCNE_DELETE;

    m_ulSHChangeNotifyRegister = SHChangeNotifyRegister(Handle, SHCNRF_INTERRUPT_LEVEL | SHCNRF_SHELL_LEVEL, Events, WM_USER_SHELLCHANGED, 1, &shCNE);
}


//-------------------------------------------------------------------------
// Responder al mensaje
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
   if(Message.Msg == WM_USER_SHELLCHANGED){
     switch(Message.LParam & 0x7FFFFFF)
     {
       case SHCNE_CREATE:
         // tu código dr creación de fichero
         break;
       case SHCNE_DELETE:
         // tu código de destrucción de fichero
         break;
     }
   }
   TForm::WndProc(Message);
}

// Destructor del Form Eliminarnos como extensión del Shell:
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    PSHChangeNotifyDeregister SHChangeNotifyDeregister =
      (PSHChangeNotifyDeregister)GetProcAddress(GetModuleHandle("shell32.dll"), "SHChangeNotifyDeregister");

    if(m_ulSHChangeNotifyRegister)
      SHChangeNotifyDeregister(m_ulSHChangeNotifyRegister);

}

Saludos.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Evento cuando se crea un componente sobre el mio delphiladero OOP 1 17-06-2008 12:51:10
Donde y cuando se crea el PDOXUSRS.LCK? elcigarra Conexión con bases de datos 6 03-01-2006 17:07:16
saber si es directorio o archivo rob1 Varios 6 16-12-2005 05:08:27
Saber si es directorio o archivo. DarkByte API de Windows 2 24-10-2004 15:59:24
Al pulsar tab en grid, no tabula, y crea nuevo registro. setry2 OOP 2 31-05-2003 23:14:57


La franja horaria es GMT +2. Ahora son las 03:31:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi