Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Здравствуйте . У меня возникла такая проблема: нужна разработать две программы , одна с которых получает перечень всех заголовков окон в системе и передаёт его второй программе. Не могу разобраться , как это сделать . Это как лучше реализовывать - через консоль и формы ? Прочитал о функции EnumWindows(), которая перечисляет все окна верхнего уровня на экране, передавая дескриптор каждого окна, в свою очередь, в определяемую программой функцию повторного вызова. Не могу понять , как получить список заголовок окон . На просторах интернета нашёл такой пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вроде понял , как он работает , но почему выводятся числа , а не названия окон ? как это исправить ? и что делать дальше , после того , как я узнал эти названия ? какую функцию использовать для передачи этих названий окон в другую программу? Помогите , пожалуйста . Заранее огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 14:33 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7Вроде понял , как он работает , но почему выводятся числа , а не названия окон ? Потому что handle окна это число. Заговолок окна можно получить послав ему сообщение WM_GETTEXT. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 14:38 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7но почему выводятся числа , а не названия окон ? как это исправить ? потому, что возвращаются хэндлы окон. http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520(v=vs.85).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 14:39 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, спасибо , я уже понял , почему числа выводятся , но как же сделать так , чтобы выводились названия окон? На счёт WM_GETTEXT - мне же не нужен отдельный заголовок , нужно , чтобы выводились все заголовки , в этом случает WM_GETTEXT наверное нельзя использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 14:54 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7На счёт WM_GETTEXT - мне же не нужен отдельный заголовок , нужно , чтобы выводились все заголовки "Все заголовки" это совокупность "отдельных заголовков", полученная один за другим. PS: Кстати, вместо WM_GETTEXT в ряде случаев можно использовать функцию GetWindowText(). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 14:57 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а вообще ж используется EnumWindows() ? Я вообще не могу сообразить , как это должно выглядеть - передача этих чисел в другую программу. Нужно делать 2 программы или как ? Какую функцию лучше использовать для передачи значений ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 15:05 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7Я вообще не могу сообразить , как это должно выглядеть - передача этих чисел в другую программу. Судя по формулировке задачи - первая программа получает заголовки(текст) и передаёт другой программе Сначала получите тексты, следующим шагом будет запуск второй программы (процесса) и передача ей текста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 15:11 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Прочитал про сообщение WM_COPYDATA для него нужно заполнить структуру COPYDATASTRUCT, в которой находится ссылка на передаваемые данные. Абсолютно не понимаю, как заполнить эту струтктуру , чтобы записать туда хендлы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 15:12 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, это нужно делать в win32 project ? допустип , я получил тексты ( пусть уже будут хотя бы числа "хендлы") , как это оформить в WinApi? с консолью то понятно , а вот чтобы в окне это всё было - не совсем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 15:15 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
У меня есть проект , который просто выводит пустое окно Как туда поместить этот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Не пойму , где и что должно распологаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 15:17 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7У меня есть проект , который просто выводит пустое окно в пустом окне создать listbox, далее - заполнить его, посылая ему сообщения LB_ADDSTRING ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 16:19 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, спасибо за подсказку Пока вот только до этого дошёл: Код: 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. Но вывести почему-то не получается , пишет , что :error C2440: 'initializing' : cannot convert from 'const char [2]' to 'LPTSTR' не знаю уже , что и делать пробовал и без 'LPTSTR' - тоже не получается Помогите , пожалуйста , с этой проблемой , не знаю, как быть дальше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 18:40 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, проблема кроется вот в этой строчке : Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 18:42 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7 Код: sql 1. Это должны быть массивы, а не просто указатели. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 18:46 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7 Код: plaintext 1. 2. 3. исправить грубые ошибки для начала здесь. потом дело дойдёт до создания и наполнения листбокса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 18:49 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил,массивы значит.. вот так что-ли : Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 19:00 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, уже лучше - но почему у массивов - размер 20, а функциям говорится, что 255? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 19:06 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, ну да,что-то я ступил) ну да , 255 там , как максимальное число символов теперь при запуске выводятся какие-то непонятные буквы в список , и через раз запускается ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 19:12 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, и как дальше этот список передать в другую программу ? это нужно отдельно создавать проект для другой проги , в которую буду передавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 19:24 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7и как дальше этот список передать в другую программу ? Сначала надо узнать как эта "другая программа" согласна его получать. Если она его никак не ждёт, то как ни пихай - толку не будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 19:38 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7теперь при запуске выводятся какие-то непонятные буквы в список программа юникодная, а какого то хрена используется SendMessageA не пиши явно суффикс A или W для символьного типа используй TCHAR (вместо явного выбора char или wchar_t) ещё мелкий бак в последнем параметре (LPARAM) а не (WPARAM) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2014, 19:45 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил,мне нужно именно через SendMessage да, я читал про WM_COPYDATA , но немного запутался с обработкой этого сообщения вот код программы- отправителя : Код: 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. вот код программы- получителя: Код: 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. в программе- получителе я запутался , как обрабатывать сообщение Код: plaintext 1. 2. 3. 4. 5. как заполнить список? Помогите, пожалуйста , я не знаю, что дальше нужно делать уже . Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:03 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, 1-е приложение ничего не выводит на экран, только заполняет перечень заголовков окон в памяти и передаёт его посредством WM_COPYDATA во второе приложение. 2-е приложение получивши сообщение WM_COPYDATA выделяет из него строки и выводит в листбокс ну возможно первое приложение должно запустить второе, дождаться появления у него окна и затем выполнить передачу данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:16 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил,ну хорошо , чтобы 1-е не выводило ничего - убрал WM_CREATE у меня проблема в другом , не пойму , правильно я передаю информацию, заполняю структуру Код: plaintext 1. 2. 3. 4. ругается на IpData вот это вроде правильно , находит программу- получателя Код: plaintext 1. я просто никогда с таким не сталкивался , сложновато как-то) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:40 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, как можно выделить строки во 2-ом приложении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:41 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, пробую вот так в 1-ом приложении передать в 2-е: Код: plaintext 1. 2. 3. 4. 5. но у меня ругается на IpData: 'IpData' : is not a member of 'tagCOPYDATASTRUCT' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:47 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7я просто никогда с таким не сталкивался , сложновато как-то) память нужно выделить, в неё и копировать строки p.IpData - сюда указатель на эту память и присваивать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:54 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, помогите , как выделить эту память под список? ничего не пойму получается , что p.IpData - указатель на место , куда записываются новые данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:05 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7получается , что p.IpData - указатель на место , куда записываются новые данные? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:14 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, как же выделить память под полученную информацию? нужно создать какой-то дополнительный список ? может в WM_COPYDATA нужно как-то написать : Код: plaintext 1. 2. но всё равно не пойму , что делать можете помочь, пожалуйста ? хоть немного , я уже в тупик зашёл с этой программой алгоритм вроде понял , но есть некие моменты , которые сложность вызывают(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:26 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропилвозможно первое приложение должно запустить второе, дождаться появления у него окна и затем выполнить передачу данных Осталось только понять почему второе приложение не в состоянии получить эти данные само, без посылки от первого... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:30 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, так я ж вроде посылаю данные от 1-ого : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. но и здесь ругается на Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:38 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7алгоритм вроде понял , но есть некие моменты , которые сложность вызывают(( Попробуй читать: http://msdn.microsoft.com/en-us/library/windows/desktop/ms649011(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms649009(v=vs.85).aspx Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:41 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7я ж вроде посылаю данные от 1-ого Вопрос в том - зачем ты это делаешь ? Второму приложению запрещено вызывать EnumWindows()?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:49 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, не понял, в смысле - зачем ? суть же в том , чтобы первое приложение обрабатывало функцию EnumWindows , а результат выводился во 2-ом приложении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:57 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7суть же в том , чтобы первое приложение обрабатывало функцию EnumWindows , а результат выводился во 2-ом приложении Что мешает второму приложению сделать всё самостоятельно? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 13:59 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, та задание просто такое , я б так не мучился) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:01 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7та задание просто такое Тогда читай вышеприведённые ссылки. И особенно внимательно часть про что, что "the data being passed must not contain pointers". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:23 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, у меня походу вообще что попало передаётся дескриптор списка, а не его данные как сделать , чтобы данные передавались ? что нужно вместо p.cbData=sizeof(ListBox1); писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:26 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7что нужно вместо p.cbData=sizeof(ListBox1); писать? Если нет требования передачи за одно сообщение, то лучше всего - тот самый буфер, куда данные заносятся при поиске окон. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:34 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, в смысле , при поиске окон? какой буфер? окно ж я так ищу: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:43 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7в смысле , при поиске окон? При вызове сабжа. Сабжа. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:50 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я туплю не понимаю, а каком буфере идёт речь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 14:57 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7Dimitry Sibiryakov, я туплю не понимаю, а каком буфере идёт речь речь о буфере в который помещается текст заголовка очередного окна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 23:40 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, Я вот пару дней думал над этой задачей и вроде что-то написал , но ListBox в получателе всё равно не хочет заполняться . Не знаю, что делать . Вот 1-я программа: Код: 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. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. Вот 2-я программа: Код: 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. Ошибок не выдаёт ничего , но и не хочет работать . 1-я программа 2-ю находит , но ListBox во второй не заполняется всё равно . Прошу Вас о помощи , так как в тупик зашёл уже . Ещё и то , что ошибок никаких не выдаёт смущает) Заранее спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:12 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, vector<TCHAR*> data; так не пойдёт, для передачи через WM_COPYDATA (да и любыми другими способами) нужен просто участок памяти, без всяких коллекций и т п. Просто выделенный через malloc, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 12:24 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
Изопропил, вот блин , всё неправильно значит ? а как его через тот malloc выделять то? Код: plaintext 1. 2. и как тогда в data положить str и WindowText? с вектором я вот так делал: Код: plaintext 1. 2. 3. 4. 5. а теперь как? Помогите , пожалуйста ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 13:13 |
|
||
|
Функция EnumWindows()
|
|||
|---|---|---|---|
|
#18+
NNN7, строковые функции смотри - wcsncat,wcscpy_s,wcsnlen_s и т д на размер буфера обрати внимание. чтоб было проще - пустые заголовки не копируй, а рассматривай на принимающем конце пустую строку как конец данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2014, 15:13 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019589]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 291ms |
| total: | 443ms |

| 0 / 0 |
