Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2011
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Shell Notify o Monitoreo de archivos

Saludos Amigos:
Necesito me aclaren si conocen algun componente o algo que me ayude a monitoriar en windows la copia de una extensión determinada de ficheros.

He estado probando con ShelNotify de los TMS Components y los de JVCL, pero no logro encontrar el nombre del fichero que cambia, hasta ahora los eventos que he podido encontar me dan solo los cambios en directorios y no logro ver el nombre del fichero para verificar la extensión.

Solamente he podido hacrlo con un Componente llamado DirMon que si funciona y puedo ver el nombre de los ficheros renombrados o copiados pero cuando lleva un rato en el monitoreo y se hacen muchas operaciones a la vez se me bloquea la aplicacion.

Me puede dar una sujerencia, ya he buscado bastante en Google y no encuentro nada concreto a ficheros solo para cambios en directorios.

Gracias Juank
Responder Con Cita
  #2  
Antiguo 19-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Te recomiendo la lectura de esto y esto. Puedes saber que "algo" cambia, en que carpeta, pero no que archivo. Mira el archivo mas moderno y a ver si tiene la extensión que quieres.

Otra forma puede ser con Hooks a las API correspondientes de apertura y creación de ficheros (OepnFile y CreateFile).

Saludos.
Responder Con Cita
  #3  
Antiguo 19-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Me gustaría añadir algo a mi mensaje anterior. El segundo enlace está equivocado, me refería al truco titulado Monitorizando el Shell sólo con la API.

En ese truco publico y subo una pequeña aplicación de ejemplo que monitoriza las acciones en un Memo. Para el caso que pretendes, fíjate en esta parte del código:
Código Delphi [-]
procedure TForm1.WMShellChanged(var Msg: TMessage);
var
  i: integer;
  ppidl: PPITEMIDLIST;
  Path: array [0..MAX_PATH] of CHAR;
begin
  ppidl:= PPITEMIDLIST(Msg.WParam);
  SHGetPathFromIDList(ppidl^, Path);
  if Path[0] = #0 then exit;
  case Msg.LParam and $7FFFFFF of
    ...............................................
    SHCNE_CREATE:
       Memo1.Lines.Add('Archivo nuevo: ' + String(Path));
    SHCNE_DELETE:
       Memo1.Lines.Add('Archivo borrado: ' + String(Path));
    ...............................................
    SHCNE_RENAMEITEM:
    begin
       i:=1;
       lstrcat(Path, ' a ');
       SHGetPathFromIDList(PAPITEMIDLIST(ppidl)[i], Path + lstrlen(Path));
       Memo1.Lines.Add('Archivo renombrado: ' + String(Path));
    end;
    ...............................................
       Memo1.Lines.Add(Path);
  end;
end;

También dispones del código en C++Builder, no se que lenguaje estás usando.

Juega con el código.


Saludos.
Responder Con Cita
  #4  
Antiguo 22-09-2011
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Gracias

Gracias escafandra lo que no me funciona este
PPITEMIDLIST este tipo no encuentro a que unit pertenece, me da un error
estoy haciendo las pruebas en delphi xe.

salud y pesetas juank

gracias amigo eres muy preocupado por responder.
Responder Con Cita
  #5  
Antiguo 22-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por juank1971 Ver Mensaje
...PPITEMIDLIST este tipo no encuentro...
No está definido en delphi. usa esto:
Código Delphi [-]
type
  PPITEMIDLIST = ^PITEMIDLIST;
  APITEMIDLIST = array [0..0] of PITEMIDLIST;
  PAPITEMIDLIST = ^APITEMIDLIST;

Saludos.
Responder Con Cita
Respuesta



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
Monitoreo de actividad en archivos MySql Carlos Arevalo MySQL 2 30-07-2007 17:03:38
esconder un icono del system try notify stuart Varios 0 12-06-2007 01:49:24
Patrón observador, attach, notify,update ... adpa OOP 5 22-01-2006 01:07:40
Monitoreo BD Oracle Sostratov Oracle 3 27-05-2005 23:35:14
Monitoreo de usuarios JAH Firebird e Interbase 4 07-08-2004 16:50:08


La franja horaria es GMT +2. Ahora son las 06:27:05.


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