Задача такая: есть прога , клиент покера на яве, нужно каким-то образом менять текст на контролах окна. Как это делают в ява приложениях? Я так понял есть какие-то либы в папке bin которые имеют функции переходники?
JBossAOP - это для перехвата Java кода Ну либо перехватывать нативные функции ... но это сложней , и думай в гугле можно найти ...
Selah Полюбому есть ... Что конктерно нужно менять? просто окно это одно дело и вот когда выливатся дип секция или битмап .... то тут обычным перехватом нативного апи не обойтись. П.С. Под отладчиком можно посмотреть, а реалиазация это в комерс, так как там много кодеса для перехватов ...
Selah Все сервисы, чей идентификатор больше 0x1000. Какой бы не вызывался сервис с этим номером, шадов получит управление.
shchetinin Не следует людей отсылать в комерс для решения примитивных задач. Рано или поздно вас туда также отправят. Ваша тема http://wasm.ru/forum/viewtopic.php?id=41656 - в комерс!!
klzlk Моя тема была с вопросом технического характера ... В прочем лады ... поехали... Selah Если реализовывать это на нативном уровне, то сдезь проблема в отслеживании DIB,DBB памяти. Пример ////////////////////////////// LPVOID lpBits; CreateDIBSection( CreateCompatibleDC(), &lpBits , , , ); //////////////////////////////////////// /// Вот может быть манипуляция с lpBits, без уведомления что на нем потом влить BitBlt или AlphaBlend /////и ну все такого ////////////////////////////// Основные функции для вывода текста GDI ExtTextOutEx GDIPlus GdipDrawString Вообще это не простой перехват нативного апи, требуется восстонавливать и вести контекст рисования ... Selah Что конктрено не понятно? что вы уже написали? в чем загвоздка? Вы можете посмотреть какой апи реально используется ? (http://www.apimonitor.com/, WinDbg). На много будет проще если перехват будет на уровне Java.
Да я написал то что уже нашел на этом форуме, вот здесь http://wasm.ru/forum/viewtopic.php?id=36613 Меня интересуют детали и перехват вывода текста в контролы явы. Каким образом посмотреть мне апи которые используются? если тут вирт машина явы пашет, код выполняется внутри. Где искать либы переходники?
Так, апи монитор справляется , либа C:\Program Files\Java\jre6\bin\awt.dll отвечает за отрисовку контролов. За какой апи теперь следить? DrawText ?
А, значит, это AWT -- библиотека для создания пользовательского интерфейса. Исходники открыты, это может помочь в разборе логики контрола. Там же можно посмотреть, какие ф-ии вызываются из .dll (в Java такие ф-ии идут с квалификатором "native").
Делаю перехват TextOut, ExtTextOut, DrawText в javaw.exe Но нужного текста не вижу в параметрах.. Вот к примеру есть такая прога на яве: Код (Text): import java.applet.Applet import java.awt.Graphics; public class Where extends Applet{ public void paint(Graphics g) { g.drawString("Who am i?",100,100); } } Какой апи рисуется эта строка??
Selah Запусти apimonitor. Строка в ероглифах ? если да , это просто отрисовка происходит в глифах BOOL ExtTextOut( __in HDC hdc, __in int X, __in int Y, __in UINT fuOptions, __in const RECT *lprc, __in LPCTSTR lpString, __in UINT cbCount, __in const INT *lpDx ); fuOptions [in] ETO_GLYPH_INDEX. API Декодирование глифов GetFontUnicodeRanges, GetGlyphIndices
Selah А ну это он делает практически фил ... Больше не каких нет вызовов(ExtTextOutW только с пустой строкой)? например GdipDrawString?