Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

не определяется хендл дочернего окна   Найти похожие ветки 

 
alex732   (2004-08-31 10:26) [0]

Добрый день, Мастера! Такая задача: Есть приложение Progs  форма ProgsWindow которго содержит TMemo - Memo1... необходимо в это мемо передать из другого приложения некий текст - к примеру "TEST" и показать эту форму... Я делаю следующим образом:

 PHandle := FindWindow(nil, "ProgWindow");// нахожу хендл окна по названию
 if PHandle <> 0 then
    begin
      CHandle := FindWindowEx(PHandle, 0, nil, "Memo1"); //пытаюсь найти хендл дочернего окна
      SetWindowText(CHandle, PChar("TEST"));
      ShowWindow(PHandle,SW_SHOWNORMAL);
    end;

Но не определяется CHandle... Он остается = 0... Почему? Расскажите ПЛИЗЗ!


 
inic ©   (2004-08-31 10:37) [1]

Должен заранее сказать, что не уверен в ответе.
Вроде как Memo1 - это имя компонента, не более того (не имя окна в WinAPI понятии). А вот класс - TMemo, может по нему искать.


 
alex732   (2004-08-31 10:48) [2]

> inic
Похоже что так оно и есть... Попробовал поискать по классу - хендл определился...  Тогда конкретизирую : на этой форме не одно, а два Мемо - Memo1 и Memo2...  Как тогда мне послать текст в нужное мне - Memo1?


 
inic ©   (2004-08-31 11:15) [3]

Судя по всему, по ID тоже искать бесполезно, ибо при каждом запуске он изменяется, тогда могу подсказать немного дурацкий способ - брать координаты всех мемо и искать например самый верхний или какой нужен.


 
Игорь Шевченко ©   (2004-08-31 11:55) [4]


> Судя по всему, по ID тоже искать бесполезно, ибо при каждом
> запуске он изменяется


Точно ?


 
inic ©   (2004-08-31 13:12) [5]

Точно ?
Взглянул на сурсы, Нет...

Вот, что в Controls.pas: TWinControl.CreateWnd():


if (GetWindowLong(FHandle, GWL_STYLE) and WS_CHILD <> 0) and
 (GetWindowLong(FHandle, GWL_ID) = 0) then
    SetWindowLong(FHandle, GWL_ID, FHandle);

Из этого следует, что если мы где-то не задали ID для нашего компонента (например, в конструкторе), то его ID будет равен его хендлу.

Конечно, если программа ProgsWindow - принадлежит alex732, то он может ее переделать с указанием четких ID (боюсь придется сабклассить TMemo).


 
Игорь Шевченко ©   (2004-08-31 14:33) [6]

inic ©   (31.08.04 13:12) [5]


> Конечно, если программа ProgsWindow - принадлежит alex732,
> то он может ее переделать с указанием четких ID


Сомневаюсь, что это ему поможет, так как Handle ему и надо найти, а если ID ему равен, то что аргумент для поиска неизвестен. Я думаю, что если обе программы ЕГО, то можно предусмотреть сообщение, посылаемой главному окну чужой программы, результатом которого будет Handle нужного контрола :)


 
GuAV ©   (2004-08-31 15:00) [7]

А не можно ли рассчитывать на то что порядок в EnumChildWinows будет одинаковым?


 
Игорь Шевченко ©   (2004-08-31 15:10) [8]

GuAV ©   (31.08.04 15:00) [7]

Порядок в EnumChildWindows зависит от Z-order"а дочерних окон, так что если его никто не меняет от запуска к запуску, то порядок будет один и тот же. Но вроде, для связи двух своих программ можно и попроще метод придумать.


 
GuAV ©   (2004-08-31 15:35) [9]


> Порядок в EnumChildWindows зависит от Z-order"а дочерних
> окон, так что если его никто не меняет от запуска к запуску,
> то порядок будет один и тот же.

Тогда понятно. То, что Z-order в VCL сохраняется - это даже я вижу :)

> Но вроде, для связи двух своих программ можно и попроще
> метод придумать.

Здесь Ваше если :)
> если обе программы ЕГО


 
alex732   (2004-08-31 18:18) [10]

Все получилось! Спасибо всем, кто помогал!


 
GrayFace ©   (2004-08-31 18:21) [11]

Можно GWL_USERDATA менять.



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
6-1091728035
Лёва З.
2004-08-05 21:47
2004.10.10
Кодировка сообщений в TNMSMTP


14-1095765710
Layner
2004-09-21 15:21
2004.10.10
Прошу помочь по ценам на такую программу! (распределенный склад)


1-1096117436
Cherepovets
2004-09-25 17:03
2004.10.10
Проверка пути


1-1096253586
Paul-M
2004-09-27 06:53
2004.10.10
Подскажите плз. Вопрос по дочерним процессам и перенаправлению.


1-1096051032
ALex G
2004-09-24 22:37
2004.10.10
Загруска вордовских файлов через Олекантейнер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский