Author Topic: Как в Delphi оттрасировать DLLку?  (Read 5071 times)

0 Members and 1 Guest are viewing this topic.

Offline Shtafun

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Как в Delphi оттрасировать DLLку?
« on: April 23, 2006, 13:46:39 »
Это вообще возможно?

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Как в Delphi оттрасировать DLLку?
« Reply #1 on: April 23, 2006, 14:44:31 »
Quote
Это вообще возможно?
[snapback]9217[/snapback]
А что значит отрассировать? Если вы пишите DLL на Delphi, то для отладки нужно написать тестовое приложение которое использует Вашу DLL затем загрузить проект с кодом DLL в Run->Parameters указать в качестве Host Application тестовое приложение (естественно оно должно быть предварительно скомпилировано), а дальше как обычно -- ставьте точки останова и Run, запуститься тестовое приложение и как только произойдет вызов функции из DLL в которой указана точка останова, Вы перейдете в отладчик и можете выполнить трассировку выбранной функции.

Offline Shtafun

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Как в Delphi оттрасировать DLLку?
« Reply #2 on: April 23, 2006, 17:43:40 »
Так понятно, а если моя DLL открывается когда создается контекстное меню в Windows? Как это сделать?

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Как в Delphi оттрасировать DLLку?
« Reply #3 on: April 23, 2006, 20:01:15 »
Quote
Так понятно, а если моя DLL открывается когда создается контекстное меню в Windows? Как это сделать?
[snapback]9221[/snapback]
Ну так значит в качестве Host Application нужно указать explorer.exe.

Offline Shtafun

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Как в Delphi оттрасировать DLLку?
« Reply #4 on: April 23, 2006, 20:14:06 »
Quote
Ну так значит в качестве Host Application нужно указать explorer.exe.
[snapback]9222[/snapback]
Наверное ты мне не все рассказал!
Делаю все так как ты говоришь, начинаю трассировку, меня спрашивают: что сделать с файлом? Открыть Сохранить ... Как будто я файл с нета качаю!
« Last Edit: April 23, 2006, 20:14:54 by Shtafun »

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Как в Delphi оттрасировать DLLку?
« Reply #5 on: April 23, 2006, 20:40:08 »
Quote
Наверное ты мне не все рассказал!
Делаю все так как ты говоришь, начинаю трассировку, меня спрашивают: что сделать с файлом? Открыть Сохранить ... Как будто я файл с нета качаю!
[snapback]9223[/snapback]
Я ничего не понял.... с каким файлом, где зачем и почему.....
Я не телепат.

Еще раз для тех кто не понял.

1. Загружаем .dpr  (файл проекта) в Delphi
2. Открываем в пункте меню Run пункт Parameters
3. В строку Host Application вписываем C:\WINDOWS\explorer.exe
4. Строку Parameters оставляем пустой.
5. Видимо нужно зарегистрировать DLL как расширение для explorer.exe
Я на вскидку не помню как это делается. Смотрите в гугле и в MSDN.
6. Ставим точки останова внутри DLL
7. Далее делаем Run->Run.
8. начинаем процесс отладки.

PS. Я такие DLL -- расширения для эксплорера не отлаживал, возможно есть какие-то грабли. Но для других DLL этот метод работает 100%
« Last Edit: April 23, 2006, 20:48:55 by demiurg »

Offline Shtafun

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Как в Delphi оттрасировать DLLку?
« Reply #6 on: April 23, 2006, 20:48:54 »
Quote
Я ничего не понял.... с каким файлом, где зачем и почему.....
Я не телепат.
PS. Я такие DLL -- расширения для эксплорера не отлаживал, возможно есть какие-то грабли. Но для других DLL этот метод работает 100%
[snapback]9224[/snapback]
Да у меня тут проблемка такая, нужно добавить свой элемент в контекстное меню с bitmap ом -> нужно писать  COM сервер на DLL , а отлаживать DLL ки я не умею, элемент в меню появляется , а приложению, которое нужно открыть по щелчку на этом элементе, строка параметров не передается! Грабли вообще

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Как в Delphi оттрасировать DLLку?
« Reply #7 on: April 23, 2006, 20:52:03 »
Quote
Да у меня тут проблемка такая, нужно добавить свой элемент в контекстное меню с bitmap ом -> нужно писать  COM сервер на DLL , а отлаживать DLL ки я не умею, элемент в меню появляется , а приложению, которое нужно открыть по щелчку на этом элементе, строка параметров не передается! Грабли вообще
[snapback]9225[/snapback]
"COM сервер на DLL" это великое колдунство ;) .....
Если нужно встроить свой пункт в контекстное меню для запуска специального приложения для определенных типов файлов, то писать DLL не нужно. Достаточно изменить пару записей в реестре.

И если уж так сильно хочется написать, то нужно просто для начала по гуглить.
Вот например http://www.delphikingdom.com/asp/viewitem.asp?catalogid=620 нашлось буквально по первому же запросу Delphi+DLL+explorer
« Last Edit: April 23, 2006, 20:54:38 by demiurg »