Главная страница
    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.006 c
1-17976
ION T
2002-05-28 14:54
2002.06.06
Параметры register


4-18186
Blast
2002-04-04 12:46
2002.06.06
Окошко в TaskBarе


4-18195
Biorobot
2002-04-04 15:16
2002.06.06
Как в Win2k скрыть из списка прорцессов программу


3-17827
Archey
2002-05-12 20:31
2002.06.06
пошаговый поиск


1-17847
Yuraz
2002-05-23 15:50
2002.06.06
Вопрос по INI файлам, как записать и считать Memo1.Text





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