Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows7 built-in Zip nutzen (https://www.delphipraxis.net/176442-windows7-built-zip-nutzen.html)

VkPenguin 5. Sep 2013 12:08

Windows7 built-in Zip nutzen
 
Guten Tag ihr lieben,

ich möchte gerne die in Win7 eingebaute zip-Funktion nutzen. Da man ja auch viele andere Windowsfunktionen über Shell oder ähnliches aufrufen kann müsste das doch möglich sein, ich konnte in der API jedoch keinen passenden Befehl finden... hat jemand einen Tipp für mich?

Danke!

Back2Code 5. Sep 2013 12:28

AW: Windows7 built-in Zip nutzen
 
Zitat:

I think its not documented , hard to find
i can suggest one way to open zip folder , type the code below in your command line to unzip and open a zip file

rundll32.exe zipfldr.dll,RouteTheCall c:\1.zip

There are some api's you can research on
RtlCompressBuffer
RtlDecompressBuffer and
RtlGetWorkspace
http://social.msdn.microsoft.com/For...windows-xp-api

VkPenguin 5. Sep 2013 12:33

AW: Windows7 built-in Zip nutzen
 
Danke für deine Antwort, das habe ich nicht gefunden. Entschuldige, wenn ich mich gerade blöd anstelle (bin noch nicht so lange dabei), aber wie genau hilft mir das denn weiter? Ich müsste das ganze ja in eine Delphi-Funktion kriegen..

hathor 5. Sep 2013 12:53

AW: Windows7 built-in Zip nutzen
 
Compress a File or Folder using the NTFS compression
UnCompress a File or Folder using the NTFS compression

http://theroadtodelphi.wordpress.com...elphi-and-wmi/
http://dl.dropbox.com/u/12733424/Blo...20Explorer.zip

------------------------------------------------
Wer WINDOWS 8 hat: Windows.Storage.Compression

http://msdn.microsoft.com/de-de/libr...ge.compression

jaenicke 5. Sep 2013 13:03

AW: Windows7 built-in Zip nutzen
 
Zitat:

Zitat von hathor (Beitrag 1227288)
Wer WINDOWS 8 hat: Windows.Storage.Compression

http://msdn.microsoft.com/de-de/libr...ge.compression

Das funktioniert doch nur in Apps, die du wiederum in Delphi von Hause aus noch gar nicht schreiben kannst, oder?
Das ist doch die neue API für Apps, auf die du da verlinkt hast.

VkPenguin 5. Sep 2013 13:07

AW: Windows7 built-in Zip nutzen
 
jaenicke hat recht, danke @hathor, aber das hilft mir leider auch nicht weiter

Bbommel 5. Sep 2013 13:20

AW: Windows7 built-in Zip nutzen
 
Lies dir mal diesen Thread hier durch:
http://www.delphipraxis.net/146116-z...shell-api.html

Bis denn
Bommel

VkPenguin 5. Sep 2013 14:09

AW: Windows7 built-in Zip nutzen
 
Danke @Bommel.. Das hört sich eigentlich gut an, habe auch mal etwas mit deinem Code experimentiert, nur komme ich damit nicht so ganz klar. Hast Du davon eine Demo/ein Beispiel?

hathor 5. Sep 2013 14:53

AW: Windows7 built-in Zip nutzen
 
Man kann auch compact.exe verwenden, das in allen WIN-Versionen vorhanden ist.
http://www.computerhope.com/compact.htm

VkPenguin 5. Sep 2013 16:11

AW: Windows7 built-in Zip nutzen
 
Solangs funktioniert :) Aber kann man die denn auch über Delphi ohne weiteres ansprechen? Hab sowas noch nie probiert, könnte aber je nachdem kompliziert werden

Luckie 6. Sep 2013 14:10

AW: Windows7 built-in Zip nutzen
 
Die NTFS Komprimierung ist nicht gleichzusetzen mit einem Zip-Archiv. Das sind zwei unterschiedliche Paar Schuhe. Die NTFS Komprimierung existiert nur auf dem lokalen Computer und im Dateisystem dieses Computers. Wird eine so komprimierte Datei weitergegeben, wird sie natürlich unkomprimiert weitergegeben. Auch sind natürlich Archive mit mehrere Dateien und einer Ordnerstruktur nicht möglich.

Das Systemprogramms compact.exe ermöglicht nur eine manuelle NTFS Komprimierung, wenn ich die Hilfe dazu richtig deute.

Ob das Nutzen der undokumentierten Funktionen in zipfldr.dll so sinnvoll ist bleibt zu diskutieren. Aber eigentlich braucht man doch nur Code zum Erstellen von Archiven. Und da gibt es ja diverse Zip kompatible Bibliotheken.

mkinzler 6. Sep 2013 14:32

AW: Windows7 built-in Zip nutzen
 
Zitat:

Ob das Nutzen der undokumentierten Funktionen in zipfldr.dll so sinnvoll ist bleibt zu diskutieren
Warum ist doch toll, wenn z.B. nach einem Windowsupdate das Telefon nicht mehr still steht ;)

hathor 6. Sep 2013 15:17

AW: Windows7 built-in Zip nutzen
 
Die Anwendung ist doch ganz einfach:
Man erstellt einen Ordner,
mit COMPACT /C wird der Ordner als "komprimiert" markiert.
Alles, was jetzt in den Ordner kopiert wird, wird automatisch komprimiert.

Directories will be marked so that files added afterward will be compressed.

Beispiel:
F:\
mdir CTEST
compact F:\CTEST /C
Die Schriftfarbe des Ordners ändert sich von schwarz nach blau.

Bbommel 6. Sep 2013 16:25

AW: Windows7 built-in Zip nutzen
 
Zitat:

Zitat von VkPenguin (Beitrag 1227307)
Danke @Bommel.. Das hört sich eigentlich gut an, habe auch mal etwas mit deinem Code experimentiert, nur komme ich damit nicht so ganz klar. Hast Du davon eine Demo/ein Beispiel?

Sorry, dass ich erst so spät antworte. So sieht das zum Beispiel aus, wenn die im von mir verlinkten Thread vorgestellte ShellZip-Unit mit der dort umgesetzten Klasse TShellZip benutzt wird (mit den von mir dort geposteten Änderungen):

Delphi-Quellcode:
var [...]
  shellZip: TShellZip;

begin
  [...]
  shellZip:=TShellZip.Create;
  shellZip.Zipfile:=aZipFilename;

  // erstmal die Konfig sichern
  if fileExists(aConfigFilename) then begin
    shellZip.Filter:=ExtractFileName(aConfigFilename);
    try
      shellZip.ZipFolder(ExtractFileDir(aConfigFilename),10);
    except
      on e: exception do begin
        Result:=e.Message;
        success:=false;
      end;
    end;
  end;
[...]
In dem Beispiel wird jetzt eine einzige Datei in die Zip-Datei geschrieben (nämlich eine Konfig-Datei, tut aber eigentlich nichts zur Sache). Man gibt im Befehl "ZipFolder" also an, dass man jetzt ein Verzeichnis komprimieren will. Will man aber in Wahrheit gar nicht das ganze Verzeichnis komprimieren, sondern, wie hier im Beispiel, doch nur eine einzelne Datei, so kann man diesen Dateinamen eben vorher im "Filter" setzen. Darüber kann man dann natürlich auch mit Wildcards arbeiten.

Ich hoffe, das hilft dir erstmal weiter. Sollten noch Rückfragen sein, bitte nicht wundern, falls ich erstmal nicht antworte, da ich in den nächsten Tagen wahrscheinlich nicht am Rechner bin.

Bis denn
Bommel

Luckie 7. Sep 2013 22:08

AW: Windows7 built-in Zip nutzen
 
Zitat:

Zitat von hathor (Beitrag 1227446)
Die Anwendung ist doch ganz einfach:
Man erstellt einen Ordner,
mit COMPACT /C wird der Ordner als "komprimiert" markiert.
Alles, was jetzt in den Ordner kopiert wird, wird automatisch komprimiert.

Noch mal. Compact ist die NTFS Dateisystemkompromierung. Damit kann man KEINE Archive erstellen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz