Wie genau extrahieren Sie die Dateien? Verwenden Sie die Befehlszeile oder die GUI? Ziehen Sie die Dateien oder wählen Sie sie aus und verwenden Sie die Extraktionsfunktion? Verwenden Sie das Kontextmenü der Shell-Erweiterung?
Wenn Sie einen Zielordner eingeben und dann die Extraktionsfunktion auswählen oder die Shell-Erweiterung verwenden, werden diese zuerst nicht in einen temporären Ordner extrahiert, sondern direkt in den Zielordner.
Wenn Sie die Dateien in der Benutzeroberfläche und wählen Sie ziehen sie in den Zielordner, dann wird in einen temporären Ordner extrahieren.
Der Grund liegt in der Auswahl des Ziels. Wenn Sie den Zielordner eingeben oder den Kontextmenüpunkt verwenden, weiß das Programm genau, wohin es extrahieren muss. Wenn Sie jedoch nur die Dateien ziehen, weiß das Programm aufgrund der Drag & Drop-Funktion von OLE nicht, wo sich der Zielordner befindet. Mit anderen Worten, es ist ExplorerDas empfängt den Zielordner, nicht das Archivierungsprogramm. Infolgedessen kann das Programm nicht wissen, wo sie extrahiert werden sollen, und extrahiert sie einfach in den temporären Ordner. Anschließend werden sie vom Explorer verschoben. Sie können dies deutlich sehen, indem Sie eine große Datei mit beiden Methoden extrahieren. Wenn Sie es in einen Ordner ziehen, wird es extrahiert. Anschließend wird das Standarddialogfeld für Dateivorgänge von Explorer angezeigt, in dem es in den Ordner verschoben wird. Wenn Sie den Ordner angeben und auf Extrahieren klicken, wird er extrahiert und keine weitere Verarbeitung durchgeführt.
Lesen Sie den Quellcode für 7-Zip, um zu sehen, wie mit dem Extraktionsort umgegangen wird.
Das habe ich vor einigen Jahren auf die harte Tour gelernt, als ich Drag-and-Drop in einem Programm implementieren wollte, das ich gerade schrieb.