Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie paste ich den Wert der Zwischenanlage in fremde Applikation?
maYer
myCSharp.de - Member



Dabei seit:
Beiträge: 49
Herkunft: Dortmund

Themenstarter:

Wie paste ich den Wert der Zwischenanlage in fremde Applikation?

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3.003
Herkunft: Thüringen

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
maYer
myCSharp.de - Member



Dabei seit:
Beiträge: 49
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

*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
private Nachricht | Beiträge des Benutzers
dannoe
myCSharp.de - Member



Dabei seit:
Beiträge: 192

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Deaktiviertes Profil
myCSharp.de - Member



Dabei seit:
Beiträge: 985

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers