AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Strg + V Einfügen ein paar fragen
Thema durchsuchen
Ansicht
Themen-Optionen

Strg + V Einfügen ein paar fragen

Ein Thema von gandime · begonnen am 24. Dez 2008 · letzter Beitrag vom 26. Dez 2008
Antwort Antwort
gandime
(Gast)

n/a Beiträge
 
#1

Strg + V Einfügen ein paar fragen

  Alt 24. Dez 2008, 23:34
Hi,
Ich möchte ein Programm schreiben, welches bei dem Hotkey Strg + V, die zu kopierenden Daten in in einer Liste Speichert und alle nach und nach in einer Liste aufnimmt.
Diese Liste wird gleichzeitig via Thread abgearbeitet.
Momentan habe ich selbst den Hotkey gelegt.
Nun meine Fragen:
1. Kann ich auch erkennen wenn iwo Rechtemaustaste gedrückt wird und auf "Einfügen" gedrückt wird?

2. Wie erkenne ich den Ort, wo die kopierten Dateien aus dem Clipboard eingefügt werden?

3. Gibts es eine Möglichkeit, sofern das einzufügene keine Datei ist, das "Windows-Einfügen" zu simulieren?

mfg
gandime


Frohe Weihnachten!
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Strg + V Einfügen ein paar fragen

  Alt 25. Dez 2008, 00:55
WIllst du, dass man in der Liste dann auswählen kann, was man einfügen will oder willst du alles einfügen, was in der Liste ist?

Bei ersterem bräuchtest du ja nur den Listeneintrag wieder in die Zwischenablage tun ...
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#3

Re: Strg + V Einfügen ein paar fragen

  Alt 25. Dez 2008, 01:35
Hier ein bisschen Code Anregung von hier:
Delphi-Quellcode:
type
  ...
  private
    procedure ClipBrdPast(var Message: TMessage); message WM_DRAWCLIPBOARD;
    ...
  end;

procedure TFCPMain.ClipBrdPast(var Message: TMessage);
var
  F:THandle;
  Buffer:Array [0..MAX_PATH] of Char;
  i:Integer;
  NumFiles:Integer;
begin
  if (not (Clipboard.HasFormat(CF_HDROP))) then
    Exit;
  try
    f := Clipboard.GetAsHandle(CF_HDROP);
    if f <> 0 then
    begin
      numFiles := DragQueryFile(f,$FFFFFFFF,nil,0);
      for i := 0 to numfiles - 1 do
      begin
        buffer[0] := #0;
        DragQueryFile(f, i, buffer, SizeOf(buffer));
        SlFile.Add(buffer);
      end;
    end;
  finally
    CloseClipBoard;
  end;
end;
So lasse ich dann den Inhalt auflisten aber das VW_DRAWCLIPBOARD passt nicht da es ausgelöst wird sobald etwas in die Zwischenablage kopiert wird, aber ich möchte es auslösen sobald etwas aus der Zwischenablage eingefügt wird.
Bis jetzt habe ich im MSDN nichts, bei Google auch nichts und hier ebenfalls nichts hilfreiches gefunden!

zu meiner zweiten Frage:
Zitat:
2. Wie erkenne ich den Ort, wo die kopierten Dateien aus dem Clipboard eingefügt werden?
ist meine momentane Idee das Aktive Fenster auslesen und schauen ob es ein Windows-Explorer Fenster ist.
Blos wie erkenne ich ob es ein Windows-Explorer Fenster ist?
Und ob dort ein Ordner Markiert ist?

Zitat von TonyR:
WIllst du, dass man in der Liste dann auswählen kann, was man einfügen will oder willst du alles einfügen, was in der Liste ist?
Alles was normal von Windows an Dateien Eingefügt wird soll mein Programm übernehmen

Zitat von TonyR:
Bei ersterem bräuchtest du ja nur den Listeneintrag wieder in die Zwischenablage tun ...
ömmm meinst du nicht meine Dritte Frage?
Weil im Zusammenhang mit der Ersten Frage verstehe ich es sonst nicht!
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Strg + V Einfügen ein paar fragen

  Alt 25. Dez 2008, 02:04
Hi,
da fallen mir spontan die Gexperts ein: http://www.gexperts.org/
Dort gibts eine Clipboard-History, die auch ausserhalb von Delphi die Zwischenablage überwacht. Geh doch dort mal schauen.
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#5

Re: Strg + V Einfügen ein paar fragen

  Alt 25. Dez 2008, 02:42
hi,
das sind leider nur historys, die die WM_DRAWCLIPBOARD message benutzen, was mir leider nicht hilft...
Ich habe auch schon nach Clipboard hooks gesucht aber nichts gefunden was die WM_PAST global abfängt geschweige denn registriert, zumindest habe ich noch nichts in der Richtung gefunden!
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#6

Re: Strg + V Einfügen ein paar fragen

  Alt 26. Dez 2008, 03:24
hab da mal wegen dem Simulieren des Past-Befehles ungeschaut habe was gefunden in VB:
Delphi-Quellcode:
' Paste the contents of the Clipboard into a control
Sub ControlPaste(ByVal hWnd As Long)
SendMessage hWnd, WM_PASTE, 0, ByVal 0&
End Sub
Quelle

die übersetzung wäre dann wohl so:
Delphi-Quellcode:
var
  H:HWND;
begin
  H:=GetActiveWindow;
  SendMessage(H,WM_PASTE,0,0);
blos was bedeutet das: "ByVal 0&"?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Strg + V Einfügen ein paar fragen

  Alt 26. Dez 2008, 09:49
Damit ist NULL gemeint (siehe hier), obwohl es wohl eher im Delphi NIL entspricht.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 06:17 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