Переписал 24 туториал ICZELION'а про хуки на FASM. Работает как должно только со своим окном. Когда мышь над чужими окнами postmessage уходит неизвестно куда. С masm'овской dll все отлично. Поправьте пожалуйста. Код dll: Код (Text): format PE GUI 4.0 DLL entry DllEntry include '%fasminc%\win32a.inc' include '%fasminc%\MACRO\IF.INC' WM_MOUSEHOOK equ WM_USER+6 struct MOUSEHOOKSTRUCT pt POINT hWnd dd ? wHitTestCode dd ? dwExtraInfo dd ? ends DLL_PROCESS_ATTACH equ 1 DLL_PROCESS_DETACH equ 0 section '.data' data readable writeable hInstance dd 0 hHook dd ? hWind dd ? virtual at edx pt POINT hwnd dd ? wHitTestCode dd ? dwExtraInfo dd ? end virtual section '.code' code readable executable proc DllEntry hInst , reason, reserved1 push [hInst] pop [hInstance] mov eax,TRUE ret endp proc MouseProc nCode,wParam,lParam invoke CallNextHookEx,[hHook],[nCode],[wParam],[lParam] mov edx,[lParam] invoke WindowFromPoint,[pt.x],[pt.y] invoke PostMessage,[hWind],WM_MOUSEHOOK,eax,0 ;invoke PostMessage,dword ptr ds:hWind,WM_MOUSEHOOK,eax,0 xor eax,eax ret endp proc InstallHook hwn push [hwn] pop [hWind] invoke SetWindowsHookEx,WH_MOUSE,MouseProc,[hInstance],0 mov [hHook],eax ret endp proc UninstallHook invoke UnhookWindowsHookEx,[hHook] ret endp section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\ user,'USER32.DLL' import kernel,\ GetLastError,'GetLastError',\ SetLastError,'SetLastError',\ FormatMessage,'FormatMessageA',\ LocalFree,'LocalFree' import user,\ MessageBox,'MessageBoxA',\ WindowFromPoint,'WindowFromPoint',\ CallNextHookEx,'CallNextHookEx',\ SetWindowsHookEx,'SetWindowsHookExA',\ UnhookWindowsHookEx,'UnhookWindowsHookEx',\ GetClassName,'GetClassNameA',\ wsprintf,'wsprintfA',\ PostMessage,'PostMessageA' section '.edata' export data readable export 'A.DLL',\ UninstallHook,'UninstallHook',\ InstallHook,'InstallHook',\ MouseProc,'MouseProc' section '.reloc' fixups data discardable
Вместо section '.data' data readable writeable должно быть section '.data' data readable writeable shareable Не внимательно читаем туторы, батенька =)))
Огромное спасибо. А насчет: Не внимательно читаем туторы, батенька =))) А где 24 туториале ICZELION'а на MASM'е "section '.data' data readable writeable shareable"? Если знаете где скачать их на fasme, уж скажите, сыночка =)))
Вот цитата из это тутора: Так что можно было догадаться что надо сказать фасму делать секцию разделяемой и посмотреть в фасм.пдф как это сделать
А не чувствуете разницы между "внимательно читаем" и "можно было догадаться ". Да,и вопрос мой в разделе "WASM.BEGINNERS". Да и прочитав :"Решение: вы должны пометить секцию данных как pазделяемую." Я бы не догадался пометить ее как shareable - общую. Но как бы там ни было Огромное спасибо. Вы уж извините, что так отреагировал на первое ваше замечание: "Не внимательно читаем туторы, батенька =)))"
Я разделяю мнение ID$, если человек был невнимателен (а еще если учитывать что бывают невнимательными даже профессионалы, можно это признать можно нет но это факт, так как и они люди) то не обязательно указывать ему что он был невнимателен тем более что вопрос действительно помещен в правильном разделе *бегиннерз*, он и так дал об этом знать - "ID$ Поправьте пожалуйста." Да он мог бы потратить еще неделю изучая все что поподет подруку про фасм и хуки, но в таком случае, намного проще поставить вопрос на форуме чем убить возможно даже 2 недели, ведь если это не так то зачем вообще существует форум?? Для тех кто искал ответ и не нашел его, он именно так сделал. Этож небыл очередной в сотый раз повторяющийся вопрос типа *как скомпилировать программу*..