Существует так много отдельных полезных программ, исходный код которых недоступен, но некоторые из них прекрасно интегрируются друг с другом!Единственная проблема в том, что я не знаю, как разрешить разным программам взаимодействовать друг с другом в Windows 7.
Я знаю C++/C#/XAML; понимаю, как использовать командную строку для передачи аргументов запуска программам и как создавать пакетные файлы... Но как можно управлять запущенными программами без ручного управления?
Я также знаю, как обрабатывать ввод данных Windows, такой как движения мыши или щелчки, но это позволяет осуществлять только прямое взаимодействие с операционной системой, а не с конкретными программами, которые открыты в данный момент.
Я хочу иметь возможность передавать входные данные отдельным программам, одновременно занимаясь другими делами.
Вот пример проблемы, которую я пытаюсь решить:
У меня есть программа, которую я называю "Экстрактор членов", которая извлекает контактную информацию участников моего сайта; хотя программой можно управлять только через ее графический интерфейс; и пока не имеет возможности экспортировать данные. (поэтому каждый фрагмент информации, такой как адрес электронной почты, номер телефона и т. д., должен быть скопирован в буфер обмена по одному и вставлен в новый "Майкрософт Эксель"документ).
После того, как информация скопирована и сохранена в организованном виде, мне нужно импортировать эти данные по одному в несколько новых "Профили контактов"сгенерировано "Универсальный менеджер контактов"расширение «Веб-браузер Google Chrome»
- Все это должно выполняться автоматически с помощью какого-то скрипта, который может работать в фоновом режиме, пока я работаю над другими делами.*
Как это можно сделать?
Я бы предположил, что мне понадобится несколько виртуальных буферов обмена... но что еще?
решение1
Если вы можете сделать это вручную, вы можете легко автоматизировать это с помощью макропрограммного обеспечения. Мое оружие выбора -AutoHotkey, конкретноAutoHotkey_L.
Документация
Исходя из вашего примера, следующее будет полезно:
ПеременныеиМассивыдля работы с данными.
УправлениеОтправитьиControlClickдля работы с неактивными окнами.
ПетлииЦиклы Whileдля повторения.
Например, логика вашего скрипта может выглядеть так*:
*Возможны незначительные ошибки, но суть вы уловили!
;Note: find Control and Window names using AutoIt3 Window Spy
Name := []
Email := []
;etc...
members = 100
while (members > 0)
{
Clipboard =
ControlSend, MemberExtrControl, ^a^c, MemberExtrWindow
ClipWait
Name.Insert(Clipboard)
Clipboard =
ControlSend, MemberExtrControl, Tab^a^c, MemberExtrWindow
Clipwait
Email.Insert(Clipboard)
;etc...
members--
}
index = 1
Loop % Names.MaxIndex()
{
name := Name.Remove(index)
email := Email.Remove(index)
;etc...
ControlSend, ContactMgrControl, %name%, ContactMgrWindow
ControlSend, ContactMgrControl, Tab%email%, ContactMgrWindow
;etc...
index++
}