nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 25 Sep 2017 15:04



Reply to topic  [ 33 posts ]  Go to page Previous  1, 2, 3
Пропатчить программу на VC++ 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
чтой-то не найду, как картинки вставить ...

У Вас же была моя почта, когда мы 580ВМ80 на Протезусе мучали...
Напомню в личку.

_________________
iLavr


19 Feb 2015 08:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Что-то я тут над одной вещью затупил... :(
В моём коде 5-летней давности DLL перехвата сообщений тоже вызывается
через LoadLibraryA и должна вернуть "хэндлер" библиотеки hLib.

Под вызовом LoadLibraryA написанный мной-же комментарий:
Code:
  Объявляют переменные в DLL'ке и после загрузки DLL в процесс
  exe-шника вызывают из неё процедуру инициализации переменных
  в этом случае глобальные переменные DLL доступны и в exe и в dll

Но в вызове LoadLibraryA кроме имени DLL'ки никаких переменных нет.
DLL'ка правильно находится в путях, но hLib упорно возвращает = 0.

И я что-то не пойму, где я тут затупил... :(


PS. Походу въехал... старая DLL'ка же аттачилась совсем к другому процессу... :wink:
Code:
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
   if(reason==DLL_PROCESS_ATTACH) //---- Проецируем .dll на адр. простр-во ----
   {
     //--- узнаем хэндлер своего стартового окна ---
       hMyWin=FindWindow("HookWndClass","EWBHook");
      hEWBWin=FindWindow("ewb5","Electronics Workbench Professional Edition");
   if(hEWBWin==0) //--- узнаем хэндлер окна WEWB32, если оно есть...
      PostMessage(hMyWin, WM_DESTROY, NULL, NULL); //--- иначе выходим...----
   }
   return 1;
}

Надо подправить... 8)

_________________
iLavr


20 Feb 2015 09:27
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Вот что в Венде порой напрягает - так некоторая непонятная неодинаковость
в подходах... :(

Вот без особых трудов захватываю я текст child-окна RAM типа Reach-Edit: по
найденному идентификатору окна использую сообщениe WM_GETTEXT - и всё
возвращается в моей строковой переменной.

Image

Решил я и потактовое время исполнения команд InClock ухватывать,
чтoбы имитировать внешнюю тактовую частоту на вывод порта.

Хорошо... находим идентификатор StatusBar, узнаем сколько у него
полей через SB_GETPARTS, узнаем размер текстового буфера для
нужного поля через SB_GETTEXTLENGTH, и остаётся последнее -
прочитать содержимое поля в буфер через SB_GETTEXT. Всё довольно
аналогично ситуации с WM_GETTEXT.

А вот тут и - обломинго! :o
Quote:
Переменная, в которую мы хотим передать текст, и исходный текст
содержатся в разных адресных пространствах.


А я еще задумался - зачем в одном из вариантов DLL у меня выделяется
область памяти общая для всех процессов! Думал, что перемудрил... :wink:

Выходит, что если WM_GETTEXT, то моя переменная и текст типа в
"одном адресном пространстве", хотя процессы и разные! :o
А вот если SB_GETTEXT - то они сразу стали "в разных адресных
пространствах
"...

_________________
iLavr


23 Feb 2015 14:04
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 33 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.