Вытягивание текста из другой программы

165
28 апреля 2018, 15:49

Установлен СофтФон MicroSip, и при поступлении входящего звонка необходимо вытаскивать номер телефона. Чем в этом случае пользоваться?

Answer 1

Для доступа к UI элементам программ есть 2 технологии доступа UI Automation и MSAA

Для первого есть неплохая обертка Winium которая позволяет работать с WinForms и WPF через Selenum WebDriver. Смотреть какие элементы с какими атрибутами есть на форме можно через утилиты Inspect или UISpy взять можно здесь

Пример работы с WinForm используя Winium (взято из Readme)

namespace ConsoleApplication
{
    using System.Windows.Automation;
    using Winium.Cruciatus.Core;
    using Winium.Cruciatus.Extensions;
    public class Program
    {
        private static void Main(string[] args)
        {
            var calc = new Winium.Cruciatus.Application("C:/windows/system32/calc.exe");
            calc.Start();
            var winFinder = By.Name("Calculator").AndType(ControlType.Window);
            var win = Winium.Cruciatus.CruciatusFactory.Root.FindElement(winFinder);
            var menu = win.FindElementByUid("MenuBar").ToMenu();
            menu.SelectItem("View$Scientific");
            menu.SelectItem("View$History");
            win.FindElementByUid("132").Click(); // 2
            win.FindElementByUid("93").Click(); // +
            win.FindElementByUid("134").Click(); // 4
            win.FindElementByUid("97").Click(); // ^
            win.FindElementByUid("138").Click(); // 8
            win.FindElementByUid("121").Click(); // =
            calc.Close();
        }
    }
}
Answer 2

Второй вариант использовать proxy, перехватывать и разбирать сетевой трафик и выцеплять номер телефона из запроса тут можно воспользоваться проектом Titanium

READ ALSO
Генерация случайных дробных чисел

Генерация случайных дробных чисел

Есть вот такая задача: Сгенерировать массив чисел, сумма которых составит 1Кол-во чисел вводится с клавиатуры

146
Derived Control: Implement CreateHandle

Derived Control: Implement CreateHandle

Как правильно реализовать производный от SystemWindows

155
Получение данных из Mysql C#

Получение данных из Mysql C#

Необходимо получить balance по userid

124