J'ai une petite application de plateau qui enregistre une touche de raccourci pour l'ensemble du système. Lorsque l'utilisateur sélectionne un texte n'importe où dans une application et appuie sur cette touche de raccourci, je veux être en mesure de capturer le texte sélectionné. Je fais actuellement cela en utilisant AutomationElements:Comment obtenir le texte sélectionné de N'IMPORTE QUELLE fenêtre (en utilisant UI Automation) - C#
//Using FocusedElement (since the focused element should be the control with the selected text?)
AutomationElement ae = AutomationElement.FocusedElement;
AutomationElement txtElement = ae.FindFirst(TreeScope.Subtree,Condition.TrueCondition);
if(txtElement == null)
return;
TextPattern tp;
try
{
tp = txtElement.GetCurrentPattern(TextPattern.Pattern) as TextPattern;
}
catch(Exception ex)
{
return;
}
TextPatternRange[] trs;
if (tp.SupportedTextSelection == SupportedTextSelection.None)
{
return;
}
else
{
trs = tp.GetSelection();
string selectedText = trs[0].GetText(-1);
MessageBox.Show(selectedText);
}
Cela fonctionne pour certaines applications (comme le bloc-notes, les boîtes d'édition studios visuels et autres), mais pas pour tous (tels que Word, FireFox, Chrome, et ainsi de suite.
Quelqu'un ici avec des idées de comment être capable de récupérer le texte sélectionné dans n'importe quelle application?
En dépit de ce qui est dit ci-dessous, rappelez-vous que le presse-papiers n'est rempli que si l'application implémente_Ctrl-C (ou autre); le presse-papiers n'est pas une solution – smirkingman