AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateien in der Zwischenablage auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien in der Zwischenablage auslesen

Ein Thema von berens · begonnen am 25. Jun 2008 · letzter Beitrag vom 25. Jun 2008
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Dateien in der Zwischenablage auslesen

  Alt 25. Jun 2008, 14:42
Hi!

Ich würde gerne mein Programm so aufpolieren, dass wenn der Kunde eine XML-Konfigurationsdatei in die Zwischenablage kopiert, mein Programm anbietet, diese Konfiguration zu laden.

Das mit dem Ändern der Zwischenablage ist kein Problem, das auslesen der Dateien schon:

Unter http://www.swissdelphicenter.ch/de/showcode.php?id=791 wird zwar schon erklärt, wie ich Dateinamen auslese, die vom Windows Explorer kopiert wurden (funktioniert auch). Wenn ich aber z.B. in Outlook einen Anhang mit Rechte-Maustaste --> Kopieren kopiere wird mir der Pfad nicht angezeigt.

Wird vielleicht von Outlook gleich das komplette Attachement in die Zwischenablage gelegt, und vom Explorer nur die Dateinamen? Aber warum kann ich dann im Windows Explorer diese Datei von Outlook über [Bearbeiten] - Einfügen?

Wie kann mein Programm erkennen, dass eine gültige Datei sich in der Zwischenablage befindet?

Weitere Tags für diesen Beitrag: ClipBrd, ClipBoard, Zwischenablage, Datei, Kopieren, TFileName, HasFormat
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Dateien in der Zwischenablage auslesen

  Alt 25. Jun 2008, 14:53
Zitat von berens:
Weitere Tags für diesen Beitrag: ClipBrd, ClipBoard, Zwischenablage, Datei, Kopieren, TFileName, HasFormat
Sowas kannst Du Dir sparen, deshalb bekommst Du auch nicht mehr (sinnvolle) Antworten.
Eher wirst Du zugemüllt, so wie mit diesem Post.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Dateien in der Zwischenablage auslesen

  Alt 25. Jun 2008, 14:56
Die Tags sind ja nicht für mich, sondern für die Nachwelt. Ich selbst habe mit diesen Begriffen hier in DP und Google gesucht, aber nichts passendes gefunden. Da ich hier mein Problem nur mit "Zwischenablage" formuliert habe, wäre z.B. die Leute ausgeschlossen, die nur nach "ClipBoard" suchen.

Wenn sich wer durch die Tags zugespammt fühlt, kann ich die auch wieder rausnehmen, das soll ja kein Problem sein.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Dateien in der Zwischenablage auslesen

  Alt 25. Jun 2008, 17:18
Also im Clipboard stehen immer mehrere Formate gleichzeitig drin.
Das ist ganz wichtig zu wissen!
Mit meinem Clipboard-Explorer kann man sich die verschiedenen Formate anzeigen lassen.
Wenn man in Outlook einen Anhang kopiert, dann wird unter anderem auch ein Format mit dem Namen FileContents im Clipboard abgelegt.
In diesem Format ist die gesamte Datei enthalten.

Um an die Daten ranzukommen, muss man im eigenen Programm diese Format ebenfalls registrieren:
Delphi-Quellcode:
var CF_FILECONTENTS : Word;
...
CF_FILECONTENTS := RegisterClipboardFormat('FileContents'); // nur einmal beim Prog.start
Dann kann man abfragen, ob dieses Format im Clipboard enthalten ist und auslesen:
Delphi-Quellcode:
if clipboard.HasFormat(CF_FILECONTENTS) then
// folgendes Code-Stückchen habe ich aus meiner Unit ClipboardTools rausgeschnitten
with Clipboard do
begin
//var
// size : DWORD;
// handle : THandle;
   Open;
   try
      handle := GetAsHandle(fmt);
      if handle <> 0 then
      begin
         size := GlobalSize(handle);
         if size > 0 then
         begin
            // Daten nach Result(string) kopieren
            SetString(Result, PChar(GlobalLock(Handle)), size);
            GlobalUnlock(handle);
         end;
      end;
   finally
      Close;
   end;
end;
Miniaturansicht angehängter Grafiken
clipboardoutlookanhang_881.gif  
Andreas
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Dateien in der Zwischenablage auslesen

  Alt 25. Jun 2008, 23:02
Ah, ok. Klappt zwar anders, als ich mir das vorgestellt habe, aber es geht. Spart mir sogar noch einen Arbeitsschritt...

Delphi-Quellcode:
   try
      handle := GetAsHandle(fmt);
wird zu

Delphi-Quellcode:
   try
      handle := GetAsHandle(CF_FILECONTENTS);
Danke für die Antwort, hast mir sehr geholfen
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:20 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