Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
6-1117745402
Scorp123
2005-06-03 00:50
2005.09.25
WebBrowser и ccылки


4-1122611364
Galim
2005-07-29 08:29
2005.09.25
TComPortDriver


14-1125437940
KilkennyCat
2005-08-31 01:39
2005.09.25
31 августа. С Днем Рождения!


3-1123759223
Juice
2005-08-11 15:20
2005.09.25
Join с параметром ХП


14-1125054376
Ольга
2005-08-26 15:06
2005.09.25
Где найти просмоторщик XML-файлов





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