Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: невозможность посылки сообщения невидимому окну  (Прочитано 13914 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
marat_
Шеф-повар
Опытный

ru
Offline Offline

« : 04-04-2008 11:40 » 

здравствуйте, все!
столкнулся с такой проблемой:
есть два процесса на одной машине, первый - какая-то программа (может быть несколько) или dll, второй - с окошком, в котором выводятся данные (окошко может быть видимо или нет), сам ничего не делает просто отображает. первый процесс запускается, только если второй уже запущен (определяется findwindow). необходимо второй процесс информировать о событиях в первом, посылается сообщение copyanydata. осуществляется с помощью findwindow, находится хендл и с помощью sendmessage шлются туда данные. потом попросили окошко сделать сворачиваемым (или вообще скрыть с экрана, SW_HIDE), после этого метод перестал работать. окошко уже не находится, данные не посылаются.
пока ничего не нашел, решил у вас спросить, как можно и окошко свернуть и данные послать?



- А он, значит, и рыбку съесть и на пароходе покататься? У какой...
« Последнее редактирование: 04-04-2008 12:25 от marat_ » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 04-04-2008 12:13 » 

Без проблем должно окно находится... Может при сворачивании меняется заголовок? поиск по классу или по заголовку... запусти winsigth и посмотри что с окном происходит или поищи все окна через EnumWindows()(до и после сворачивания)
Записан

Удачного всем кодинга! -=x[PooH]x=-
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #2 : 04-04-2008 12:21 » 

и spy и winsigth его видят! а findwindow нет...

...
смотрю в сторону mapped файлов
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 04-04-2008 12:26 » 

Если хэндл окна есть (Destroy не вызывали), то всё должно работать. И находиться, и сообщения принимать.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #4 : 04-04-2008 12:31 » 

вот в том то и дело, что у первого процесса изначально хендла нет. он инициализируется, пытается найти окно с помощью findwindow, потом, если нашёл, работает.
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #5 : 04-04-2008 12:41 » 

вспомнил про каналы. именованные. может получиться.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 04-04-2008 13:12 » 

нифига не понял, если у второго есть окно, то в чём проблема?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
zubr
Гость
« Ответ #7 : 04-04-2008 21:30 » 

marat_ в обще то с FindWindow должно работать. Ну а как вариант, если оба приложения твои, можешь хендл передавать так:
1. SetProp(GetDesktopWindow, "qwerty", Handle); - вызывать эту функцию из приложения с окном. Только по закрытии приложения не забываем сделать RemoveProp
2. Handle=GetProp(GetDesktopWindow, "qwerty"); - получаем хендл из не оконного приложения.
З.Ы. Гораздо проще, чем заморачиваться с именованными каналами.
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #8 : 04-04-2008 23:37 » 

zubr, какой хитрый способ! мы там ничего не повредим, у рабочего стола?

Джон, сам не верил, пока не увидел. окно скрыто - нет ни на панели, ни в z-ордере, типа visible = false. в этом случае, хотя окно можно увидеть в различных перечислениях, findwindow возвращает null.
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #9 : 05-04-2008 02:13 » 

zubr, спасибо, помогло.

у меня какие-то косяки странные вылезают периодически, но на моей машине findwindow работает через раз: раз запустишь программу - определяет отлично, на другой - в упор не видит

убил систему, переустановить надо
Записан
zubr
Гость
« Ответ #10 : 05-04-2008 06:54 » 

marat_, а что может повредить. Мы добавляем, а затем удаляем свое свойство к рабочему столу. Главное чужое не трогать Улыбаюсь
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 05-04-2008 06:55 » 

zubr, я так понимаю, нужно создавать такое свойство, чтобы не совпало случайно с чужими Улыбаюсь Например, строчку GUID использовать Улыбаюсь
Записан
zubr
Гость
« Ответ #12 : 05-04-2008 06:58 » 

Вад,  ну естественно строка должна быть уникальна, "qwerty" - это для примера (6 верхних букв клавиатуры)
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 05-04-2008 07:07 » 

zubr, ну, я-то об этом знаю, просто вдруг кто-нибудь поиском выйдет на тему - и не догадается позаботиться об уникальности Улыбаюсь
Записан
zubr
Гость
« Ответ #14 : 05-04-2008 07:29 » new

Вад,  может ты и прав Улыбаюсь . Я как-то эти нюансы упускаю. Считаю, что для разумного человека и так это понятно (так же к примеру, как надо освобождать память, при не надобности в случае динамического выделения).
Записан
marat_
Шеф-повар
Опытный

ru
Offline Offline

« Ответ #15 : 05-04-2008 10:36 » 

вот я, например, про уникальность сразу понял
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines