![]() |
Schreiben in Zwischenablage
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;
Delphi-Quellcode:
clipboard.free
Delphi-Quellcode:
Es kommt allerdings immer der selbe Fehler das die Zwischenablage nicht geöffnet werden kann. Hatte jemand schon einmal ein ähnliches Problem?
clipboard.open;
clipboard.astext := 'clear'; clipboard.close; |
Re: Schreiben in Zwischenablage
Hallo,
hast Du Clipboard schon irgendow erstellt?
Delphi-Quellcode:
?
clipboard := TClipBoard.create
Grüße Klaus |
Re: Schreiben in Zwischenablage
Es wäre mir neu, dass das nötig ist. Einfach die Unit Clipbrd einbinden (ähnlich wie bei Printer).
|
Re: Schreiben in Zwischenablage
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:
Grüße vom marabu
uses
Clipbrd; begin ClipBoard.AsText := 'godiva'; end. |
Re: Schreiben in Zwischenablage
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; |
Re: Schreiben in Zwischenablage
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 |
Re: Schreiben in Zwischenablage
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. |
Re: Schreiben in Zwischenablage
Häng doch mal Dein Projekt an.
Vielleicht ist da ja auch ein anderer Fehler drin, der Seiteneffekte auslöst... |
Re: Schreiben in Zwischenablage
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 = 'Owned' then begin discon:=discon +1; RefreshList; exit; end; if insert2 = 'Owned2' then begin discon:=discon +1; RefreshList; exit; end; if rundisc = 1 then begin rundisc:=0; if current.Text = 'clear' then 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); |
Re: Schreiben in Zwischenablage
Ersetz mal
Delphi-Quellcode:
durch
ClipBoard.Free;
Delphi-Quellcode:
ClipBoard.Clear;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz