Autor Beitrag
LonghornUser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Mo 11.12.06 21:58 
Hallo,

ich möchte folgende 4 Schritte machen:
1.) den Inhalt der Zwischenablage vorrübergehend speichern,
2.) dann etwas in die Zwischenablage geben,
3.) aus ihr einfügen und
4.) dann den Urzustand wiederherstellen.

Wenn Text in der Zwischenablage ist, wüsste ich, wie ich dies bewerkstelligen könnte, nur was ist, wenn da zB. PhotoShop-Daten drin sind oder eine Datei o.ä. ?
Gibt es einen Weg, wie ich das mit Delphi bewerkstelligen kann ?

Danke schonmal.

Ciao LHUser
PS: Die Schritte 2 und 3 sind klar :-)
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Di 12.12.06 00:29 
Ah, hab gerade folgendes gefunden:
ausblenden Delphi-Quelltext
1:
http://www.swissdelphicenter.ch/de/showcode.php?id=945					

Aber es klappt nur das Speichern. Das Laden klappt nicht mit der Fehlermeldung:
Zitat:

[...]Exception der Klasse EReadError. [...] Meldung: Stream-Lesefehler[...]


Woran könnte das liegen ?
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 12.12.06 00:34 
Hallo,

schau dir doch mal die Klasse TClipBoard. Damit sollte der Anfang doch mal gemacht sein.

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Di 12.12.06 00:53 
Mhm. Ich habe mir mal in der Delphi Hilfe das Kapitel durchgelesen. Aber eine Antwort habe ich nicht wirklich gefunden.
Den Error könnte ich mir nur so erklären, dass nichts in die ZA kopiert wurde und daher die Fehlermeldung in der Lade-Procedure kommt.
Aber wo könnte der Fehler liegen ?
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Di 12.12.06 15:35 
Ah, hab den "Fehler" gefunden. Ich habe die Speicherung als Datei nicht eingebunden. Jetzt gehts wunderbar :)
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Di 12.12.06 16:33 
Hallo nochmal,

so, habe jetzt doch nochmal ne Frage:
Ich habe das ganze folgendermaßen eingesetzt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
ms := TMemoryStream.Create;
try
  SaveClipboard(ms);
  ms.SaveToFile('C:\ClipBrd.dat');
finally
  ms.Free;
end;
Memo1.Clear;
Memo1.Selectall;
Memo1.Copytoclipboard;
keybd_event(VK_CONTROL, 00,0);
keybd_event(ord('V'), 000);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event(ord('V'), 0, KEYEVENTF_KEYUP, 0);
// Zwischenablage wiederherstellen
{ Stelle X }
fs := TFilestream.Create('C:\ClipBrd.dat',
fmopenread or fmsharedenynone);
try
  LoadClipboard(fs);
finally
  fs.Free;
end;

Aber es kommt die Fehlermeldung "Zwischenablage konnte nicht geöffnet werden".
Wenn ich aber an die Stelle X (siehe oben) die Anweisung "sleep(1000);" eingebe, funzt alles.
Braucht das Speichern wohl etwas sehr lange ? Und hängt das von der Rechnleistung des PCs ab, wo das Progg ausgeführt wird ?
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Mi 13.12.06 16:40 
Hilfe ? :(
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mi 13.12.06 17:27 
Hallo,

ich verstehe immer noch nicht, warum du die ganze Zwischenablage zwischenspeichern willst? Warum reicht es nicht, wenn du einfach nur den Text zwischenspeicherst und dann diesen verändert?
Zum Problem: Was liefert GetLastError zurück? Wo _genau_ tritt der Fehler auf?

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
LonghornUser Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 796



BeitragVerfasst: Do 14.12.06 23:13 
user profile iconwulfskin hat folgendes geschrieben:
Hallo,
ich verstehe immer noch nicht, warum du die ganze Zwischenablage zwischenspeichern willst? Warum reicht es nicht, wenn du einfach nur den Text zwischenspeicherst und dann diesen verändert?

ich füge so Texte in andere Anwendungen ein. Per Hook. Aber leider geht dabei immer der Inhalt der ZA verloren. Daher mache ich all das :)
Zitat:

Zum Problem: Was liefert GetLastError zurück? Wo _genau_ tritt der Fehler auf?
Gruß Hape!

GetLastError: Wie geht das? Wenn der Fehler kommt, ist das Progg beendet und ich kann nichts mehr aus GetLastError heruasbekommen.
Und der Cursor springt beim Fehler zur Zeile:
LoadClipboard(fs);