|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.05.2012, 15:45 | #11 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Цитата:
Другими словами, хочется взглянуть на проблему в комплексе и, как правило, находятся обходные решения, которые топик-стартер просто не замечает в силу разного рода причин
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|
04.05.2012, 16:20 | #12 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
внедряетесь и вызываете свой SetTimer.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.05.2012, 16:48 | #13 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
хорошо. основание справедливо.
объясню смысл пролог: лет восемь назад попалась мне мне прога, которая определяла окно под курсором мыши. В то время я еще представить не мог, что винда сплошь состоит из окон, которые за секунду принимают чёртову кучу сообщений и очень удивился, как так прога это делает ------ в 2008 году начал изучать программирование и постепенно это узнал. за это время мне попадались разные проги для сканирования окон, получения их стиля и т.п. но каждая из них была либо не удобная в использовании, либо малофункциональная. Две из таких "Microsoft spy++" и "InqSoft windows scanner". Полтора года назад я узнал, что с помощью функции SendMessage можно отправить любому окну любое сообщение, чего нельзя сделать существующими программами. "InqSoft" всё-же может это делать, но в ограниченном режиме. И интерфейс у нее крайне не удобен. вот и появилась идея создать программу, которая бы делала с окнами и контролами почти всё, что позволяют функции WinAPI, имея при этом относительно удобный и понятный интерфейс. я уже сделал следующее: - Отображение списка всех Parent-окон. при нажатии на любое, отображается список его child-окон. - переименование окон. - применение showwindow, enablewindow; - развернуть / свернуть окно. - управление размером и позицией окна. - получение / изменение Parent'а окна - получение / изменение стилей окна с помощью checkbox'ов. и т.п. на данном этапе, меня интересует вопрос с таймером |
04.05.2012, 16:52 | #14 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
04.05.2012, 18:57 | #15 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
В теории надо сделать следущее.
Окном владеет чужой процесс. Надо получить его PID: GetWindowThreadProcessId (HWND, LPDWORD dwProcessId) Открыть его, получив хендл: hProcess = OpenProcess (PROCESS_CREATE_THREAD |PROCESS_VM_OPERATION |PROCESS_VM_WRITE, FALSE, dwProcessId); Написать длл и заставить процесс загрузить ее к себе. Код выполняемый в длл, будет выполнятся в контексте чужого потока, что вообщем и требуется. Чтобы заставить процесс загрузить эту длл надо, чтобы он вызвал функцию LoadLibrary. Для этого выделяем память под строку с полным путем внедряемой длл: VirtualAllocEx Записываем строку WriteProcessMemory(hProcess , path, ....) И вызываем создание удаленного потока: pLL = GetProcAddress(GetModuleHandle("Ker nel32"), "LoadLibraryA"); hThread = CreateRemoteThread(hProcess, NULL, 0, pLL, path, 0, NULL); Длл получит уведомление DLL_PROCESS_ATTACH и пошла мазута |
05.05.2012, 08:57 | #16 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
а какие именно аргументы передавать в функции VirtualAllocEx и WriteProcessMemory?
MSDN читал, но не понял, какие из них нужны в моем случае. А подбирать их методом тыка - полный бред. какой тип у переменной pLL? Pointer? |
05.05.2012, 09:11 | #17 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
Код:
Влом проверять. Последний раз редактировалось EUGY; 05.05.2012 в 09:18. |
|
05.05.2012, 12:00 | #18 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Ну а что вы хотели от самоучки?
для этого и существуют форумы по программированию. Если чего-то не знаешь или не понимаешь - задал вопрос, получил ответ. Цитата:
в программe: Код:
Код:
hThread > 0 где я накосячил? |
|
05.05.2012, 12:28 | #19 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Вроде суть уловили почти правильно.
size = length(t) + 1; MEM_RESERVE уберите. В пятом параметре CreateRemoteThread не @t, а указатель на выделенную через VirtualAllocEx память ptr1 Ну и каждую функцию в отладчике проходите, смотрите, что они возвращают. |
05.05.2012, 13:02 | #20 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
переделал, но MessageBox не видно.
Код:
Последний раз редактировалось BLACK_RAIN; 05.05.2012 в 13:15. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Таймер SetTimer и глюки с ним | Jugger | Win Api | 2 | 09.03.2012 20:21 |
Settimer в winx64 не работает, рушит Excel?! | budda999 | Microsoft Office Excel | 9 | 07.01.2012 13:43 |
Отследить изменение курсора в чужих окнах | Lime | Общие вопросы Delphi | 2 | 02.07.2009 19:17 |
SetTimer, KillTimer | NeiL | Win Api | 5 | 05.03.2008 07:37 |