AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

Ein Thema von derdaniel · begonnen am 15. Mär 2009 · letzter Beitrag vom 16. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von derdaniel
derdaniel

Registriert seit: 25. Dez 2007
Ort: Dillingen/Saar
12 Beiträge
 
Delphi 2006 Personal
 
#1

Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 00:13
Moin DP,

ich hoffe ich bin in dieser Kategorie richtig.

Ich möchte gern ein Auswerfen von Datenträgern im Apple-Stil realisieren.
Desktopverknüpfung beim einlegen/einstecken anlegen ist soweit kein Problem,
jedoch suche ich eine Funktion um auf das löschen bzw. verschieben in den
Papierkorb der Verknüpfung zu reagiern.
Habe mir dazu diverse Sachen hier im Forum angesehen und mehrer Komponenten
ausprobiert, jedoch reagieren diese nicht auf Verknüpfungen,sondern nur
auf "normale" Dateien/Ordner.

Hoffe jemand von euch hat ne Iddee dazu,

danke schonmal


-derdaniel.
Daniel
ใจเย็นๆ

der Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 00:44
Schau dir mal MSDN-Library durchsuchenFindFirstChangeNotification bzw. MSDN-Library durchsuchenFindNextChangeNotification an. Ich meine mich erinnern zu können, dass eine Überwachung, die ich damit mal gemacht habe auch auf Verknüpfungen reagiert hat.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von derdaniel
derdaniel

Registriert seit: 25. Dez 2007
Ort: Dillingen/Saar
12 Beiträge
 
Delphi 2006 Personal
 
#3

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 01:30
Danke erstmal,
hatte bereits mehrere Komponenten die diese Funktionen nutzen getestet, leider ohne Erfolg.
Das kuriose ist, das wenn ich die Verknüpfung "von Hand" erstelle (Rechtsklick usw..)
oder lösche(über Explorer) dann funktionierts, verwende ich jedoch "CreateDesktopLink" (Luckie)
oder "DeleteFile",dann funzt's net...

Ne Iddee?
Daniel
ใจเย็นๆ

der Daniel
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#4

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 01:49
das Erstellen funktioniert http://xwatch.de/download/index.html mit den Shortcuts hier ganz gut
z.b.
Delphi-Quellcode:
Createshortcut(SpecialDirectory(CSIDL_Desktop)+'Jompf.lnk',
                 path.text+'\Jompf.exe','/info',
                 path.text+'\', SW_SHOWNORMAL,
                 path.text+'\Jompf.exe', 0);
aber mit dem Löschen hatte ich damals auch meine Schwierigkeiten meine ich aber so sollte es gehen, habs eben mal getestet GL

DeleteFile(specialDirectory(CSIDL_Desktop)+'Jompf.lnk');
  Mit Zitat antworten Zitat
Benutzerbild von derdaniel
derdaniel

Registriert seit: 25. Dez 2007
Ort: Dillingen/Saar
12 Beiträge
 
Delphi 2006 Personal
 
#5

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 02:13
Ähhhhmm, ich hab kein Problem beim Erstellen oder Löschen der Verknüpfugen,
sondern diesen Vorgang benachrichtigt zu bekommen,
eben mit "FindFirstChangeNotification" o.ä.

...
Daniel
ใจเย็นๆ

der Daniel
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 15:10
Zitat von derdaniel:
oder "DeleteFile",dann funzt's net...

Hallo, ich bin nicht sicher, ob ich dein Problem genau verstanden habe.

Testweise habe ich die JvChangeNotify von der JCVL genommen, eine Notification für Desktop gesetzt und
eine lnk Datei auf dem Desktop erstellt.

Lösche ich nun die lnk Datei per DeleteFile, wird das ChangeNotify Ereignis ausgelöst.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von derdaniel
derdaniel

Registriert seit: 25. Dez 2007
Ort: Dillingen/Saar
12 Beiträge
 
Delphi 2006 Personal
 
#7

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 20:16
Habs nochmal mit JvChangeNotify probiert, funktioniert leider nicht.
Erstelle ich manuell eine Verknüpfung und lösche Sie mit DeleteFile
kommt eine Benachrichitigung.
Erstelle ich die Verknüpfung mit meinem Programm und lösche sie mit
DeleteFile oder dem Explorer funktionierts nicht...

Die Eigenschaft CheckIntervall von TJvChangeNotify hat mich jedoch
auf eine Idee gebracht, da ich die Verknüpfungen selbst erstelle und
lösche, hab ich ja eh die Dateinamen, also Timer rein und per
FileExists gucken ob Sie da ist...

Is zwar blöd wenn se jemand verschiebt, aber gut man(n) kann eben
nicht alles haben...

thx@toms
Daniel
ใจเย็นๆ

der Daniel
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 21:48
Und wenn du das so machst:
Delphi-Quellcode:
unit uNotifyChanges;

interface

uses Windows, SysUtils, Dialogs;

const
  KERNEL32 = 'kernel32.dll';

  FILE_NOTIFY_CHANGE_FILE_NAME = $1; //1
  FILE_NOTIFY_CHANGE_DIR_NAME = $2; //2
  FILE_NOTIFY_CHANGE_ATTRIBUTES = $4; //4
  FILE_NOTIFY_CHANGE_SIZE = $8; //8
  FILE_NOTIFY_CHANGE_LAST_WRITE = $10; //16
  FILE_NOTIFY_CHANGE_SECURITY = $100; //256
  FILE_NOTIFY_CHANGE_ALL = $7F; //127


  function RegisterDirectoryWatch (const lpDir : PChar; bWatchSub : Boolean = False; dwFlags : DWORD = 1) : String;

implementation

function RegisterDirectoryWatch (const lpDir : PChar; bWatchSub : Boolean = False; dwFlags : DWORD = 1) : String;
var
  hHnd : THandle;
  dwWait : DWORD;
begin
  if lpDir <> 'then
  begin
    hHnd := FindFirstChangeNotification (lpDir,
                                         bWatchSub,
                                         dwFlags);

    if hHnd = INVALID_HANDLE_VALUE then
    begin
      Result := '';
    end
    else
    begin
      while TRUE do
      begin
        dwWait := WaitForSingleObject(hHnd, INFINITE);
        case dwWait of
          WAIT_OBJECT_0:
            begin
              Result := lpDir;
              Exit;
            end;
        end;
      end;
    end;
    FindCloseChangeNotification(hHnd);
  end;
end;

end.
Klappt bei mir wunderbar ^^
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von derdaniel
derdaniel

Registriert seit: 25. Dez 2007
Ort: Dillingen/Saar
12 Beiträge
 
Delphi 2006 Personal
 
#9

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 15. Mär 2009, 22:40
Ich kapier's einfach net, die ganzen Überwachungs-Funktionen laufen super solange
ich die Verknüpfungen von Hand erstelle, nutze ich Luckie's CreateDesktopLink,
gehen die ganzen Funktionen auf einmal nichmehr, nichmal wenn ich eine damit
erstellte Datei von Hand lösche...

Danke trozdem an alle für die Mühen, werde wohl bei dem Timer bleiben,
erscheint mir die einfachste Lösung...
Daniel
ใจเย็นๆ

der Daniel
  Mit Zitat antworten Zitat
Tom

Registriert seit: 7. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#10

Re: Ordner auf Änderung überwachen/Auswerfen im Apple-Stil

  Alt 16. Mär 2009, 06:11
Zitat von derdaniel:
Ich kapier's einfach net, die ganzen Überwachungs-Funktionen laufen super solange
ich die Verknüpfungen von Hand erstelle, ...
Versuche es mal mit TDirMonitor, bei www.torry.net nach DirMonitor suchen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf