Laden...

Wie paste ich den Wert der Zwischenanlage in fremde Applikation?

Erstellt von maYer vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.488 Views
M
maYer Themenstarter:in
49 Beiträge seit 2005
vor 6 Jahren
Wie paste ich den Wert der Zwischenanlage in fremde Applikation?

Hallo,

ich habe mir ein Programm geschrieben, mit dem ich alles, was in die Zwischenablage geschrieben wird, mittels der Win32Api-Funktion SetClipboardViewer tracke und intern verwalte.

Wenn ich die Werte anschließend in eine Applikation schreiben möchte, öffne ich ein Kontextmenü über eine Tastenkombination und wähle den entsprechenden Wert aus.

Anschließend soll der String in die andere Applikation eingetragen werden. Das realisiere ich darüber, dass ich mir im Vorfeld das Handle der Applikation merke, und diese dann vor dem Paste aktiviere. Anschließend mache ich ein schnödes

SendKeys.Send("^{v}");

Gibt es für das Paste eine elegantere Lösung? Der Umgang über SendKeys fühlt sich in meinen Augen als gefrickelt an.

Danke für eure Ideen.

Gruß,
maYer

3.003 Beiträge seit 2006
vor 6 Jahren

Hm. Du schaltest dich in die Verwaltung der Zwischenablage über eine Win32-Methode ein, du hast - so verstehe ich es - einen globalen hook, der dir das Kontextmenü einblendet, du hantierst mit den Handles fremder Applikationen, und ausgerechnet bei SendKeys kriegst du Zweifel, ob das nicht gefrickelt ist?

Interop mit anderen Applikationen, was für deine Zwecke ja notwendig ist, ist immer Frickelei, einfach schon, weil das Betriebssystem Applikationen zu Recht als eigenständig betrachtet. In C++ wäre das nur nicht so aufgefallen.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

M
maYer Themenstarter:in
49 Beiträge seit 2005
vor 6 Jahren

*lach*

Naja, wenn man es von der Seite her aufdröselt, dann wirkt es in der Tat komisch.
Ich hatte gehofft, dass es eine andere Möglichkeit gibt ein Paste zu emulieren als das SendKeys, also eine "gefrickelte 32API-Lösung" 😉

Wenn dem nicht so ist, begnüge ich mich damit.

Schönen Tag noch,
maYer

D
261 Beiträge seit 2015
vor 6 Jahren

Hier eine Idee meinerseits (keine Garantie, dass es wirklich so funktioniert):

In der fremden Applikation hast du gerade das Ctrl+V abgefangen und der Benutzer klickt jetzt einen der aufgelisteten Einträge an. Eventuell kann man jetzt einfach die Clipboarddaten mit den Werten des Eintrags aktualisieren und dann das Ctrl+V weiterlaufen lassen.

D
985 Beiträge seit 2014
vor 6 Jahren

@dannoe

Der TE schreibt nirgends, dass er Strg-V abfängt. Er hat eine spezielle Tasten-Kombination (wohl ein Globaler Hotkey) mit der er sein "Zwischenablage-Verwaltungs-Programm" aufruft.

@maYer

Du kannst auch mal mit WM_PASTE herumspielen.