Форум: "Основная";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];
Внизapp handle iz dll Найти похожие ветки
← →
mvb (2002-05-27 02:47) [0]Извините, если вопрос повторяется, я не увидел его в форуме. Как из dll получить handle гл.окна процесса ?
← →
Walker (2002-05-27 03:01) [1]можно разными способами...
например если известен заголовок окна - с помощью FindWindow
но по-моему лучше так:
в длл-ке создаётся функция, типа InitDLL(var wnd: HWND);
и при загрузке этой длл-ки из программы вызвать эту функцию, и передать handle окна в качестве параметра....
← →
mvb (2002-05-27 03:04) [2]да я так и делал раньше, пока число приложений не стало > 10 и число dll то же. Проблема - засунуть этот handle в application.handle dll, чтобы в taskbare не было доп.окон.
← →
mvb (2002-05-27 03:05) [3]PostQuitMessage ведь работает именно с гл.окном процесса. Вот и мне бы так же
← →
Walker (2002-05-27 03:22) [4]что-то не совсем понял в чём проблема.
гапиши подробнее (и кратко) что за программа и что за длл-ка. и зачем такое разделение
← →
mvb (2002-05-27 03:27) [5]раньше при загрузке dll вызывал экспортируемую ф-ю SetAppHandle и передавал в dll application.handle (гл.окно) приложения, а в dll присваивал полученный handle соответственно в application.handle. Модуль-то другой. И при засветке форм в dll не появляется доп.иконки в taskbar. Но приложений много, библиотек тоже. Хочется обойтись без написания экспортируемой ф-и в dll и без вызова ее из приложения. Короче, хочется определить гл.окно приложения чисто из dll.
← →
Walker (2002-05-27 04:40) [6]ну всё-равно длл-ка - это не самостоятельная программа, это набор функций... в длл-ке есть только часть инициализации.
если программ несколько а длл-ка должна выбрать какую-то одну - хм... придумай своё сообщение, некий код, например
const
WM_MYDLLASK = WM_USER + 1;
и далее твоя длл-ка будет искать все окна, у которых определённый заголовок (FindWindow, GetNextWindow, GetTopWindow - сам посмотришь что лучше)
найдя одно из "твоих" окон - посылает сообщение WM_MYDLLASK,
а твоя программа возращаят свой Application.Handle
таким образом длл-ка может хранить целый список твоих окон
← →
Walker (2002-05-27 05:01) [7]да, кстати.... функции типа FindWindow возвращают Handle найденного окна.
При запуска программы, можно (в .dpr файле) перед Application.Run или перед Application.Initialize поставить
Application.Title:="MyApp";
и тогда вообще всё просто:
FindWindow(nil, "MyApp") возвращает нужный Handle.
если же Title меняется в ходе выполнения программы,
тогда просто просмотреть ВСЕ окна, и каждому послать сообщение
(типа SendMessage(WM_MYDLLASK, ...)).
← →
mvb (2002-05-27 05:22) [8]это все правильно, но это вариации на тему: "exe-файл знает, что какие-то длл хотят получить H его гл.окна". Независимость модулей и пр. Т.е. я пишу кучу COM-серверов, которые м.б. загружены кем угодно (любой программист со своими программами как клиент).
← →
Walker (2002-05-27 05:48) [9]ну.... напиши в документации к своей длл-ке, что клиент должен использовать особую функцию инициализации.
а так - наврядли.
(Валкер просит прощения за свою непонятливость и надежду, что его мысли окажутся полезными.... короче за пустую трату времени)
← →
mvb (2002-05-27 05:51) [10]все равно спасибо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c