AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Laufwerke für schnelle Dateisuche indizieren

Laufwerke für schnelle Dateisuche indizieren

Ein Thema von mumu · begonnen am 19. Sep 2005 · letzter Beitrag vom 19. Sep 2005
Antwort Antwort
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#1

Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 10:26
wie kann ich diese Funktion mittels API Befehl aktivieren bzw. deaktivieren? (siehe anhang)
Miniaturansicht angehängter Grafiken
indizierung_128.jpg  
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 12:38
Vielleicht mit:
Delphi-Quellcode:
// indizieren
SetFileAttributes(..., GetFileAttributes(...) and not FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
// nicht indizieren
SetFileAttributes(..., GetFileAttributes(...) or FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.868 Beiträge
 
Delphi 12 Athens
 
#3

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 12:52
Also der Code von Nico funktioniert (allerdings nur für das Indexattribut und nicht für die Verschlüsselung - und natürlich auch nur auf NTFS-Laufwerken)

Allerdings ist das ja nur der Weg für Dateien/Verzeichnisse ... bei der Standardeinstellung des Laufwerkes geht damit nichts. (und mumu scheint ja gerade dieses zu wollen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#4

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 13:02
ja genau, ich möchte die komplette indizierung des laufwerkes deaktivieren und nicht nur die von einzelnen dateien und verzeichnissen.

oder muss ich dazu einfach alle dateien und verzeichnisse durchgehen und jeweils das indizierungsattribut deaktivieren?
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#5

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 13:08
Zitat von himitsu:
bei der Standardeinstellung des Laufwerkes geht damit nichts.
Getestet unter welchem System?
(lies: bei mir geht's)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  INVALID_FILE_ATTRIBUTES = DWORD(-1);
  FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000;
var
  Attr: DWORD;
begin
  Attr := GetFileAttributes(PChar(Edit1.Text));
  if INVALID_FILE_ATTRIBUTES = Attr then
  begin
    ShowMessage('GetFileAttributes: ' + SysErrorMessage(GetLastError()));
    Exit;
  end;
  if CheckBox1.Checked then
    Attr := Attr and not FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
  else
    Attr := Attr or FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
  if not SetFileAttributes(PChar(Edit1.Text), Attr) then
    ShowMessage('SetFileAttributes: ' + SysErrorMessage(GetLastError()));
end;
Zitat von mumu:
oder muss ich dazu einfach alle dateien und verzeichnisse durchgehen und jeweils das indizierungsattribut deaktivieren?
Ja.
(nichts anderes macht der Standard-Eigenschaftsdialog)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.868 Beiträge
 
Delphi 12 Athens
 
#6

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 13:14
Du kannst das natürlich bei allen Dateien einzeln abstellen.
Und in den Unterverzechnissen des Laufwerkt ist dann auch die indizierung abgestellt, da ja meistens die Attribute des Verzeichnisses genommen werden.
Allerdings werden dann alle neu erstellten Dateien/Verzeichnisse im Hauptverzeichnis immer wieder indiziert, diese ja die Attribute des Laufwerks bekommen.

PS: Ich persünlich hab ja der Indizierung direkt in der Systemsteuerung den gar ausgemacht ... hab sie einfach "deinstalliert" ^^


getestet auf'm WinXP Pro.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#7

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 13:24
Zitat von himitsu:
getestet auf'm WinXP Pro.
Was hast Du als Dateinamen angegeben?
(meiner einer hat 'I:' verwendet, also ohne '\')
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Laufwerke für schnelle Dateisuche indizieren

  Alt 19. Sep 2005, 14:23
Hi folks,

wenn die Indexerstellung für das Dateisystem abgeschaltet werden soll, dann gibt es da verschiedene Methoden. Hier ein Beispiel, bei dem alle Einstellungen erhalten bleiben, aber das Befüllen des zugehörigen Katalogs angehalten wird:

Delphi-Quellcode:
const
  CICAT_STOPPED = 1;

function SetCatalogState(catalog: PWideChar; machine: PWideChar;
  newState: Cardinal; var OldState: Cardinal): Cardinal;
  stdcall; external 'query.dll';

procedure TMainForm.StopButtonClick(Sender: TObject);
var
  wsCatalog, wsMachine: WideString;
  dwResult, oldState: Cardinal;
begin
  wsCatalog := 'system';
  wsMachine := '.';
  dwResult := SetCatalogState(PWideChar(wsCatalog), PWideChar(wsMachine), CICAT_STOPPED, oldState);
  if dwResult = 0
    then ShowMessage('angehalten')
    else ShowMessage(IntToHex(dwResult, 8));
end;
Wer mehr will, der sollte die Automationsobjekte aus der ciodm.dll importieren und sich ein wenig mit der query.dll (beide %windir%\system32) beschäftigen.

Grüße vom marabu
  Mit Zitat antworten Zitat
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 14:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz