Autor Beitrag
nina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Mi 05.02.03 09:23 
Hallo Leute!

Hier bin ich wieder und das gleich mit zwei Fragen!!!! :D

Kann mir einer von Euch sagen wie ich den Verlauf löschen kann. Ich habe schon einiges probiert, aber das alles klappt nicht so wie ich es gerne hätte! Der Verlauf steht bei mir unter

C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Verlauf

Und dann würde ich auch noch gerne wissen, wie man die Auto-Complete Einträge löschen kann!!!

Danke schon mal im vorraus für Eure hilfe!!!

nina
Shadowdragon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Mi 05.02.03 17:06 
Also da gibt's 2 Wege, von denen ich weiss.

(1) Du schreibst das Ganze in QBASIC, und zwar so:
ausblenden Quelltext
1:
2:
3:
CLS
KILL "C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Verlauf\*.*"
END


In Delphi gibt's den Befehl DeleteFile, der schaut dann so aus:
ausblenden Quelltext
1:
2:
3:
begin
deletefile ('C:\buch\blabla.txt')  ;
end;


Wie man damit aber den Inahlt eines gesamten Ordners löscht, weiss ich nicht, sorry...

wahrscheinlich kann einer der Profis hier weiterhelfen.

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 07.02.03 20:26 
Shadowdragon hat folgendes geschrieben:
QBASIC ähm, was ist das ? Oder wer braucht das ?

ausblenden Quelltext
1:
2:
3:
begin
deletefile ('C:\buch\blabla.txt')  ;
end;




Ersetze blabla.txt durch *.*, der Pfad muß aber stimmen.

Gruß
Hansa
Shadowdragon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Fr 07.02.03 20:44 
QBASIC steht für QuickBASIC und ist ein DOS-Programmierprogramm, eines der einsteigerfreundlichsten :)


Ja, hansa, dachte ich auch, dem ist aber nicht so! Delphi muss irgend einen anderen Zeichencode für "alle Dateien" haben, denn ich habe es etliche male mit dem *.* ausprobiert, und das geht nicht! Bei QBASIC klappt das prima, aber bei Delphi nicht.

Und an meiner Version kann das ja schlecht liegen, schließlich hab ich Delphi 6 Personal ....... :?

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 07.02.03 21:35 
Shadowdragon hat folgendes geschrieben:
... Ja, hansa, dachte ich auch, dem ist aber nicht so! .....


Da scheinst Du Recht zu haben. Hier ist ein Grundgerüst für sowas, das funktioniert :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
begin
  deleteFile ('net.001');
  deleteFile ('net.cfg');
  IF NOT RemoveDir ('C:\a') THEN
    showmessage ('Verzeichnis XY konnte nicht gelöscht werden !');
end;

Auf Anhieb verstehe ich das auch nicht (mehr). 8) Notfalls muß mit Suche in: Delphi-Forum, Delphi-Library FINDFIRST, Suche in: Delphi-Forum, Delphi-Library FINDNEXT eine Repeat - Schleife aufgebaut werden. Falls es dringend ist habe ich dazu ein Beispiel.

Gruß
Hansa

Korrektur: Im Verzeichnis C:\a sind nur diese zwei Dateien :!: Vor RemoveDir muß das leer sein!
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Fr 07.02.03 21:52 
Hallo!

Da stimmt aber was nicht!

hansa hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
3:
begin
deletefile ('C:\buch\blabla.txt')  ;
end;

Ersetze blabla.txt durch *.*, der Pfad muß aber stimmen.


DeleteFile kann nur eine Datei löschen!
Es wird wohl nichts anderes übrig bleiben, als mit FindFirst/FindNext/FindClose zu arbeiten und die Dateien einzeln zu löschen!

Gruß

Dietmar Brüggendiek
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 07.02.03 22:00 
Hi Brueggendiek,

auch schon aufgewacht? 8) Ich hab ja zumindest vor ner halben Stunde noch geschrieben wie das ganze restlos zu beseitigen ist. :mrgreen: :mrgreen:

Gruß
Hansa
Shadowdragon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 143

Win 2000
Delphi 6 Pers., Delphi 7
BeitragVerfasst: Fr 07.02.03 22:38 
Ich hab das Ganze mal in QBASIC für dich geschrieben, funktioniert einwandfrei.....

wenn du's haben willst, mail mir mal, man darf hier ja keine Links posten.
Kriegst auch den Source dazu ^__^

_________________
Ein Programm gleicht dem Prinzip von Jenga:
Viele Bestandteile, wird nach oben hin immer besser, nach unten hin immer instabiler und wenn man was falsch macht klappt der ganze Mist zusammen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 08.02.03 09:37 
Brueggendiek hat folgendes geschrieben:
Es wird wohl nichts anderes übrig bleiben, als mit FindFirst/FindNext/FindClose zu arbeiten und die Dateien einzeln zu löschen!

Wie wär´s mit Suche in: Delphi-Forum, Delphi-Library SHFILEOPERATION? Neben Kopieren und Verschieben lassen sich damit Dateien auch löschen. Mehrere Dateien, ganze Ordner ... inkl. Fortschrittsanzeige -wenn´s mal wieder länger dauert!- weil das ganze nämlich der Funktion aus dem Win-Explorer entspricht.

Beispiele müssten hier im Forum zu finden sein.
Auf jeden Fall fündig wird man im MSDN/PSDK.
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Mi 12.02.03 08:42 
Hallo Leute,

danke für Eure Tipps. Ich werde sie im laufe des Tages mal ausprobieren und wenn es klappt dann meld ich mich und wenn nicht, dann meld ich mich ebenfalls!!!! :D

nina
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Do 13.02.03 14:32 
Hallo Leute,

also ich habs jetzt gestern den ganzen Tag probiert und heute vormittag auch noch mal. Aber kein einziger Code funzt bei mir!!!! Ich werde den Code mal hier rein schreiben, vielleicht sieht ja einer von Euch den Fehler. Was ich vielleicht noch dazusagen sollte! Delphi compiliert zwar das Programm richtig, aber löschen tut er den Ordner "Verlauf" deswegen troztdem nich!!!

Unter implementation steht dieser Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function DelDir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc  := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom  := PChar(dir + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;

Und unter dem Button "Löschen" steht dieser:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if history.Checked
then begin
    DelDir('C:\Dokumente und Einstellungen\+"GetCurrentUserName"+\Lokale Einstellungen\Verlauf\');
end;

Wäre Euch sehr dankbar wenn mir einer da draussen helfen könnte!!!!

nina

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Fr 14.02.03 06:20 
Hallo Nina!

So wie ich das verstanden habe, muß SHFileOperation einen (oder mehrere) Dateinamen haben. "blabla\" ist aber ein Directorynamen!
Schreibe doch einfach man "blabla\*.*" - Versuch macht kluch!

Gruß

Dietmar Brüggendiek
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Fr 14.02.03 09:06 
Hallo Dietmar,

danke für den Tipp. Im ersten Moment hat es auch geklappt, aber sobald ich wieder im Netz bin, sind alle Adressen wieder im Verlauf drin. Damit meine ich dann auch die Adressen vom Tag vorher, die ich ja kurz vorher gelöscht hatte.

Ich schätze mal, dass das an den index. dat liegt, denn die sind ja in diesem Moment nicht gelöscht. Ich bin auch gerade dabei herauszufinden wie das in Delphi funktioniert. Habe allerdings erst herausgefunden, dass man die index. dat wahrscheinlich in Windows nur im DOS löschen kann.

Wenn irgendjemand mehr dazu weiss, dann postet es mir bitte!!!!

Danke

nina
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.02.03 11:27 
Brueggendiek hat folgendes geschrieben:
So wie ich das verstanden habe, muß SHFileOperation einen (oder mehrere) Dateinamen haben. "blabla\" ist aber ein Directorynamen!

Nein. Es können auch Ordnernamen sein. Dass die Funktion einen Fehler verursacht, liegt IMHO am Backslash am Ende. Bei jedem anderen Ordner geht´s simpel mit
ausblenden Delphi-Quelltext
1:
DelDir('C:\OrdnerName');					

bspw.

Zum Löschen des Verlaufs braucht man aber was anderes. ´s wundert mich, dass sich DaFox noch nicht zu Wort gemeldet hat. (@Markus: :wink:). Folgender Tipp stammt von ihm und funktioniert sehr gut.

Die Warnung zuerst:
Wer ohne die VCL arbeitet, sollte unbedingt die Unit "ActiveX" zusätzlich einbinden und im Hauptteil des Programms folgendes tun:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
begin
  CoInitialize(nil);

  { ... }

  CoUnInitialize;
end.

Ohne dies gab´s bei mir einen saftigen Blue-Screen bzw. Fehlermeldungen beim Versuch, den Cache zu löschen. Bei der VCL ist zu 95% davon auszugehen, dass -insbesondere bei der Nutzung von solchen COM- u.ä. Routinen- die beiden o.g. Befehle durch eine andere Unit aufgerufen werden. Wer 100% sicher sein will, integriert diese beiden Befehle auch bei VCL-Projekten in seine Unit. Anbieten würde sich dazu der initialization/finalization-Teil.

Nun aber:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
uses
  ComObj;

type
  STATURL = record
    cbSize: DWORD;
    pwcsUrl: DWORD;
    pwcsTitle: DWORD;
    ftLastVisited: FILETIME;
    ftLastUpdated: FILETIME;
    ftExpires: FILETIME;
    dwFlags: DWORD;
  end;

  IEnumSTATURL = interface(IUnknown)
    ['{3C374A42-BAE4-11CF-BF7D-00AA006946EE}']
    function Next(celt: Integer; out elt; pceltFetched: PLongint): HRESULT; stdcall;
    function Skip(celt: Longint): HRESULT; stdcall;
    function Reset: HResult; stdcall;
    function Clone(out ppenum: IEnumSTATURL): HResult; stdcall;
    function SetFilter(poszFilter: PWideChar; dwFlags: DWORD): HResult; stdcall;
  end;

  IUrlHistoryStg = interface(IUnknown)
    ['{3C374A41-BAE4-11CF-BF7D-00AA006946EE}']
    function AddUrl(pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer): HResult; stdcall;
    function DeleteUrl(pocsUrl: PWideChar; dwFlags: Integer): HResult; stdcall;
    function QueryUrl(pocsUrl: PWideChar; dwFlags: Integer; var lpSTATURL: STATURL): HResult; stdcall;
    function BindToObject(pocsUrl: PWideChar; var riid: TIID; out ppvOut: Pointer): HResult; stdcall;
    function EnumUrls(out ppenum: IEnumSTATURL): HResult; stdcall;
  end;

  IUrlHistoryStg2 = interface(IUrlHistoryStg)
    ['{AFA0DC11-C313-11D0-831A-00C04FD5AE38}']
    function AddUrlAndNotify(pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer;
      fWriteHistory: Integer; var poctNotify: Pointer;
      const punkISFolder: IUnknown): HResult; stdcall;
    function ClearHistory: HResult; stdcall;
  end;

  IUrlHistoryNotify = interface(IOleCommandTarget)
    ['{BC40BEC1-C493-11d0-831B-00C04FD5AE38}']
  end;


procedure ClearIEHistory;
const
  CLSID_CUrlHistory : TGUID = '{3C374A40-BAE4-11CF-BF7D-00AA006946EE}';
var
  ie : IUrlHistoryStg2;
begin
  ie := CreateComObject(CLSID_CUrlHistory) as IUrlHistoryStg2;
  ie.ClearHistory;
end;

Einfach nur die Prozedur "ClearIEHistory" aufrufen, und das war´s.
Eure Dankesworte bitte an DaFox richten. :)
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: Fr 14.02.03 20:43 
MathiasSimmack hat folgendes geschrieben:

´s wundert mich, dass sich DaFox noch nicht zu Wort gemeldet hat. (@Markus: :wink:).


Mache ich hiermit und bitte gleich um Verzeihung, dass ich momentan sehr selten hier anzutreffen bin. Stecke mitten im Prüfungsstress... :autsch:

MathiasSimmack hat folgendes geschrieben:

Folgender Tipp stammt von ihm und funktioniert sehr gut.


Ehrlich? Ich kenne diesen Code zwar, weiß aber momentan nicht mehr wo bzw. dass ich diesen gepostet habe (Prüfungsstress, s.o.)
Na sowas, dass ich doch auch immer die Sourcecodes so freizügig unter die Leute bringe... :wink:

MathiasSimmack hat folgendes geschrieben:

Eure Dankesworte bitte an DaFox richten. :)


Nicht nötig, einfach alle Daumen halten für die Ana-Prüfung...

Gruß,
Markus

Nachtrag: @Mathias: EE? :wink:
nina Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Sa 15.02.03 12:58 
Huhu!!!

Erst einmal danke an Euch alle die mir versucht haben zu helfe. Denn es hat jetzt endlich geklappt. Juhu :dance:

Ich habe gestern noch den Code vom Mathias (DaFox) ausprobiert und es hat geklappt. Endlich!!! Vielen Dank Euch beiden!!!
Erst dachte ich es würde schon wieder nicht funktionieren, weil er mir den heutigen Verlauf nicht gelöscht hat. Aber beim Versuch den Verlauf auf einem anderen Rechner zu löschen, war es genau das gleich, und somit bin ich mal der Meinung das er den heute Verlauf nicht gleich löscht.

Vielen Dank noch mal und bis bald, denn ich kann Euch versprechen, dass ich recht bald wieder posten werde. Wahscheinlich schon ab Montag! Also, macht Euch auf was gefasst!! Ich danke schon mal im vorraus!!!!

nina

P.S. DaFox, ich drücke Dir die Daumen für die Prüfung und wünsche Dir natürlich auch viel Glück dabei!!!
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: So 02.11.03 19:35 
Hallo,
habe gerade den Code von DaFox in mein Programm eingebaut, obwohl ich den absolut nicht vestehe, aber es löscht meinen Verlauf tatsächlich :o

Aber angenommen ich will aus meinem Verlauf nur eine URL löschen oder in meinem Fall den "Arbeitsplatz". Das geht doch bestimmt auch irgendwie mit dem Code, nur weiß ich nicht wo ich das anpacken muss :roll:

hat einer ne idee oder noch besser, weiß es jemand??

Gruß Andi

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.11.03 09:57 
Das Prinzip des o.g. Codes ist recht einfach: das Betriebssystem (allerdings erst ME, 2000 und höher) stellen ein Interface namens IUrlHistoryStg2 zur Verfügung. Dieses Interface besitzt die Funktion/Methode/nenn-es-wie-du-willst "ClearHistory", um die komplette IE-History zu löschen.
(So gibt es bspw. auch Interfaces zum Anlegen und Auslesen von Verknüpfungen = IShellLink)

Eine zweite Möglichkeit, gezielt URLs zu löschen, wäre das Interface IUrlHistoryStg (quasi ohne die 2 am Ende). Das ist ja auch in obigem Code enthalten. Die bietet die Methoden "EnumUrls" und "DeleteUrl" (auf die wirst du´s wohl abgesehen habe). Das Problem ist aber ebenfalls das Betriebssystem: Minimum sind der IE 5.5 und min. Win ME oder 2000.

Eine andere Möglichkeit, den Cache auszulesen und damit auch auf die Einträge im Verlauf zuzugreifen, wäre Suche in der Delphi-PRAXiS FINDFIRSTURLCACHEENTRY. Das Prinzip ähnelt FindFirst und funktioniert auch unter 9x und NT4.
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Mo 03.11.03 10:05 
Vielen Dank,
hat mir sehr geholfen! Werde jetzt mal versuchen selbst was damit hinzubekommen. Kann aber sein dass ich mich schon bald wieder mit diesem Thema melde...

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.11.03 10:53 
Ich muss mich übrigens noch korrigieren. Die o.g. Interfaces funktionieren natürlich auch unter Win 9x. Wichtig ist nur, dass ein aktueller IE (min. 5.5) drauf ist.

@DaFox: Falls du mal wieder anwesend bist, wie sieht´s mit deiner geschätzten Meinung dazu aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  STATURL = record
    cbSize: DWORD;
    pwcsUrl: DWORD;  // <--
    pwcsTitle: DWORD; // <--
    ftLastVisited: FILETIME;
    ftLastUpdated: FILETIME;
    ftExpires: FILETIME;
    dwFlags: DWORD;
  end;

Laut PSDK müssten die beiden markierten Einträge eigentlich LPWSTR (also WideChars) sein.