AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schreiben in Zwischenablage

Ein Thema von Buttercreme · begonnen am 23. Jun 2008 · letzter Beitrag vom 25. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Buttercreme

Registriert seit: 10. Jun 2008
17 Beiträge
 
#1

Schreiben in Zwischenablage

  Alt 23. Jun 2008, 17:30
Hallo Leute,

Ich bekomme immer wieder die gleiche Fehlermeldung wenn ich versuche etwas in das Clipboard zu kopieren:

"Zwischenablage kann nicht geöffnet werden."

Aus der Zwischenablage auslesen kann ich allerdings. Mir ist es egal ob das Clipboard leer gemacht wird oder einen bestimmten string enthält (z.B. clear). Folgendes habe ich bereits versucht:

Delphi-Quellcode:
Edit1.SelectAll;
Edit1.CopyToClipboard;
clipboard.free
Delphi-Quellcode:
clipboard.open;
clipboard.astext := 'clear';
clipboard.close;
Es kommt allerdings immer der selbe Fehler das die Zwischenablage nicht geöffnet werden kann. Hatte jemand schon einmal ein ähnliches Problem?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Schreiben in Zwischenablage

  Alt 23. Jun 2008, 17:47
Hallo,

hast Du Clipboard schon irgendow erstellt?

clipboard := TClipBoard.create ?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#3

Re: Schreiben in Zwischenablage

  Alt 23. Jun 2008, 17:51
Es wäre mir neu, dass das nötig ist. Einfach die Unit Clipbrd einbinden (ähnlich wie bei Printer).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Schreiben in Zwischenablage

  Alt 23. Jun 2008, 17:58
Hallo,

die Zwischenablage wird durch Open() gesperrt und durch Close() entsperrt, was aber nur bei relativ komplexen Schreibvorgängen nötig ist. Eventuell wurde auch ein GlobalLock() erworben? Verwaiste Sperren werden spätestens bei einem Neustart von Windows aufgehoben und dann funktioniert das auch wieder:

Delphi-Quellcode:
uses
  Clipbrd;

begin
  ClipBoard.AsText := 'godiva';
end.
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

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

Re: Schreiben in Zwischenablage

  Alt 24. Jun 2008, 09:15
Ich kenne das auch so, dass man beim ClipBoard kein Open und Close machen muss.
Aber ein Create und Free hat's bei mir immer gebraucht.

Delphi-Quellcode:
procedure TFoTrayIcon.KopierenClick(Sender: TObject);
var
  Clip: TClipboard;
begin
  Clip := TClipboard.Create;
  if EdNummerName.SelText = 'then // ist ein Text markiert?
  begin // kein Text markiert, alles kopieren
    Clip.AsText := EdNummerName.Text;
  end
  else
  begin // nur den markierten Text kopieren
    Clip.AsText := EdNummerName.SelText;
  end;
  Clip.Free;
end;

procedure TFoTrayIcon.EinfuegenClick(Sender: TObject);
var
  Clip: TClipboard;
begin
  Clip := TClipboard.Create;
  EdNummerName.Text := Clip.AsText;
  Clip.Free;
end;
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
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#6

Re: Schreiben in Zwischenablage

  Alt 24. Jun 2008, 10:22
Hallo,

also ich schließe mich DeddyH voll und ganz an - Unit "Clipbrd" einbinden und alles lief bisher ohne Probleme, ob Text oder Grafiken...

Gruß roga
Ronald
  Mit Zitat antworten Zitat
Buttercreme

Registriert seit: 10. Jun 2008
17 Beiträge
 
#7

Re: Schreiben in Zwischenablage

  Alt 24. Jun 2008, 17:09
Hab so ziemlich alles versucht. Leider kommt die Message immer wieder. Naja ich wühle noch ein bisschen. Wenn ich noch etwas finde poste ich die Lösung hier.

Trotzdem schonmal Danke für die Hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

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

Re: Schreiben in Zwischenablage

  Alt 24. Jun 2008, 17:12
Häng doch mal Dein Projekt an.
Vielleicht ist da ja auch ein anderer Fehler drin, der Seiteneffekte auslöst...
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
Buttercreme

Registriert seit: 10. Jun 2008
17 Beiträge
 
#9

Re: Schreiben in Zwischenablage

  Alt 24. Jun 2008, 17:40
Ist ein relativ großes Projekt. Deshalb hier nur der Teil wo ich mit dem Clipboard arbeite:

(Bis zum Form1.Edit1.Text:=old.text; funktionier es auch noch. Evtl. auch weiter aber das kann ich in der Anwendung ja nicht sehen.)

Delphi-Quellcode:
procedure GetID;
begin

sleep(500);

Clipboard.Free;
old := TStringList.Create;
old.Text:=Clipboard.AsText;

Form1.Edit1.Text:=old.text;

SetForegroundWindow(wnd1);
ShowWindow(wnd1, 1);

clears := TStringList.Create;
clears.Text := 'clear';
Clipboard.AsText := clears.Text;

sleep(50);

PostKeyDown(VK_CONTROL);
PostKeyDown(Ord('C'));
PostKeyUp(VK_CONTROL);
PostKeyUp(Ord('C'));

sleep(500);

Clipboard.Free;
current := TStringList.Create;
current.Text:=Clipboard.AsText;
Form1.Edit2.Text:=current.text;

insert2:=trim(current.Text);

if discon >= 5 then
begin
  ShowMessage ('DISCONNECT');
  restart:=1;
  exit;
end;

if insert2 = 'Ownedthen
begin
  discon:=discon +1;
  RefreshList;
  exit;
end;

if insert2 = 'Owned2then
begin
  discon:=discon +1;
  RefreshList;
  exit;
end;


if rundisc = 1 then
begin
  rundisc:=0;
  if current.Text = 'clearthen
  begin
    discon := discon + 1;
    if discon >= 5 then
    begin
      ShowMessage ('DISCONNECT');
      restart:=1;
      exit;
    end;

  end;
end;

if old.Text <> current.Text then
begin
  insert:=trim(current.Text);
  Form1.Memo1.Lines.Add(insert);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#10

Re: Schreiben in Zwischenablage

  Alt 24. Jun 2008, 17:56
Ersetz mal ClipBoard.Free; durchClipBoard.Clear;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:49 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