Говорила мне мама – сынок, проверяй результат каждой вызванной функции!
?? ???? ? ????????? ??? ?????????? ????????? Punto Switcher ????? ????, ??? ?? ????? ???????? ??????? ? ?????? ??????, ??????????? ? Vista. ???? ???????, ??? ? ??? ????? ????????????, - ? ?????? ???????????? Punto Switcher, ??????? ? ??? ?????-?? ?????, ? ????? ??????. ?????? ??????, ? ? ??? ?? ????? ???????, ?????? ?? ? ???? ?? ???????????. ?????? ??????? ???????? ?????????. ?????-?? ????????? ???????????????? ? ???? ???????. ???? ???, ? ????????? ??? ??????? ???? ? ???, ??? ?? ?? ???????????? 64-? ?????? ?????? Windows.
?? ??? ???????. ???????? ????????? ????? ????? ????? ??, ??? ?????? ????? ????????? Punto Switcher ? ???????, ??? Notepad2 ????? ???????? ? ??????????? ?????. ???????? ????? ?????????? ??????? ? ???????????? Punto Switcher. ???? ????????? ?????? ???????? ??? ???:
correct.dll – ??? ??? DLL ??????? Punto Switcher ???????? ? ?????? ??????? ??? ????????? ????????????? ?????. ?????????? ???????? ?? ??? ???????: «?????? Punto Switcher ??????????? ?????? Notepad2?»? «??? ?????? ?????? Notepad2, ??? ?????? Punto Switcher?»
??????????? ? ????, ??????????, ??? correct.dll ?? ?????? ???????? ????? ??????? GetMenuItemInfo, ?????? ??? ?????????? ????? ???????? ???? ?? ???????. ?.?. ??????, ??? correct.dll ?????????? ??? ???????? ????.
?? ?????? ???????? ??????? ????? (?? ?? ????? ???????? ????, ?? ?? ebx) ??????????? ? ??????????, ???????, ?? ????, ?????? ???? ????????? ????? ????? ????????? ????. ?? ????? ???? ?????????? ????????? 0xffffffff (-1).
??? ??????????, ??????? ???????????? ????? ????????? ???? GetMenuItemCount ?????????? -1 ? ?????? ??????. ??????? ?????? ????????????? ? ?????????. GetMenuItemCount ??????????? ? ??????? “1401: Invalid menu handle.”
????????, ??????, ??????????? ? ???, ??? ????????? ???? ??? ?????, ??? ?? ?? ????, ??????????, ??? ??????????? Spy++, ? ??????? GetMenu, ???????????? ?????????, ?????? ??????????? ???????.
?? ????????? ????, ? ????????? ???????????, ??? ?? ?? ??? ? GetMenu ? GetMenuItemCount. ????? ??, ??????? ??, ?? ? ???? ?????????? ?????? ? ???????, ??? GetMenuItemCount ????????, ???? ??????? ?????????? ?? ??????????? WM_CREATE ???????? ???? Notepad2, ? ?????????? ??????, ???? ??????? ?? ?????. ?????????, ??? ????? ????? ???? ??? ?????????? ?????. ?????, ? ??????? ??? ??? ?????? ? ???? ? ?????????? WM_CREATE. ???? ??? ??????????? ????? CMenu ?? WTL. ?????? ????? ?????? ????????????, ??? ?? ??????? ?????????? ???? ?, ??????????????, ??????? ??? ? ????? ???????????. GetMenu, ???????????, ?? ???? ?????? ?? ????? ? ??-???????? ?????????? ?????? ??? ???????????? ?????????.
?????? ???? ??????? – ?????????? ????????? ?????? ????????? ???????. ??? ??? ???? ????? ?????? (Notepad2) ????? ????????? ??? ???? ??????????? (Punto Switcher). ??? ???????? ????? ? ??????, ???? ??? ?????? ???????? ? «??????????? ?????» - DLL, ?????????? ? ????? ???????, API ???????????? ??????? ? ??? ?????.
Cross-posted from blog.not-a-kernel-guy.com.