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

Вниз

FindWindowEx   Найти похожие ветки 

 
Андрей Молчанов   (2005-08-01 16:58) [0]

Здравствуйте!

Мне нужно найти сначала приложение, а потом форму в нем.
Пишу:
 var
   wnd, appwnd: HWND;
begin
   appwnd := FindWindow("TApplication", PChar(Application.Title));
   if appwnd <> 0 then
     wnd := FindWindowEx(appwnd, 0, "TfrmMain", nil);


Само приложение он находит, а форму - нет. Или Приложение не является родителем формы? Но тогда как найти по имени класса форму в приложении?
Пожалуйста, помогите!


 
Игорь Шевченко ©   (2005-08-01 17:05) [1]


> Или Приложение не является родителем формы?


Не является.


 
GLFox ©   (2005-08-01 17:07) [2]

Вообще то, если посмотреть приложение хотя бы тем же Microsoft Spy++, то можнол заметить, что главная форма не является доченим окном TApplication. Так что стоит указывать предком 0 во втором случае.


 
Андрей Молчанов   (2005-08-01 17:15) [3]

А как тогда быть? То есть надо найти форму в определенном приложении. А то "TfrmMain" много где бывает.


 
Игорь Шевченко ©   (2005-08-01 17:16) [4]

Андрей Молчанов   (01.08.05 17:15) [3]


> А как тогда быть?


Сделать форму с именем "TfrmMySuperMain", например


 
GLFox ©   (2005-08-01 17:22) [5]

Если лень перименовывать TfrmMain можно проверить на наличие какого нибудь специфичного дочернего класса у него, например TMyUniqueLabel1, а лучше Caption...
Но, конечно, проще как сказал Игорь Шевченко © (01.08.05 17:16) [4]


 
Андрей Молчанов   (2005-08-01 17:26) [6]


> Сделать форму с именем "TfrmMySuperMain", например

Раньше я так и делал. Теперь понадобилось создавать несколько приложений из одного проекта. То есть сначала скомпилировать с {DEFINE OriginalVersion}, а потом без. Но чтобы отлавливались в одном приложении одна форма, а в другом другая. Это нужно, чтобы при запуске второго экзэмпляра приложения, переслать сообщение в первый.

Может есть какие-нибудь функции вроде GetApplicationForm?


 
BiN ©   (2005-08-01 17:33) [7]

http://delphimaster.net/view/4-1121182970/


 
Андрей Молчанов   (2005-08-01 17:45) [8]

Ага, вот только про мой случай [6] там нет :(


 
Игорь Шевченко ©   (2005-08-01 17:50) [9]


> Теперь понадобилось создавать несколько приложений из одного
> проекта.


> Это нужно, чтобы при запуске второго экзэмпляра приложения,
> переслать сообщение в первый


Сам себе злобный буратино. Почему бы не искать по Application.MainForm.ClassName ?


 
Андрей Молчанов   (2005-08-01 18:08) [10]


> Сам себе злобный буратино. Почему бы не искать по Application.MainForm.ClassName?

Потому что
1. Нужная мне форма не всегда главная.
2. Менять класс в зависимости от DEFINE не хочется.

Вообще, по-моему, я плохо объяснил, что хочется:
Надо, чтобы в зависимости от DEFINE создавались 2 одинаковых проекта, но каждый при повторном запуске пересылал командную строку в СВОЮ прежнюю копию.


 
Андрей Молчанов   (2005-08-01 19:06) [11]

Ну пожалуйста, помогите!
Цель - по существующему Title приложения и имени класса формы, найти хэндл этой формы в этом приложении.


 
Андрей Молчанов   (2005-08-01 22:48) [12]

Решение найдено. Спасибо всем принимавшим участие в дискуссии.



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
14-1125343961
DillerXX
2005-08-29 23:32
2005.09.25
MP3-Player


14-1124830002
ronyn
2005-08-24 00:46
2005.09.25
Объявление в газете "Требуется программист delphi"....


14-1125301123
Ермак
2005-08-29 11:38
2005.09.25
Линия в 500 м


2-1124031074
TStas
2005-08-14 18:51
2005.09.25
Как зарегистрировать расширение?


14-1125419302
Иксик
2005-08-30 20:28
2005.09.25
Золотой фонд советского кино





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский