В последних версиях Windows рекомендуемый способ сбора информации из одного приложения в другое (если, конечно, у вас нет целевого приложения) - это использование технологии UI Automation .Википедия довольно хороша для получения дополнительной информации об этом: Microsoft UI Automation
В основном, автоматизация пользовательского интерфейса будет использовать все необходимые средства для сбора того, что можно собрать
Вот небольшойкод консольного приложения, который будет следить за интерфейсом других приложений.Запустите его и наведите курсор мыши на разные приложения.Каждое приложение имеет различную поддержку различных «шаблонов автоматизации пользовательского интерфейса».Например, здесь представлены шаблон Value и текстовый шаблон.
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);
}
Автоматизация пользовательского интерфейса фактически поддерживается Internet Explorer и Firefox, но не Chrome, насколько мне известно.См. Эту ссылку: Когда будет доступен Google Chrome?
Теперь это только начало работы для вас :-), потому что:
В большинстве случаев все это имеет серьезные последствия для безопасности.Использование этой технологии (или прямой технологии Windows, такой как WindowFromPoint) потребует достаточных прав для этого (например, администратор).И я не думаю, что DExperience каким-либо образом преодолеет эти ограничения, если только они не установят драйвер ядра на компьютер.
Некоторые приложения не будут открывать что-либо кому-либо, даже с соответствующими правами,Например, если я пишу банковское приложение, я не хочу, чтобы вы шпионили за тем, что будет отображать мое приложение :-).Другие приложения, такие как Outlook с DRM, не будут предоставлять что-либо по тем же причинам.
Только поддержка текстового шаблона автоматизации пользовательского интерфейса может дать больше информации (например, слова), чем только весь текст.Увы, этот конкретный шаблон не поддерживается ни IE, ни FF, даже если они поддерживают глобальную автоматизацию пользовательского интерфейса.
Так что, если все это не работает для вас, вам придется погрузиться глубже и глубже.использовать OCR или методы распознавания фигур.Даже при этом в некоторых случаях вы вообще не сможете это сделать (из-за прав безопасности).