Ho una piccola applicazione per il vassoio che registra un tasto di scelta rapida del sistema. Quando l'utente seleziona un testo in qualsiasi applicazione e preme questo tasto di scelta rapida, desidero essere in grado di acquisire il testo selezionato. Attualmente sto facendo questo utilizzando AutomationElements:Come ottenere il testo selezionato da QUALSIASI finestra (usando l'automazione dell'interfaccia utente) - 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);
}
Questo funziona per alcune applicazioni (come il blocco note, visivi studi di caselle di modifica e simili), ma non per tutti (come Word, Firefox, Chrome, e così via.)
Chiunque qui ha qualche idea su come essere in grado di recuperare il testo selezionato in QUALSIASI domanda?
Nonostante ciò che viene detto di seguito, ricorda che gli appunti vengono riempiti solo _ se l'applicazione implementa Ctrl-C (o qualsiasi altra cosa); gli appunti non sono una soluzione – smirkingman