![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
Ребята, нужно написать прогу которая делала манипуляции с другой прогой! В инете порылся, нашел что это делается через Spy++. Только как это сделать через С# пока представления не имею. Объясните пожалуйста, кто имел опыт работы или укажите ссылочку на данную тематика!
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Spy++ это утилита, входящая в комплект VS начиная с 6-й версии. Предназначение её состоит в том, чтобы иметь возможность посмотреть на иерархию процессов, потоков и окон. Кроме того, можно трассировать WinAPI-шные сообщения с возможностью фильтрации, а также найти окно по Handle и наоборот. Вот практически всё что она умеет.
-------------------- ![]() |
|||
|
||||
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
||||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
вот именно, поэтому первый вопрос непонятен:
Что касаемо собстна "нажать чужую кнопку", так это на WinAPI делается "на раз", если знать структуру чужого окна (нас интересуют имена window classes и иерархия вложенности окон). Действительно, получить эту инфу можно с пом. Spy++. На этом все возможности этой утилиты и заканчиваются, потому что посылать сообщения она не умеет. Как нажать кнопку, зная её window class и расположение в дереве окон ? Используя функцию FindWindow или FindWindowEx, получаем по имени или по window class-у "корневое" окно приложения, затем таким же образом ищем вложенное окно, пробираясь по иерархии окон. Когда добрались до кнопки, имеем её Handle (HWND), можно послать нажатие. Чтобы в точности сымитировать нажатие, можно например с помощью той же Spy++ прицепиться к кнопке и трассировать оконные сообщения с фильтрацией "только WM_LBUTTONDOWN, WM_LBUTTONUP", получив таким способом lParam и wParam. Эти значения и будут аргументами ф-ции SendMessage. -------------------- ![]() |
|||
|
||||
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
А можно привести пример на С#, пожалуйста! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Пример для какого приложения тебе нужен ? Или так, в общем ?
-------------------- ![]() |
|||
|
||||
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
||||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Вот пример, консольное приложение, при запуске находит окно калькулятора и "нажимает" в нём кнопку 1:
-------------------- ![]() |
||||
|
|||||
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
||||
|
||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 1 Всего: 6 |
Давно мучал вопрос. Как из приложения C# выключить/перезагрузить комп? Ессно, через винапи, но сколько ни лазил по библиотекам... в общем, как?
![]() Собрался написать хитрую программку, которая прячется в автозапуске и при активизации перезагружает комп ![]() ![]() -------------------- 3 ГОДА НА ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
один топик = один вопрос, вообще-то... Что касается "как выключить комп", то это делается через командную строку: RUNDLL.EXE user.exe,exitwindows Можно то же самое через WinExec организовать, или через Process.Start() -------------------- ![]() |
|||
|
||||
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
А почему кнопка может не ловится Spy++? Я навожу на нее прицел, а виделяется только один GroupBox
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Может, и не кнопка это вовсе ![]() Руками нарисованная, то есть. З.Ы. проверить просто: находишь прицелом групбокс и в дереве смотришь, какие у групбокса внутри есть чилды. Если там кнопки нету - значит её и нет. З.Ы.(2) извиняюсь за задержку с ответом. -------------------- ![]() |
|||
|
||||
zmaximka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 27.5.2006 Где: Украина, Одесса Репутация: нет Всего: нет |
||||
|
||||
jfx |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.10.2004 Репутация: нет Всего: 1 |
Думаю вам небезинтересно будет прочесть вот эту статью:
Deliver The Power Of Spy++ To Windows Forms With Our New Tool
Источник Это сообщение отредактировал(а) jfx - 23.6.2006, 16:12 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |