HWND h, h1;
h = FindWindow(NULL, "FormXXX");
if (h != 0)
{
h1 = FindWindowEx(h, NULL, "TProgressBar", NULL);
if (h1 != 0)
{
LRESULT l;
l = SendMessage(h1, PBM_GETPOS, 0, 0);
ShowMessage(l);
} else
{
ShowMessage("FAILED 2");
}
} else
{
ShowMessage("FAILED 1");
}
Управление другой программой
Есть программа, которая написана на BCB и не зажата никакими упаковщиками, поэтому есть возможность смотреть/изменять компоненты формы.
Так как получить исходный код никак не удается (имеется ввиду не ASM), необходимо как-то пеердавать ей команды, скрывая при этом ее присутствие.
Как можно нажать в ней определенный кнопки и получить значение Progressbar'а?
У меня есть некоторые варианты для размышления:
1. Можно использовать SendMessage()
2. Можно перетащить необходимы ASM-код себе в программу и с ним уже манипулировать...
Что подскажите?
2. Можно перетащить ВЕСЬ ASM-код :)
Если серьезно - то SendMessage и для считывания хук на сообщения.
Я бы сделал так.
А возможно ли выложить сюда прогу? Вдруг кто захочет исследовать вместе с вами? Например, я...
Но то, что мне нужно было, я сделал... вот примерный код:
Код:
Его можно по-разному разширить - в зависимости от ситуации...
PS: использовал InqSoft Window Scanner для получения информации. Плюсы: русская версия и можно увидеть все возможные наборы команд (PBM_GETPOS, PBM_SETPOS и т.п.)