AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi AV "Kann Zwischenablage nicht öffnen"
Thema durchsuchen
Ansicht
Themen-Optionen

AV "Kann Zwischenablage nicht öffnen"

Ein Thema von jensw_2000 · begonnen am 23. Aug 2004 · letzter Beitrag vom 24. Aug 2004
 
jensw_2000
(Gast)

n/a Beiträge
 
#1

AV "Kann Zwischenablage nicht öffnen"

  Alt 23. Aug 2004, 14:57
Hallo,

ich habe ein Verständnisproblem beim verwenden der Zwischenablage ...
Ich experimentiere schon seit Tagen erfolglos herum und hoffe, das jemand von euch einen Tip für mich hat ...

Ich habe eine kleine Anwendung, die nach dem drücken eines globalen Hotkeys ein CTRL+C an die aktive Anwendung sendet um den dort selektierten Text in die Zwischenablage zu kopieren.

In meiner Anwendung verarbeite ich die Zwischenablage und möchte diese anschliessend leeren, um zu verhindern, das der User beim Drücken des Hotkeys (ohne vorheriges markieren des Textes) die alte Zwischenablage noch einmal verwendet.


Hier ein kleines Codebeispiel ...

Code:
 
public
   function VerarbeiteClipboardText(ClipboardText:String):Boolean;



procedure TMain."onHotkeyPress";
begin
  // selektierten Text aus aktivem Fenster in die Zwischenablage kopieren
  // beim 2. Drücken des Hotkeys wird der selektierte Text nicht mehr in die ZA kopiert :-(
  keybd_event(VK_CONTROL, 0, 0, 0);
  keybd_event(Ord('C'), 0, 0, 0);
  keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
  Sleep(10);

  if Clipboard.HasFormat(CF_TEXT) then
  begin
    // die nächste Codezeile funktioniert nur beim ersten Drücken des Hotkeys.
    // bbeim 2. Drücken des Hotkeys wird die Exception "kann Zwischenablage nicht öffnen" ausgelöst
    if VerarbeiteClipboardText( Clipboard.AsText )=true then
      showmessage('Clipoard verarbeitet') else
      showmessage('Fehler');
  end;

end;

function TMain.VerarbeiteClipboardText(ClipboardText:String):Boolean;
begin


  // Hier mache ist was mit ClipboardText
  //.............
  //.............

  // Zwischenablage leeren
  try
    clipboard.clear;
    result:=true;
  except
    result:=false;
  end;

end;

{
Variante 2 - funtioniert auch nicht
function TMain.VerarbeiteClipboardText(ClipboardText:String):Boolean;
begin



  // Hier mache ist was mit ClipboardText
  //.............
  //.............

  // Zwischenablage leeren
  try

    try  
      clipboard.open
      clipboard.clear;
    finally
      clipboard.close;
    end;

    result:=true;
  except
    result:=false;
  end;

end;
}

Der Hotkey kopiert nur einmal den selektierten Text in die Zwischenablage und Clipboard.asText löst beim 2. drücken des Hotkeys die Exception "Kann Zwischenalage nicht öffnen" aus.
Wenn ich die Zwischenablage nicht leere funktioniert alles super.


Ich babe auch schon versucht mit SetClipboardTextSetClipboardText die Zwischenablage mit SetClipboardText(Pchar('<bereits übernommen>')) zu überschreiben.

Der Fehler bleibt der Selbe ...
Sobald ich die Zwischenablage in meinem Programm schreibe oder leere kommt beim 2. Drücken des Hotkeys "Kann Zwischenalage nicht öffnen".

Hat jemand eine Idee ?

Danke .....
Jens
  Mit Zitat antworten Zitat
 


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 22:37 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