На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Страницы: (9) « Первая ... 6 7 [8] 9  все  ( Перейти к последнему сообщению )  
> Как создать API DLL из VB , Матрица прогнулась под нами
    В DLL можно использовать только модули (нет классов и форм, почему-то при их вызове прога вызвавшая функцию рушится).

    Возможности:
    ExpandedWrap disabled
      Экспорт функций по ординалу^
      Создание консольных приложений
      Минимальный размер программы 5 кб
      Автодобавление функций DllMain и Main (опционально)
      Создание *.map файла (опционально)
      Переключение языков (русский/английский)


    12.08.2004
    Добавилась возможность создания консольных приложений (пример есть в архиве)
    автор примера Lamerroot

    13.08.2004
    В опциях добавилась возможность уменьшать размер любого компилируемого объекта.
    Пустая экзешка теперь весит 5 кб!

    18.08.2004
    Приношу свои извинения. Но в последней версии Alex221(особоая благодарность за помощь) обнаружил серьезный баг не позволявший компилировать DLL-файлы.
    Ссылка на скачивание обновлена.

    Принимается помощь по переводам на различные языки.
    Языки хранятся в виде строк с раздилителями в ресурсах файла vb_dll.dll.

    Качать (Последнее обновление 2 декабря 2006г.):
    (предыдущее обновление 18 Августа 2004г.):
    Сообщение отредактировано: SCINER -

    Прикреплённый файлПрикреплённый файлvb_dll.rar (27.73 Кбайт, скачиваний: 3782)
      Из программы на PB пытаюсь запустить функцию из библиотеки.
      Но как известно генерируется ошибка.
      Интересно что выйдет если в библиотеке в процедуре DllMain при DLL_PROCESS_ATTACH считать структуру VBHeader и передать ее функции Call ThunRTMain(VBHeader)
        Цитата
        Интересно что выйдет если в библиотеке в процедуре DllMain при DLL_PROCESS_ATTACH считать структуру VBHeader и передать ее функции Call ThunRTMain(VBHeader)


        А каким образом отработает DLL_PROCESS_ATTACH если краш наступает на этапе инициализации VB DLL?
        msvbvm60 уже должна быть отображена на пространство процесса, делать это нужно из PB EXE файла, т.е. сначала загружаем msvbvm60 а потом уже VB DLL. Но тогда какой смысл во всем этом гемморое?
          SCINER, а пытался кто-нибудь поколдавать над полученной DLL'кой программой Fusion? Не уверен, что она сработает в случае с API DLL (тем паче такой необычной), но чем черт не шутит...
            Цитата Alex221 @
            Цитата
            Интересно что выйдет если в библиотеке в процедуре DllMain при DLL_PROCESS_ATTACH считать структуру VBHeader и передать ее функции Call ThunRTMain(VBHeader)


            А каким образом отработает DLL_PROCESS_ATTACH если краш наступает на этапе инициализации VB DLL?
            msvbvm60 уже должна быть отображена на пространство процесса, делать это нужно из PB EXE файла, т.е. сначала загружаем msvbvm60 а потом уже VB DLL. Но тогда какой смысл во всем этом гемморое?

            DLL_PROCESS_ATTACH наступает, даже дает кое-что сделать!
              Попробовал пример из архива - скомпилил dll.dll. Запустил Пример.vbp. При вызове функции из dll пишет cannot find entry point..
                Цитата dismalion @
                Попробовал пример из архива - скомпилил dll.dll. Запустил Пример.vbp. При вызове функции из dll пишет cannot find entry point..

                приаттачь скомпиленную библиотеку, ее исходники и исходники тестовой проги.
                  Исходники из архива vb_dll. В аттаче еще добавил скомпилированную библиотеку
                  Прикреплённый файлПрикреплённый файлdll.zip (5.18 Кбайт, скачиваний: 226)
                    Цитата SCINER @
                    Так ведь нет никаких глюков!
                    Просто жестко пропиши при компиляции путь к желаемой DLL'ке
                    например так: c:\my_dll.dll
                    и все будет OK!

                    Всем привет!
                    Уважаемый SCINNER, у меня вот проблемка по созданию DLL-ки с помощью твоего ADD-in'a!
                    Выше, ты писал, что при сохранении проекта, в файле самого проекта указывается путь
                    path32 "......................"

                    И что после изменения пути и расширения файла создается [имя файла].exe

                    А у меня после сохранения проекта файл проекта выглядит так:

                    Type=Exe
                    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\WINDOWS\system32\stdole2.tlb#OLE Automation
                    Reference=*\G{B4FED8FB-2E8D-4D06-A4F2-E999F73EFE6F}#1.0#0#..\..\..\..\..\zwQuery.dll#Project1
                    Form=frmMain.frm
                    Module=modHook; modHook.bas
                    IconForm="frmMain"
                    Startup="frmMain"
                    ExeName32="HideInProc.exe"
                    Command32="" <--------- ?????? Почему у вас там написано Path32, а у меня Command32 пустой????
                    Name="HideInProc"
                    HelpContextID="0"
                    CompatibleMode="0"
                    MajorVer=1
                    MinorVer=0
                    RevisionVer=0
                    AutoIncrementVer=0
                    ServerSupportFiles=0
                    VersionCompanyName="Home"
                    CompilationType=0
                    OptimizationType=0
                    FavorPentiumPro™=0
                    CodeViewDebugInfo=0
                    NoAliasing=0
                    BoundsCheck=0
                    OverflowCheck=0
                    FlPointCheck=0
                    FDIVCheck=0
                    UnroundedFP=0
                    StartMode=0
                    Unattended=0
                    Retained=0
                    ThreadPerObject=0
                    MaxNumberOfThreads=1

                    [MS Transaction Server]
                    AutoRefresh=1

                    HideInProc.vbd Создается при компиляции!!! Но DLL Нет!

                    Почему у вас там написано Path32, а у меня Command32 пустой???? :'( :'( :wub:
                    Мне очень нужно создать DLL ку!
                    Она для перехвата нужна!!!! Вся работа сейчас стопанулась!
                      Цитата Nazaroff @
                      Мне очень нужно создать DLL ку!
                      Она для перехвата нужна!!!! Вся работа сейчас стопанулась!

                      Nazaroff, Sciner тебе ответит, а пока можешь попробовать это как альтернативу для создания DLL на VB6.
                        Цитата Nazaroff @
                        Мне очень нужно создать DLL ку!
                        Она для перехвата нужна!!!! Вся работа сейчас стопанулась!


                        А для хуков совсем не обязательно, чтобы DLL была именно с АПИ, вполне пойдёт и ActiveX.dll и даже ActiveX.ocx :D

                        Смотри здесь:
                        хук на чистом бейсике
                          2 Nazaroff: Не смотри вообще в этот файл проекта.

                          Для успешной компиляции библиотеки тебе нужно сделать следующее:
                          1) Выбрать пункт меню File → Компиляция
                          2) Перейти в диалоге выбора имени файла в нужный каталог и в строке имени файла указать mydll.dll, т.е. принудительно выставить правильное расширение файла.
                            Цитата SCINER @
                            2 Nazaroff: Не смотри вообще в этот файл проекта.

                            Для успешной компиляции библиотеки тебе нужно сделать следующее:
                            1) Выбрать пункт меню File → Компиляция
                            2) Перейти в диалоге выбора имени файла в нужный каталог и в строке имени файла указать mydll.dll, т.е. принудительно выставить правильное расширение файла.

                            SCINER, сделал все, ка ты написал. По-обычному, путь лежит в Template\Projects
                            Смотри, меня к пример "C:\"
                            Имя файла там прописан как "****.EXE"
                            Меняю имя файла,как ты говорил, "****.dll"
                            Но ни файла "****.exe", "****.dll" нет на "C:\" !!!!!
                            Что же делать? :(

                            -Added
                            Цитата varzind @
                            Цитата Nazaroff @
                            Мне очень нужно создать DLL ку!
                            Она для перехвата нужна!!!! Вся работа сейчас стопанулась!

                            Nazaroff, Sciner тебе ответит, а пока можешь попробовать это как альтернативу для создания DLL на VB6.

                            Спасибо тебе)))

                            -Added
                            Цитата Артур @
                            Цитата Nazaroff @
                            Мне очень нужно создать DLL ку!
                            Она для перехвата нужна!!!! Вся работа сейчас стопанулась!


                            А для хуков совсем не обязательно, чтобы DLL была именно с АПИ, вполне пойдёт и ActiveX.dll и даже ActiveX.ocx :D

                            Смотри здесь:
                            хук на чистом бейсике

                            Я просто хочу, чтобы она как Windows'овская была, Чтобы закинул её в любое место на диске и она работала. Отдельно была от проЖекта. Поэтому и заинтересовался работой сей Add-in'a От SCINER'a :yes:
                              Цитата
                              Смотри, меня к пример "C:\"
                              Имя файла там прописан как "****.EXE"
                              Меняю имя файла,как ты говорил, "****.dll"

                              Я правильно понимаю, это ты проделываешь в диалоге выбора файла при компиляции проекта из меню Файл → Компиляция?

                              Компиляция — это пункт меню, который с иконкой. Его добавляет аддин.
                              Кстати не вылетают ли ошибки при компиляции?
                              Есть ли у тебя в проекте модуль с функциями, который добавляет аддин?
                              Тип проекта Standart Exe ?

                              Прицепи сюда проект, который не получается скомпилить.

                              У меня не возникало никогда проблем с компиляцией, ни на одной версии Windows.
                              Хотя я всегда юзаю сей аддин.
                                Цитата Nazaroff @
                                Я просто хочу, чтобы она как Windows'овская была, Чтобы закинул её в любое место на диске и она работала. Отдельно была от проЖекта. Поэтому и заинтересовался работой сей Add-in'a От SCINER'a


                                Вот в этом топике: http://bbs.vbstreets.ru/viewtopic.php?p=6708344#p6708344 лежит готовый пример хука на основе библиотеки Хакера. Думаю, что на основе библиотеки SCINER принцип хука будет приблизительно такой же. Там правда сам проект общается с длл, а раз тебе этого не надо и вся обработка будет прямо в библиотеке, то ещё проще :)

                                И посмотри ещё дискуссию в этой теме: http://bbs.vbstreets.ru/viewtopic.php?f=1&t=36237&start=0&st=0&sk=t&sd=a

                                И всё-таки: натив-библиотека и для твоей задачи совсем не обязательна. Единственное отличие - что ActiveX.dll нужно зарегистрировать - и будет она у тебя, точно так же, "отдельно от проЖекта" :)

                                А совсем уж отдельно от проЖекта вообще не получится - кто-то ведь должен ставить сам хук? Библа - хоть натив, хоть АктивХе - сама этого не сделает. Так что этот кто-то пусть и библу регит.
                                Сообщение отредактировано: Артур -
                                  Цитата SCINER @
                                  Я правильно понимаю, это ты проделываешь в диалоге выбора файла при компиляции проекта из меню Файл → Компиляция?

                                  Компиляция — это пункт меню, который с иконкой. Его добавляет аддин.
                                  Кстати не вылетают ли ошибки при компиляции?
                                  Есть ли у тебя в проекте модуль с функциями, который добавляет аддин?
                                  Тип проекта Standart Exe ?

                                  1)Да, именно в меню Файл---Компиляция(с иконкой)
                                  2)Никаких ошибок нет вообще

                                  Посмотри, я прикрепил архив с этим проэктом.Он маленький и простой, но суть в том, что он не компилется в длл

                                  Добавлено
                                  Артур, спасибо за ссылочки :)
                                  Прикреплённый файлПрикреплённый файлDLL.rar (1.79 Кбайт, скачиваний: 221)
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0684 ]   [ 18 queries used ]   [ Generated: 1.09.24, 00:10 GMT ]