markierten Text laden

klanawagna

Erfahrenes Mitglied
Hallo Leute!

Ich habe ein Problem, google kann mir nicht helfen - ich wende mich an die Community meines Vertrauens. Euch ;)

Ich will eine C# Anwendung, die im Hintergrund läuft, ich per Tastenkombination aufrufe und dann Text der in einer anderen Anwendung markiert ist in einen String einliest.

2 Probleme hiermit:
1.) wie sage ich dem Programm, dass es bei einer gewissen Tastenkombination (beispielsweise [Win]+T) eine gewisse Aktion ausführt? (bei Windows registrieren?)
2.) wie bekomme ich den markierten Text?

Danke!

lg!
 

ComFreek

Mod | @comfreek
Moderator
Hallo,

ich kenne mich überhaupt nicht mit .NET aus, aber vielleicht kann ich was sagen.

Bei der Tastenkombination, können eventuell "Windows Hooks" helfen, einfach mal googlen, aber es könnte auch sein, dass es einen einfachereren Weg gibt.
 

Shakie

Erfahrenes Mitglied
Für das zweite Problemm, wenn du nicht die Zwischenablage missbrauchen willst:
zuerst musst du das Handle des Controls der anderen Anwendung herausfinden. Dann sendest du mittels SendMessage oder SendMessageTimeout die Nachricht WM_GETTEXT an dieses Control (siehe hier).

Das Handle des Controls herauszufinden ist nicht so einfach. Ich sehe zwei Möglichkeiten
  1. nach dem Control suchen über dem sich der Mauszeiger befindet
  2. nach dem Control suchen welches den Fokus hat
Für ersteres gibt es die APIs WindowFromPoint und ChildWindowFromPoint.
Für zweiteres gibt es GetGUIThreadInfo, GetForegroundWindow und vielleicht ist auch GetFocus brauchbar.