Таймер постов

Тут у товарища @Your.God, возник вопрос о возможности создания таймера к постам ( http://pikabu.ru/story/taymer_postov_i_mozhet_byit_spisok_ch... ), где я имел неосторожность оставить комментарий, что это просто сделать самому. Ну, раз ляпнул - нужен познавательный пост.

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Так вот, @copoka618, один способ:

Нашу задачу можно разбить на две части: отправить пост без прямого участия человека и сделать это в заданное время.

Разберемся с первой задачей. Фактически, нам нужно послать правильную комбинацию клавиш на определенную вкладку браузера (скорее всего это ctrl+enter, но я пока не уверен, я писал на пикабу только один пост и то давно). Если это не сработает, то точно сработает клик по кнопке. Для выполнения подобных действий существует множество программ, называемых автокликерами. Однако, если нет доверия к левым программам или есть интерес (как у меня) сделать это самому и у тебя наличествуют хоть какие-то навыки программирования (даже если минимальные, с помощью интернета все получится), то ты поступишь как я. Открываем любимый инструмент.

Поправка, выбранный язык - C#

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Для начала, необходимо понять, какому процессу мы будем посылать нажатия клавиш. В моем случае это хром, но на каждую вкладку хром создает по процессу + несколько вспомогательных процессов. Значит надо выбирать. Я пойду по пути наименьшего сопротивления и буду смотреть все процессы с именем "chrome" и проверять, что название выбранного окна совпадает с желаемым ("Добавить пост").

Таймер постов Таймер, Планировщик, Программирование, Длиннопост
Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Тут получаем все процессы "chrome", из них выбираем первый, имеющий не пустое название окна (можно было бы попробовать поискать сразу процесс-вкладку, но тут есть нюанс - окно для процессов вкладок общее, а я сейчас пишу "без заморочек"). Если такой находится, делаем по нему альт-таб. Да, для работы с окнами импортируем методы из виндовой библиотеки user32.dll (у меня толи пикабу шакалит вырезки при аплоаде, толи ножницы странно нарезают).

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Найдя нужный процесс, можем отправить ему команду. А конкретно команду ctrl+tab (с интервалом раз в половину секунды), до тех пор, пока не выберется нужная нам вкладка.

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

А дальше остается только отправить ctrl+Enter.

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Профит (мы могли это сделать за 10 секунд - скачать с гугла кликер, но мы не ищем совсем уж легких путей). Теперь нужен планировщик. У ОС Windows есть нужная нам утилита. Открываем панель управления, в поиск вводим "планиров" > открываем планировщик заданий.

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Справа тыркаем по "Создать простую задачу". Следуя нехитрой инструкции создаем задание на выполнение созданной нами программы, оставляем включенный хром я черновиком и идем спать/на работу или куда еще.
Всем добра, бобра и бодра. Я мог что-то не понятно написать, у меня иногда бывает.

PS. ctrl+Enter не сработал, но не беда. как я сказал, можно то же самое сделать мышкой. Отправляем вместо ctrl+Enter раз 10 (что добраться до низа самого длинного длиннопоста) PageDown. Это нужно, чтобы кнопка "добавить пост" была в фиксированной позиции относительно экрана.
Нам понадобится пара функций управления курсором (опять из user32.dll) движение и событие мышки, и к ней два типа события, нажать ЛКМ и отпустить ЛКМ

Таймер постов Таймер, Планировщик, Программирование, Длиннопост

Ну и сам клик

Таймер постов Таймер, Планировщик, Программирование, Длиннопост