Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с DLL [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]


Эдуард ©   (2002-10-02 08:53:00) 

Есть моя DLL. В ней описано пара функций.
Надо узнать если при обращении к функции DLL была вызвана функция, которой не существует, то показать имя вызываемой функции и ее параметры. Если не понятно я как нибудь перефразирую.

Заранее спасибо.


Эдуард   (2002-10-02 12:25:00) [1]

Все на предыдущее сообщение забейте.

Всем большое спасибо за понимание и терпимость ко мне.


Юрий Зотов   (2002-10-02 12:24:00) [2]

> Эдуард

Сравним DLL с моей записной книжкой. Вызовы ее функций - это звонки по телефонам, которые в ней записаны. Я звоню человеку - он что-то делает.

Вы хотите, чтобы о моем звонке по постороннему телефону (не записанному в книжке) узнал кто-то из тех, кто в ней записан и что-то сделал. САМ узнал, без дополнительных оповещений.

Скажите, это возможно?

DLL - это набор функций. КАК одна из этих функций может САМА узнать, что Ваша программа что-то там попыталась сделать?

И DllMain здесь ни при чем. Это всего лишь код, который автоматически выполняется при загрузке и выгрузке DLL. Но не при вызовах ее функций (или при попытках их вызовов).


Эдуард   (2002-10-02 12:24:00) [3]

Понятно. Вот этого я незнал.

А вот в DLLMain есть типа DLLProc, в которой есть param1.
И если он(PAram1) равен DLL_THREAD_ATTACH, то неужели уже здесь DLL не щнает к какой функции идет обращение?


Digitman   (2002-10-02 12:18:00) [4]

>Эдуард

DLL (вернее - исп.код в ее составе) знать ничего не знает (и знать не может !) ни о каких ее "вызовах извне" до тех пор, кока вызывающий код не передаст явное и корректное управление по некоему адресу, который фигурирует в таблице экспорта этой DLL.


Эдуард   (2002-10-02 12:13:00) [5]

А как нибудь типа Application.ExeName и ParamStr()


Игорь Шевченко   (2002-10-02 12:08:00) [6]



> Вопрос в том, что мне надо чтоб DLL поняла что пытаюсь я
> вызвать функцию unknown и дала мне об этом знать.


Невозможно


Эдуард   (2002-10-02 12:06:00) [7]

Вы меня вообще извините за неграмотнось. Но все-таки может найдется добрый человек и поможет мне. Еще раз попробую изложить суть проблемы.

Есть моя DLL, в которой описаны две функции, которые могут вызываться например так rundll32.exe mydll.dll,showmessage.

Если здесь уже не понятно, то напишите.

Затем я обращаюсь к ней(DLL) таким образом rundll32.exe mydll.dll,unknown. Подразумевается, что функция unknown не описана в DLL.

Вопрос в том, что мне надо чтоб DLL поняла что пытаюсь я вызвать функцию unknown и дала мне об этом знать.

Надеюсь, что сейчас все понятно.


Игорь Шевченко   (2002-10-02 11:02:00) [8]

Эдуард (02.10.02 10:48)

Книги, оно все-таки надо читать, оно рулез есть. Тогда подобных фраз
> Но если нет такой функции, то DLL вернет значение 0, т.е.
> такой функции нет
просто не напишешь. Потому как вызов функции из DLL не имеет никакого отношения к DLLmain


Эдуард   (2002-10-02 10:48:00) [9]

И еще 2Polevi: Перед тем как сказать " можешь даже не пытаться написать что-ниюудь, рано тебе IMHO" лучше бы прочитал оба сообщения, и попытался понять что мне требуется. А если не можешь(не хочешь) помочь то какого лезешь? А обосрать каждый может IMHO.


Эдуард   (2002-10-02 10:46:00) [10]

Мля.. Я не имел ввиду в прямом смысле или точно. Я просто хочу донести суть. Имею ввиду что например rundll32.exe напишет "Несуществующая точка входа" если функуции вызываемой в DLL существовать не будет (или что-то вроде того). А мне надо чтоб моя DLL (о которых я совершенно не понимаю :)) обработала это сама и поняла что вызывается функция (например "disablekeypad") и сказала мне (например "Вызвана функция disablekeypad"). Блин теперь понятно????


Polevi   (2002-10-02 10:12:00) [11]

ты совершенно не понимаешь что есть DLL
>то DLL вернет значение 0
ты имеешь в виду GetProcAddress ??
книжку тебе надо почитать, а пока можешь даже не пытаться написать что-ниюудь, рано тебе IMHO


Эдуард   (2002-10-02 09:51:00) [12]

Короче.

Есть DLL моя, при обращении к ней из внешней программы естественно вызывается какая-то функция, предположительно описанная в этой DLL. Но если нет такой функции, то DLL вернет значение 0, т.е. такой функции нет. А мне надо в DLLMain узнать к какой функции обращалась программа(название функции, и желательно её параметры).


VAleksey   (2002-10-02 09:07:00) [13]

да уж перефразируй. И поподробнее задачу опиши.
Хотя ... вроде ясно. Просто код приведи в котором ты вызываешь функцию.


Polevi   (2002-10-02 09:00:00) [14]

>Если не понятно я как нибудь перефразирую.
будь добр


Наверх

Титульная страница Поиск, карта сайта Написать письмо