|
|
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Код Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. А WH_MOUSE_LL ставиться и робит без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 02:12:31 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9 Код: pascal 1. 2. EXE или DLL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 05:35:11 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
EXE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 06:02:58 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9EXE Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 06:20:16 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
В EXE нельзя создавать глобальные хуки, только под конкретную нить. Хуки на глобальные нити разрешены только в DLL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 12:07:18 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
X-CiteВ EXE нельзя создавать глобальные хуки, только под конкретную нить. Хуки на глобальные нити разрешены только в DLL Да, спасибо. Когда то читал про это, но на практике WH_MOUSE_LL встал в EXE, а он вроде тоже бы глобальный. Сейчас пишу в DLL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 12:09:59 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Так, попытался реализовать через длл Код EXE Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. DLL Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. При запуске EXE в МЕМО добавляется одна строка, хотя я никаких окон не открывали и дальше тишина. Где то накосячил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 13:19:18 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9, А зачем в CBTProc вызывать CallNextHookEx 2 раза ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 13:22:01 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
schiMiracle9, А зачем в CBTProc вызывать CallNextHookEx 2 раза ? Если оставить Код: pascal 1. 2. 3. 4. 5. То форма потом ни на что не реагирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 13:25:42 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
schiMiracle9, А зачем в CBTProc вызывать CallNextHookEx 2 раза ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. При таком варианте форма не зависает, но в МЕМО ничего не пишется, лишь один хендл при установке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 13:30:59 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 15:15:42 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9schiMiracle9, А зачем в CBTProc вызывать CallNextHookEx 2 раза ? Если оставить Код: pascal 1. 2. 3. 4. 5. То форма потом ни на что не реагирует. Это метод тыка теперь такой ? CallNextHookEx надо вызывать всегда, но один раз. "Calling CallNextHookEx is optional, but it is highly recommended; otherwise, other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call CallNextHookEx unless you absolutely need to prevent the notification from being seen by other applications." https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms644974(v=vs.85).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 15:28:48 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Все работает... Просто не все программы походу генерируют событие. Например Calc.exe почему то не генерирует вызов HCBT_CREATEWND Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 16:24:54 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
X-CiteВсе работает... Просто не все программы походу генерируют событие. Например Calc.exe почему то не генерирует вызов HCBT_CREATEWND Если это Windows 10 то, возможно, это потому что calc.exe там - это не нативное приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 16:26:05 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
alekcvpX-CiteВсе работает... Просто не все программы походу генерируют событие. Например Calc.exe почему то не генерирует вызов HCBT_CREATEWND Если это Windows 10 то, возможно, это потому что calc.exe там - это не нативное приложение. Windows 7 Можно поставить API Monitor и посмотреть вообще что вызывает... Походу все что работает через виртуальные машины, java .net это не отлавливается.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 16:32:54 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Я до этого ShellHookWindow тестил, там отлов новых окон отлично работает. И на этом всё. А, ну ещё FLASH тоже хорошо работает. Смена активного окна не работает. А отлов уничтожения окна работает, но там один и тот же хендл окна по 10 раз присылается. Вот решил потестить SetWindowsHookEx с WH_CBT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 16:56:22 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
schi "Это метод тыка теперь такой ?" В точку) Я до этого не практиковал установку хуков. Обычно беру код из интернета, тестирую, а потом разбираю. А тут в инете 100500 вариантов из статей и ни один не робит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 17:04:10 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Итак весь день. Использовал код X-Cite с поправкой на Код: pascal 1. При установке хука постоянно сразу какой то wnd кидается, хотя я никаких окон не открывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 17:25:57 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9, вот тебе рабочий код hook.dll Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Если вкратце, то: Код: pascal 1. 2. 3. не канает, т.к. хук вызывается в контексте разных процессов, а в dll глобальные переменные глобальны только в рамках одного процесса, т.е. при выхове CBTProc в других процессах MyHook = AppWnd = 0. Ну и не забывай, что если винда x64, приложение x86 ставит хуки только на такие же, и надо делать отдельно x86 хук и отдельно x64 хук. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 19:48:16 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
alekcvpне канает, т.к. хук вызывается в контексте разных процессов, а в dll глобальные переменные глобальны только в рамках одного процесса, т.е. при выхове CBTProc в других процессах MyHook = AppWnd = 0. Ну и не забывай, что если винда x64, приложение x86 ставит хуки только на такие же, и надо делать отдельно x86 хук и отдельно x64 хук. Кстати да... На моем скриншоте видно, что лог идет от приложения в которое внедрилась dll. Столбец AppName. Но это можно легко решить через SharedMemory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 20:55:17 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
alekcvp, Большое спасибо! "Ну и не забывай, что если винда x64, приложение x86 ставит хуки только на такие же, и надо делать отдельно x86 хук и отдельно x64 хук." Очень важная инфа на будущее, Только, на сколько я помню, x64 приложение работает с длл x64. Т.е. с одного приложения не получится сделать импорт функций из 2ух x86 и x64 длл. Потестил работу хука, он получается отлавливает все окна и главные и вложенные. В этом плане RegisterShellHookWindow мне больше подходит. И там пофиг на разрядность. Жаль что HSHELL_WINDOWACTIVATED молчит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 22:26:10 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9, Вы читали ее описание? автор[This function is not intended for general use. It may be altered or unavailable in subsequent versions of Windows.] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 22:33:07 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9Потестил работу хука, он получается отлавливает все окна и главные и вложенные. Это можно решить через те же API функции, например GetParent.. определить когда главное, а когда дочернее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 22:34:21 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
X-CiteMiracle9Потестил работу хука, он получается отлавливает все окна и главные и вложенные. Это можно решить через те же API функции, например GetParent.. определить когда главное, а когда дочернее. Или вместо WH_CBT использовать WH_SHELL. А по поводу [This function is not intended for general use. It may be altered or unavailable in subsequent versions of Windows.] Обидно, как для новичка была проста в использовании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 00:30:02 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
WH_SHELL тоже похоже не работает, надо искать в msdn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 01:49:04 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
alekcvp, при UnSetHook одно из приложений падает. Есть идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 02:28:00 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9alekcvp, при UnSetHook одно из приложений падает. Есть идеи? Код покажите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 03:22:10 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Код тот же самый (что предоставил alekcvp). Но фиг с ним с WH_CBT, очень хочется понять почему если заменить WH_CBT на WH_SHELL, то в EXE приходят коды только на его хендл. Я добавил ещё messagebeep(0); Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. И когда переключаешься между чужими окнами(идёт смена активного окна) бипы слышно, но в ЕХЕ ничего не приходит. И кстати, кому если понадобится, я нашёл для RegisterShellHookWindow недостающие значение WParam на активное окно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Это было не сложно) 4 поменялась на 32772 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 05:36:09 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9Код тот же самый (что предоставил alekcvp). Но фиг с ним с WH_CBT, очень хочется понять почему если заменить WH_CBT на WH_SHELL, то в EXE приходят коды только на его хендл. Я добавил ещё messagebeep(0); Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. И когда переключаешься между чужими окнами(идёт смена активного окна) бипы слышно, но в ЕХЕ ничего не приходит. И кстати, кому если понадобится, я нашёл для RegisterShellHookWindow недостающие значение WParam на активное окно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Это было не сложно) 4 поменялась на 32772 Вы msdn читаете? Во первых код который вам показали не совсем корректен. Хорошим тоном вызов CallNextHookEx должен быть всегда, даже когда вы обработали его, иначе следующие ловушки не получат управление. https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms644960(v=vs.85).aspx - тут подробный пример, изучив который, все вопросы отпадут. Посмотрите что у вас с SetProp и GetProp где-то неверно вы что-то кладете туда или вычитываете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2017, 12:49:21 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
X-CiteПосмотрите что у вас с SetProp и GetProp где-то неверно вы что-то кладете туда или вычитываете... Тут всё работает ОК. Проверял значение ID_HookHandle во время работы хука - всё сходится. код длл сейчас такой: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. Итак, при открытии, закрытии, активации 32битных приложений бипы слышно всегда, но сообщения в EXE приходят далеко не всегда, т.е. с одними прогами всё работает идеально, с другими нет. Даже при открытии прог делфи почему то слышно только бипы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 04:31:35 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9, Немного в сторону Код: pascal 1. 2. 3. 4. 5. Может наоборот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 05:19:07 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
X-CiteMiracle9, Немного в сторону Код: pascal 1. 2. 3. 4. 5. Может наоборот? Ага, чёт пропустил этот момент) Но проблема с этим связана не была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 05:33:40 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Так, в длл, после Код: pascal 1. добавил Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Запустил приложение, где бипы слышно, а в ЕXE сообщения не приходят вот что сохранилось в файл Код: pascal 1. 2. 3. 4. 5. 6. AppWnd верный и остальное всё есть. По сути получается проблема не в коде ДЛЛ? Может я где то в ЕХЕ накосячил? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 17:31:42 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Ну вообще, SetProp там был только как пример, чтобы не заморачиваться с чем-то более сложным. А так, надо иметь в виду, что: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633568(v=vs.85).aspx Before a window is destroyed (that is, before it returns from processing the WM_NCDESTROY message), an application must remove all entries it has added to the property list. The application must use the RemoveProp function to remove the entries. SetProp is subject to the restrictions of User Interface Privilege Isolation (UIPI). A process can only call this function on a window belonging to a process of lesser or equal integrity level. When UIPI blocks property changes, GetLastError will return 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 20:51:13 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Когда у меня dll подгружается в разные процессы, но мне надо засинхронить между всеми dll некоторые данные, то использую только Shared Memory ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 21:18:55 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Не думаю что проблема в SetProp. Как видно из последнего поста, все данные, перед отправкой сообщения, имеются. Сейчас ещё решил проверить так: 1. При установке хука записываю данные в файл. 2. И в функции ловушке открываю, считываю. Результат тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 21:39:05 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9, x86/x64 у приложения и хука совпадают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 21:42:46 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
alekcvpMiracle9, x86/x64 у приложения и хука совпадают? да, у меня Delphi 10.1 Berlin Starter стоит, там только x86 exe и dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 21:44:39 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
Miracle9alekcvpMiracle9, x86/x64 у приложения и хука совпадают? да, у меня Delphi 10.1 Berlin Starter стоит, там только x86 exe и dll А приложение, которое не ловится - тоже x86? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 22:38:19 |
|
||
|
Не устанавливается хук WH_CBT
|
|||
|---|---|---|---|
|
#18+
alekcvp, да, написанное на этой же делфи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 22:40:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041595]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
452ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 802ms |

| 0 / 0 |
