Sur les versions récentes de Windows, la méthode recommandée pour recueillir des informations à partir d'une application à l'autre (si vous n'avez pas l'application ciblée, bien sûr) est à utiliser l' INTERFACE utilisateur de l'Automatisationde la technologie.
Wikipédia est assez bonne pour plus d'informations sur ce: Microsoft UI Automation
Fondamentalement, UI automation va utiliser tous les moyens nécessaires pour rassembler ce qui peut l'être réunis
Voici une petite application console code espion de l'INTERFACE utilisateur d'autres applications. Lancez-le et déplacez la souris sur les différentes applications. Chaque application dispose d'une prise en charge différentes pour les différents "UI automation modèles". Par exemple, il y a la Valeur de modèle et le modèle de Texte tel que démontré ici.
static void Main(string[] args)
{
do
{
System.Drawing.Point mouse = System.Windows.Forms.Cursor.Position; // use Windows forms mouse code instead of WPF
AutomationElement element = AutomationElement.FromPoint(new System.Windows.Point(mouse.X, mouse.Y));
if (element == null)
{
// no element under mouse
return;
}
Console.WriteLine("Element at position " + mouse + " is '" + element.Current.Name + "'");
object pattern;
// the "Value" pattern is supported by many application (including IE & FF)
if (element.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))
{
ValuePattern valuePattern = (ValuePattern)pattern;
Console.WriteLine(" Value=" + valuePattern.Current.Value);
}
// the "Text" pattern is supported by some applications (including Notepad)and returns the current selection for example
if (element.TryGetCurrentPattern(TextPattern.Pattern, out pattern))
{
TextPattern textPattern = (TextPattern)pattern;
foreach(TextPatternRange range in textPattern.GetSelection())
{
Console.WriteLine(" SelectionRange=" + range.GetText(-1));
}
}
Thread.Sleep(1000);
Console.WriteLine(); Console.WriteLine();
}
while (true);
}
UI automation est en fait pris en charge par Internet Explorer et Firefox, mais pas par Chrome à ma connaissance. Voir ce lien: Quand Google Chrome être accessible?
Maintenant, c'est juste le début du travail pour vous :-), parce que:
La plupart du temps, tout cela a une lourde incidence sur la sécurité. L'utilisation de cette technologie (ou de demander à Windows de la technologie tels que WindowFromPoint) nécessitera des droits suffisants pour le faire (comme le fait d'être un administrateur). Et je ne pense pas DExperience a aucune façon de surmonter ces limitations, à moins d'installer un pilote de noyau sur l'ordinateur.
Certaines applications ne seront pas d'exposer quelque chose à quelqu'un, même avec des droits appropriés. Par exemple, si j'écris une application bancaire, je ne veux pas vous espionner ce que mon écran :-). D'autres applications telles que Outlook avec DRM ne seront pas d'exposer quoi que ce soit pour les mêmes raisons.
Seule la UI automation modèle de Texte de soutien peut donner plus d'informations (comme le mot) que de simplement l'ensemble du texte. Hélas, cette spécificité n'est pas pris en charge par IE ni FF, même s'ils prennent en charge l'INTERFACE utilisateur de l'automatisation à l'échelle mondiale.
Donc, si tout cela ne fonctionne pas pour vous, vous aurez à plonger plus profond et l'utilisation de ROC ou de reconnaissance de formes techniques. Même avec cela, il y aura des cas où vous ne serez pas en mesure de le faire (à cause des droits en matière de sécurité).