|
|
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Добрый вечер. Меня очень интересует вопрос работы с окнами Win32а точней: Нажатие кнопки на окне Перехват текста с окне Проставление галочек И возможно ли скрыть это окно и все эти действия выполнять в скрытом режиме Я так понял, что это можно выполнять через функцию PostMessage но кроме закрытия окна по ней ни чего не нашел. Помогите пожалуйста очень нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 21:03 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Посмотрел на это и несколько удивился. Что вы пишите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 10:22 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Н..да. Наводит на размышления. Melkiades плюс тебе за внимательность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 10:47 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
MelkiadesПосмотрел на это и несколько удивился. Что вы пишите? И чего здесь удивительного? AndreyMpН..да. Наводит на размышления. Melkiades плюс тебе за внимательность. На какие же размышления наводит ну ко поделитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 12:50 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Зачем тебе мои домыслы. Не привык я выкладывать непроверенную инфу. Каждый думает по своему. Лучше ответь Melkiades , и все всем станет ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:22 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
AndreyMpН..да. Наводит на размышления. Melkiades плюс тебе за внимательность. гыгы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 14:07 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
AndreyMpЗачем тебе мои домыслы. Не привык я выкладывать непроверенную инфу. Каждый думает по своему. Лучше ответь Melkiades , и все всем станет ясно. Если вам так интересно, в данный момент я пишу утилиту для автоматического заполнения базы данных через интерфейс окна оригинальной программы(базы) используя данные Excel. А почему не на прямую в файлы базы, да потому-то структура базы непонятная или зашифрованная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 14:44 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
можно использоваеть Automate, классная прога все готово, есть куча фишек, есть даже язык встроенный и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 14:55 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
По поводу нажатия кнопки. С помощью функции FindWindow ищем хендл окна. С помощью функции SendMessage отправляем команду на нажатие кнопки. Если хочешь нажимать кнопки меню, то тебе еще понадобятся функции GetMenu, GetSubMenu, GetMenuItemID. Пример. Запустим калькулятор и программно нажмем кнопки "9" и извлечение квадратного корня. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Извини, остальные вопросы лениво копать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:27 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
В принципе копаешь правельно, продолжай... пригодятся Код: plaintext 1. Ты только пойми принцип, остальное фигня... У каждого объекта есть идентификатор аля хендел. Вся твоя задача сводится к поиску нужного хендела (объекта) и отсылкой в него сообщений (Send/PostMessage), ну и полчения ответа ессно... авторНажатие кнопки на окне Находиш хендел(hWnd) нужной кнопки - и вперёд... Код: plaintext 1. 2. авторПерехват текста с окне а вот тут подумай, напрмер обычный лабел в бейсике, это никакой не текст, нету текста(объекта) на форме. Считает что лабел это как бы картинка прорисованная на форме, ну только вместо изображения там текст. Поэтому с этим могут быть проблемы. Есть в принципе другой тип лабелов, котрорый действительно является объектом - ну тогда как обычно, находиш хендел лабела, посылаешь ему WM_GETTEXT авторИ возможно ли скрыть это окно и все эти действия выполнять в скрытом режиме Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:28 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
2 Ashton Кнопку правельно нажимать через Post, иначе она может ненажаться, или нажаться и не отпустится.. лучше использовать потоковый буфер сообщений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:30 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
ой, извиняюсь! не то скопипестил! Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 00:08 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
А как правильно определить Hwnd кнопки. Я делаю вот так но не на всех кнопках работает, например не работает в стандартном окне сохранения документа на кнопке сохранить. ModDlgHWND = FindWindow(vbNullString, "Сохранение документа") btnOkHWND = FindWindowEx(ModDlgHWND, 0, "Button", "Сохранить") PostMessage btnOkHWND, BM_CLICK, 0, 0 И какие еще способы есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 05:29 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
В справке по сообщению BM_CLICK. BM_CLICK Message If the button is in a dialog box and the dialog box is not active, the BM_CLICK message might fail . To ensure success in this situation, call the SetActiveWindow function to activate the dialog box before sending the BM_CLICK message to the button. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 11:54 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Хочу добавить. Если определяется хендл, но не нажимается кнопка, тогда мое сообщение выше. Если не определяется хендл, то поробуй так записать "&Сохранить". Также, можешь попробовать оправить сообщение с использование функции GetDlgItem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 12:06 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Дашло наконецто про знак "&" забыл Код: plaintext Дошел до заполнения и чтения ячеек типа TextBox и ListBox и стопорнулся авторнаходиш хендел лабела, посылаешь ему WM_GETTEXT а какже здесь определить hwnd? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 12:31 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Да с лабелом врядли получится, я ж говорю, лабел это 95% случаем не объект. У него нет хендела. Ещё один вариант для нахождение хенделов - это перебирать нафиг все ))) API EnumChildWindow ... Ну а потом например по координатам, по цвету, запаху гы )) вынюхать нужный объект )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 00:47 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Я не про лабелы а про TextBox и ListBox или это аналогично? Мне тут еще подсказали что есть такая утилитка наводишь курсор на объект окна и тебе вся инфа об объекте в том числе и хендл но где взять не знаю, может кто слышел или знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 05:09 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Нашел я утилитку для определения hwnd, но не тут то было ведь это не постоянный идентификатор. Тогда вопрос для Ashton а что это за цифры и откуда 133, 103 (всмысли откудо получил)? Ashton hWnd = FindWindow(vbNullString, "Калькулятор") SendMessage hWnd, WM_COMMAND, 133, 0& SendMessage hWnd, WM_COMMAND, 103, 0& ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 07:41 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Вопрос закономерный. Я тоже сначала подумал, как же мне узнать ID кнопок приложения, которые впоследствии я могу использовать в качестве параметра функции SendMessage. На самом деле все просто. Рекурсивно прошелся по всем дочерним окнам главного окна (в моем примере, окно "Калькулятора"). Хендл определял так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Класс так: Код: plaintext Текст так: Код: plaintext ID так: Код: plaintext По поводу утилитки. Хорошая утилитка SPY+, входящая в состав Visual Studio. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 10:12 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Все понял. Нашел тут исходник для определения hwnd добавил GetDlgCtrlID для отображения ID и получил то что надо. Код: plaintext 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. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 20:43 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
А зная ID TextBox`а можно чере каюнибудь функцию получить Hwnd? Или только через перебор хендлов на совпадение c ID ? Это дя того чтоб в TextBox отправить текст. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 01:09 |
|
||
|
Работаем с окнами Win32
|
|||
|---|---|---|---|
|
#18+
Ghost_XА зная ID TextBox`а можно чере каюнибудь функцию получить Hwnd? Или только через перебор хендлов на совпадение c ID ? Это дя того чтоб в TextBox отправить текст. Код: plaintext Я хотел сказать нельзяли упростить эту констркци: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34497818&tid=2164114]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 452ms |

| 0 / 0 |
