Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Hello, World!
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 09:36 Geo
 
 
Во Флориде и в Королевстве сейчас  09:40[Войти] | [Зарегистрироваться]

Обсуждение материала
Эксплуатационные 'режимы' использования динамически компонуемых библиотек
Полный текст материала


Цитата или краткий комментарий:

«... В данной статье речь пойдёт, не о том как писать dll, а о том как их можно использовать. Регистрация dll в системе. Удаление программы 'во время исполнения'. Размещение модальных форм в dll. Ловушки в dll и так далее. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]562.5%
 
  Ничего особенно нового и интересного
[2]112.5%
 
  Написано неверно (обязательно укажите почему)
[3]225%
 
Всего проголосовали: 8

Оценка стиля изложения

  Все понятно, материал читается легко
[1]6100%
 
  Есть неясности в изложении
[2]00%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 6




Смотрите также материалы по темам:
[Использование и создание DLL]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 11

30-01-2003 09:44
Особенно мне нравится, как расписано про Grid-ы. С примерчиком и т.п. :)


22-12-2001 13:51
>> Алексей Павлов
Юрий Зотов упомянул в своём сообщении одного человека (думаю, что программиста) - Алексея Петрова, который на мой вопрос http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1008831628&n=0
прислал совершенно потрясающий пример правильной организации работы с MDI-child формами, расположенными в DLL, который можно скачать по адресу - http://www.ubb.adm.yar.ru/downloads/public/develop/delphi/mdi-BPL.zip

Думаю, что те разработчики, которые созрели до по-настоящему серьезной работы с DLL, обязательно должны ознакомиться с этим примером.

Полагаю, также, что есть созревшая необходимость обратиться к Алексею Петрову с просьбой стать на некоторое время главным редактором небольшого колллектива авторов и написать стьтью по данной проблематике, охватывающую все стороны работы с DLL.


21-12-2001 20:06
Справедливости ради должен сказать, что, даже прекрасно зная об изолированности адресных пространств процессов в Win32 и понимая особенности работы глобальных хуков, я до недавнего времени и сам наступал на те же самые грабли. То есть, строил глобальные хуки по той же самой схеме, которая приведена в статье. Объяснить это можно только моим недостаточно вдумчивым подходом к данному вопросу.

Ошибка эта неожиданно выяснилась в беседе с Алексеем Петровым (за что ему большое спасибо!). К сожалению, до этого я уже успел ответить на немалое количество писем с вопросами по глобальным хукам и в качестве примера приводил в ответах ту же самую ошибочную схему. Поэтому, пользуясь случаем, еще раз приношу извинения своим респондентам, которых я невольно ввел в заблуждение и привожу ссылку на пример правильно построенного глобального хука, который был написан мною в качестве некоей компенсации:

http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=992616736&n=2


21-12-2001 15:30
Юрий Зотов абсолютно прав.
Как программист более опытный, он указал мне на ошибку, которая действительно является достаточно типичной :(
За это большое ему спасибо.
Оправдываться не стану - виноват... будем исправляться.

>> ilysha: насчёт дочерних форм я честно написал - мне эта тема пока просто не интерестна и осветил я её в меру своей компетенции в данной области.
Я вовсе не претендую на всезнание, дело в том, что меня попросили написать на заданную тему, публиковать лично я её не собирался.
Если у вас есть какие-то вопросы, которые я не осветил, но на которые хотелось бы получить ответ - можете задать их по почте и в меру своих сил попробую вам помочь.
Так что прошу прощения у всех, кого ввёл в заблуждение своими примерами. Просто хотел поделиться опытом.

Спасибо всем за комментарии.


21-12-2001 09:56
То, что создал Алексей Павлов, в научном мире называет эклектикой, то есть сборником самых лучших идей. Но увы, в научном мире к таким работам относятся с подозрнием, так как есть сомнения - а автор сам насколько хорошо разбирается в данной проблематике.
Почему я так считаю? Автор, например, вообще не затрагивает такой сложный вопрос для разрабочиков - это размещение и управление дочерними окнами в DLL.

Мое мнение - статья не отвечает на большинство вопросов, задаваемых в различных форумах, в том числе и в DelphiKindom. Может быть рекомендована только исключительно новичкам.

Я прошу Алексея не обижаться на мое мнение, и признаю, что раздел 'Ловушки в dll.' очень интересен.


20-12-2001 18:46
> Несмотря на ошибки, полезная и нужная статья.

Полностью согласен. И от себя добавлю - очень хорошо написана.


20-12-2001 14:58
Несмотря на ошибки, полезная и нужная статья.
Остается пожелать автору тщательнее тестировать код.
А также желательно проверять работу под NT/2000. Или сообщать,
что for Win9x only - по объективным причинам, а не потому, что
не проверено.


20-12-2001 13:01
Заочно знаком с автором статьи по форумам и отношусь к нему с огромным уважением, но в данном случае должен сказать, что, к сожалению, в статье допущена неявная (а потому очень распространенная) ошибка. Изложенная методика работы с ловушками годится для локальных HOOK"ов, но совершенно не подходит для глобальных (о которых и идет речь в статье, судя по параметрам вызова SetWindowsHookEx).

Дело в том, что переменная SysHook получит правильное значение лишь в контексте того процесса, который вызвал SetWindowsHookEx. В остальных же она останется нулем и поэтому для них правильный вызов CallNextHookEx окажется невозможным. Таким образом, предыдущая ловушка (если она была) для всех процессов, кроме одного, оказывается фактически отключенной, что может привести к нежелательным последствиям.

Вывод - переменная SysHook должна находиться в области памяти, доступной ВСЕМ процессам. Скажем, в memory mapped file.


20-12-2001 12:35
Я думаю:
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process  
);


20-12-2001 11:58
> Дмитрий:
Вы совершенно правы насчёт того, что приложение может не успеть выгрузиться, но для этого там и стоит sleep ;)
Но предложенный мною способ всего лишь вариация на тему и ничего больше...
А что Вы подразумеваете под жёстким убитием ?


20-12-2001 08:18
Удаление программы 'во время исполнения'.
Пока удаляемый программа еще загружена, удалить ее будет невозможно.
Вы там вызываете Close, что приводит к выгрузке приложения.
Теперь следует погадать на кофейной гуще - успеет ли приложнение выгрузится ДО ТОГО, как rundll выполнит удаление?
Если приложение маленькое (во всяком случая, выгружается быстро),
вероятность этого близка к 1. Но, как правило, это не так.
Нормальный выход из Delphi на PII длится около минуты (у меня, при 128Mb - просто загруженный проект в него достаточно большой)
Предложенный метод хорош только для приложений типа 'калькулятор'.
Гораздо лучше использовать предварительное 'жесткое' убитие процесса (все равно файл будет удален, зачем позволять ему сохранять пользовательские данные?)


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Зимой — белый, летом — серый. Кто?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования