![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с 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]>Если не понятно я как нибудь перефразирую.
будь добр