Перевожу программу с ассемблера (masm 6.14) на c++ (gcc-3.4.5 — Code::Blocks + MinGW).
Возникла проблема: hook, установленный в dll по WH_MOUSE, в варианте c++ работает только когда указатель мыши находится в пределах окна программы, устанавливающей его. Если ассемблерную dll подсунуть в основную c++-программу, то всё в порядке. Если c++-dll подсунуть в основную asm-программу — проблема.
Т.е., насколько я понимаю, проблема связана с тем как компилируется dll в gcc.
1. Чтобы dll нормально работала, приходится в с++-версии экспортировать функцию DllMain, чего в ассемблерном варианте нет (там вообще функция DllEntry).
2. Если сравнить информацию о dll, то, в частности, отличаются точки входа и Subsystem для ассемблерной — 0002h (Win32 GUI), а для сишной — 0003h (Win32 console)
Если использовать WH_MOUSE_LL, то работает как надо, но с задержками.
Т.е. вопрос, как я понимаю, сводится к тому — как правильно скомпилировать dll с ловушкой в gcc? Подскажите, пожалуйста, как это сделать.