Мда походу Тупик! Если int2eh имеет это в виду Код (Text): push offset nMax push offset nMin push SBM_GETRANGE push hWnd call SendMessageA она то работает и записывает Какуюто хрень уж точно не то что мне надо! Какой то мусор во всяком случае разность этих чисел достигает огромных значений... Всё таки правду пишут в MSDN Applications should not send this message directly
Понятно почему Какуюто хрень - это потому, что ты не из того адресного прост-ва, надо внедриться в тот процесс, ведь offset nMin и offset nMax из адресного простр-ва твоего процесса, а например у IE по этим адресам может быть записан пин код пластика...
Так а как это сделать то правильно Код (Text): push 1 push xThreadId push CurThreadId call AttachThreadInput Это я сделал,что дальше???
1. GetWindowThreadProcessId(, &Id) 2. hProcess = OpenProcess(PROCESS_VM_OPERATION, FALSE, Id) 3. Mem = VirtualAllocEx(hProcess, 0, 4096, MEM_COMMIT, PAGE_READWRITE) 4. SendMessage(hWnd, SBM_GETRANGE, (WPARAM)Mem, (LPARAM)((BYTE*)Mem + 4)); 5. ReadProcessMemory(hProcess, (LPVOID)Mem, Buf, 4096, ) 6. VirtualFreeEx() 7. CloseHandle(hProcess) А если ничего не выйдет, то тогда внедряй в чужой процесс свою длл. Вот как-то так!
Код (Text): call GetForegroundWindow mov hxWnd,eax push offset xProcessId push hxWnd call GetWindowThreadProcessId push xProcessId push 0 push PROCESS_ALL_ACCESS call OpenProcess mov hxProcess,eax push PAGE_READWRITE ;DWORD flProtect // тип доступа push MEM_COMMIT ;DWORD flAllocationType, // способ получения push 4096 ;SIZE_T dwSize, // размер push 0 ;offset lpAddress ;LPVOID lpAddress, // базовые адрес push hxProcess call VirtualAllocEx mov lpAddress,eax mov eax,lpAddress mov ebx,lpAddress add ebx,4 push ebx push eax push SBM_GETRANGE push hxWnd;hxEdit call SendMessageA call GetLastError GetLastError = ERROR_NOACCESS А чё теперь не так то? Хочется биться головой о стенку.
Лучше PROCESS_VM_OPERATION, но это все равно не главное, - значит надо внедряться в чужой процесс, примеры кода есть у Рихтера. Вот как-то так!
просто добавь свою либу в таблицу импорта к браузеру для тестов Это умеют делать почти все PE-редакторы/эксплорерэ Отставить инжекы пока что)
Поздно Но всё равно полного эффекта нет Инжект либки выполнил тут всё OK Дальше, то что в либке Код (Text): EnumChildWindows(GetForegroundWindow(), EnumChildProc, 0); Код (Text): BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) { UINT Resalt; GetScrollRange(hwnd, SB_VERT, (LPINT) &RangeMin, (LPINT) &RangeMax); Resalt = GetLastError(); return TRUE; } Ну по результату работы GetScrollRange и GetLastError я определяю есть здесь то что нужно или нет. Сей код находит скрол бар в большинстве приложений , ну к примеру в браузере хром, исключения составили: - IE - Акробат ридер Как устранить недочеты, что бы пахало и в IE?
skyproc WM_MOUSEWHEEL - есть рывки оО? если вы о шаге, то думаю его изменить будет трудно, т.е. более универсально, наверно - инжектнуть жаваскрипт)
какой жава из приложения Win надо прокручивать, прокручивать надо плавно с возможностью изменять скорость!!!
возьми хром - где у него там есть скрол бар как win контрол? -нету такова, потому что они сами его нарисовали и контролируют - можешь отреверсить (или сорсы почитать) - и найти решение под хром. а что с остальными?? - Ну мож там в ие используется стандартное окошко и ему можно слать чего хочешь - незнаю, но думаю что тож рисуют, т..к там все рисуют сами в соотвествии к html коду. То что не получится поскролать плавней чем ты мышаком можешь это сделать - 100% (это елси мессаги всякие юзать) выхода есть два: 1. Шлешь мессаги что мышь нажалась на скроле и тащишь её мессагами вниз = плавно, но коряво до ужаса. 2. инжектишь жава_скрипт код в страницы браузера которые нужно скролить, и тот уже сам все делает (там есть возможность поскролать плавненько, на сколько знаю)
IE, FireFox, Chrome - у них у всех стандартные скролбары, и никто ничего там не отрисовывает Ибо это был бы страшный гемор неоправданная трата ресурсов и больше ненужного кода, то есть больше багов!!! Ось она засем и нужна что бы пользоваться её благами и не очем не заботиться...