PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# Zwischenablage: Inhalt wurde eingefügt


Ben Carter
2018-03-11, 12:05:11
Hallo,
gibt es in C# die Möglichkeit, zu erkennen, ob der Inhalt der Zwischenablage in ein andere Programm eingefügt wurde? Die Zwischenablage wird von C# befüllt.

Hintergrund: ich habe einen Text in meiner C# Anwendung, den ich in eine andere Anwendung übertragen will, die andere Anwendung hat jedoch eine begrenzte Zeichenlänge und so muss ich in mehreren Blöcken übertragen. Die Zwischenablage ist (abgesehen von einem virtuellen Tastaturtreiber; das will ich mir aber ersparen) die einzige Möglichkeit den Text rüberzubekommen. SendKeys etc. sind geblockt.

Damit in meinem Programm die Textblöcke nicht einzeln kopiert werden müssen, wäre es ideal, wenn es feststellen könnte, dass der Inhalt eingefügt wurde und daraufhin automatisch den nächsten Block in die Zwischenablage kopiert, sodass der User am Ende einfach nur so oft Inhalte einfügen muss, bis der ganze Text abgearbeitet ist.

Danke,
lg Ben

Monger
2018-03-11, 12:23:42
Die Zwischenablage unterstützt auch Streams, d.h. der Empfänger kann so lange Daten anfragen bis keine mehr kommen.

Das setzt aber voraus, dass der Empfänger auch auf den richtigen Kanälen gescheit abfragt. Du kannst ja die Zwischenablage mit allen möglichen unterschiedlichen Datenformaten belegen, und es liegt am Empfänger das auszuwählen was er für die Situation am passendsten hält.

Gib dir mal den Spaß, mach STRG+C in Excel, und dann ruf im Clipboard alle Datenformate ab. Das ist unfassbar viel, und nur die "trivialen" Formate wie z.B. String werden ganzheitlich abgelegt. Bei vielen liegt nur das Stream Objekt drin.

https://www.mycsharp.de/wbb2/thread.php?threadid=73001

Ben Carter
2018-03-11, 13:52:43
Der Empfänger ist leider sehr "dumm", der kann nur reinen Text entgegennehmen.

Ben Carter
2018-03-20, 13:49:16
Kurze Info: ich habe keinen Weg gefunden, das Einfügen zu tracken, aber dafür mittels AutoIt eine Möglichkeit, doch Tastenbefehle zu senden. Problem ist somit indirekt, aber auch besser, behoben.

lg Ben