Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
1-17913
andy_dn
2002-05-23 16:54
2002.06.06
Утечки памяти!


7-18163
VZV
2002-03-12 15:07
2002.06.06
как напрямую в порт ввода-вывода загнать байт?


6-18085
viol-2
2002-03-25 14:35
2002.06.06
WebBrowser


14-18155
Rammish
2002-05-02 20:33
2002.06.06
Какое у вас подключение?


1-18050
der
2002-05-25 12:35
2002.06.06
Работа с потоками. Требуется пошаговая объяснялка.





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