RockHammer Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 Всем привет!Хочу сделать такую штуку, чтобы при включении моего трейнера - менялись обои рабочего стола на мои (кастомные) в фотошопе нарисую какой-нибудь свой логотип.Задумка такая, при открытии моего трейнера - запоминаются текущие обои и заменяются новыми. Новые обои действуют только пока мой трейнер активен, тоесть когда трейнер закрывают - старые обои возвращаются на круги своя. Но в сам .exe трейнера это воткнуть сложно, ибо возможны баги с тем, что трейнер закроется - а обои не вернутся.У меня появилась бредовая мыслишка: в системе постоянно активны фоновые процессы. Что если написать .dll ку и при запуске моего трейнера эта .dll'ка будет инъектироваться в системный процесс. Эта дллка запомнит текущие обои и сменит их на мои кастомные. В цикле будет проверка запущенности моего процесса с трейнером. Пока трейнер активен - ничего не делать, когда процесс с трейнером не найден - вернуть старые обои и выгрузить себя из памяти системного процесса.Тоесть, моя идейка заключается в "наблюдении со стороны" на процесс моего трейнера. Как это осуществить? Есть "безобидные" процессы, в которые можно внедрить .dll'ку без последствий?Ну и, собственно, как запоминать текущие обои? Как заменять обои на кастомные (встроенные в .dll'ку)? Ну и есть ли какие сопутствующие трудности? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 Но в сам .exe трейнера это воткнуть сложно, ибо возможны баги с тем, что трейнер закроется - а обои не вернутся.Чушь. Никто не мешает отловить сообщениеWM_CLOSE и вернуть обои на место в этом обработчике. Но я бы, например, таким трейнером пользоваться не стал. Кому понравится, если его любимые обои будут вдруг заменены другими, пусть и временно? Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 12 июля, 2015 Автор Поделиться Опубликовано 12 июля, 2015 Кому понравится, если его любимые обои будут вдруг заменены другими, пусть и временно?Мне понравится) WM_CLOSE и вернуть обои на место в этом обработчике.Ok, Xipho: что такое WM_CLOSE и как его отловить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 Если ты этого не знаешь, то тебе явно рано самостоятельно трейнеры писать ) ЗЫ. [ТЫЦ] (первая же ссылка сверху) Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 Чушь. Никто не мешает отловить сообщениеWM_CLOSE и вернуть обои на место в этом обработчике. Но я бы, например, таким трейнером пользоваться не стал. Кому понравится, если его любимые обои будут вдруг заменены другими, пусть и временно?Это не кому не понравится. Думаю не сложно догадаться,что будет в комментариях под этим трейнером(особенно во время летних каникул) окажись он не здесь,а где не будь на плей граунде хотя бы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 плюсую, менять обои это слишком Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 плюсую, менять обои это слишком И не плюсанул Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 12 июля, 2015 Автор Поделиться Опубликовано 12 июля, 2015 плюсую, менять обои это слишком Я это для себя) Не для "широкой публики") Просто вдруг взбрело в голову, хочу осуществить Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 июля, 2015 Поделиться Опубликовано 12 июля, 2015 Не уверен, что пользователю понравится подобная деятельность любой программы в его системе. Особенно если его не предупреждать. Ну и да, кто мешает сделать два процесса или отдельный поток, раз уж с WM_CLOSE работать лень? Для инжекта в системный процесс понадобятся как минимум административные права. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 13 июля, 2015 Автор Поделиться Опубликовано 13 июля, 2015 Не уверен, что пользователю понравится подобная деятельность любой программы в его системе. Особенно если его не предупреждать. Я это для себя) Ссылка на комментарий Поделиться на другие сайты Поделиться
Warsnr Опубликовано 25 июля, 2015 Поделиться Опубликовано 25 июля, 2015 Экстравагантности тебе не занимать)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 Может немного поздно, но...Получить обои можно при помощи SystemParametersInfoФлаг - SPI_GETDESKWALLPAPER, установить обои можно этой же функцией, флагом - SPI_SETDESKWALLPAPER.Пример установки обоев:LPWSTR imgPath = L"C:\\Users\\root\\wallpapers\\1.png";BOOL result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imgPath, SPIF_UPDATEINIFILE);if (!result) { printf("Cannot set wallpaper! Error: 0x%X\n", GetLastError());}Написать вызов для получения текущих обоев думаю тебе не составит труда.Потом по-поводу восстановления обоев, отлавливай WM_QUIT в главном потоке приложения, также при запуске приложения можно попробовать установить обработчик сигнала - SIGTERM (https://msdn.microsoft.com/en-us/library/ms811896.aspx#ucmgch09_topic3).+ Ты можешь написать свою службу, которая будут проверять запущен твой трейнер или нет (http://habrahabr.ru/post/71533/) и манипулировать с обоями. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения