Форум: "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