На главную Наши проекты:
Журнал   ·   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.
  
> Как создать 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 Кбайт, скачиваний: 3813)
      Цитата Vasya2000,7.08.04, 12:03
      А теоретические основы этого феномена нельзя ли прямо щас???

      Все гениальное просто:

      ExpandedWrap disabled
        0. перехватываем командную строку линкера
        1. чуток ее изменяем
        2. вызываем настоящий линкер
        Интересно что на это скажут ненавистники VB.
        Мы здесь на форуме доказали 3 вещи:
        1. Работа с графикой не медленная (VB-BALL)
        2. Можно пользоваться указателями ( Как сменить картинку на десктопе )
        3. самое главное: Можно создавать полноценные DLL (не ActiveX)

        Добавлено в :
        P.S. Даже самый дурацкий замысел можно воплотить мастерски

        Добавлено в :
        Могу сказать больше: наши DLL лучше сишных!
        Они даже работать с объектами позволяют:

        ExpandedWrap disabled
          Sub SetCaption(ByRef F As Form)
            F.Caption = "Hi from DLL"
            End Sub


        Данную функцию можно сделать внешней и она будет корректно работать!
        а декларировать ее надо так:

        ExpandedWrap disabled
          Private Declare Sub SetCaption Lib "DLL" (F As Form)
        Сообщение отредактировано: Vasya2000 -
          Нечего делать пока расскажу как я до всего этого дошел:

          Однажды при компиляции у меня вылетела ошибка связанная с link.exe
          по опыту я знаю, что файлы типа link.exe обычно компилируют проги и все такое.
          Увидев, что это досовский файл я запустил его в досе коммандой link.exe > c:\link.txt в надежде увидеть там какую нибудь инфу, а может даже ключики какие нибудь.
          Он показал кучу всяких ключиков.

          Цитата
          Microsoft ® Incremental Linker Version 6.00.8168
          Copyright © Microsoft Corp 1992-1998. All rights reserved.

          usage: LINK [options] [files] [@commandfile]

          options:

          /ALIGN:#
          /BASE:{address|@filename,key}
          /COMMENT:comment
          /DEBUG
          /DEBUGTYPE:{CV|COFF}
          /DEF:filename
          /DEFAULTLIB:library
          /DELAY:{NOBIND|UNLOAD}
          /DELAYLOAD:dll
          /DLL
          /DRIVER[:{UPONLY|WDM}]
          /ENTRY:symbol
          /EXETYPE:DYNAMIC
          /EXPORT:symbol
          /FIXED[:NO]
          /FORCE[:{MULTIPLE|UNRESOLVED}]
          /GPSIZE:#
          /HEAP:reserve[,commit]
          /IMPLIB:filename
          /INCLUDE:symbol
          /INCREMENTAL:{YES|NO}
          /LARGEADDRESSAWARE[:NO]
          /LIBPATH:dir
          /LINK50COMPAT
          /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4}
          /MAP[:filename]
          /MAPINFO:{EXPORTS|FIXUPS|LINES}
          /MERGE:from=to
          /NODEFAULTLIB[:library]
          /NOENTRY
          /NOLOGO
          /OPT:{ICF[,iterations]|NOICF|NOREF|NOWIN98|REF|WIN98}
          /ORDER:@filename
          /OUT:filename
          /PDB:{filename|NONE}
          /PDBTYPE:{CON[SOLIDATE]|SEPT[YPES]}
          /PROFILE
          /RELEASE
          /SECTION:name,[E][R][W][S][D][K][L][P][X]
          /STACK:reserve[,commit]
          /STUB:filename
          /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]
          /SWAPRUN:{CD|NET}
          /VERBOSE[:LIB]
          /VERSION:#[.#]
          /VXD
          /WARN[:warninglevel]
          /WINDOWSCE:{CONVERT|EMULATION}
          /WS:AGGRESSIVE


          Названия некоторых(/VXD /DLL /DRIVER /DEF) ключиков меня заинтриговали. Стало понятно, что линкер способен компилировать библиотеки и драйвера.

          Зашел на microsoft.com ввел link.exe в надежде хоть на что-то, по поиску набрел на ссылочку http://msdn.microsoft.com/library/default....erreference.asp.
          Там были описания этих же ключей, но поконкретней, чем мне вывалил сам link.exe.
          Не найдя больше ничего интересного пошел в яндекс набрал экспорт функций нашел чето-то по дельфям. Что мол для экспорта ф-ий нужен файл *.def в папке с прогой определенного содержания с именами ф-ий и т.п. Приводилось примерное его содержание.

          Я недолго думая накатал такой файл с именами экспортируемых функций.
          Запустил компиляцию и ... облом. Все по старому. Долго мучаясь я догадался заменить link.exe своим файлом и посмотреть какие ему шлются комманды.

          Изучив пойманную комманду я понял, что в коммандной строке нет ключиков /DLL и /DEF.
          Дальше я поступил так: Отловив командную строку я вставил в нее эти ключики вручную и попробовал вызвать настоящий линкер с измененной коммандной строкой. На этот раз вообще ничего не получилось...

          От знакомства с PowerBasic'ом я помню, что есть такая ф-я DLLMain и она должна быть в каждой DLL.
          Скопировав ее в мой компилируемый проект я опять попытался скомпилировать. Тогда я подумал, что возможно есть еще какой-то ключик. Долго мучаясь я увидел, что в коммандную строку попадает такая подстрока /ENTRY:__vbaS я недолго думая заменил ее на /ENTRY:DLLMain

          Проект скомпилировался нормально.
          И вдруг открывая DLL-ку с помощью Depends Viewer'a я с ужасом+криком+смехом(короче я неповерил своим глазам) но там заместо привычных глазу DllCanUnloadNow, DllGetClassObject, DllRegisterServer и DllUnregisterServer были прописаны мои функции RCP и SCINSoft.
          Я тут же дрожащими пальцами создал новый проект, задекларировал свои функции, запустил прогу и тут БАБАХ, и все заработало...

          В общем я до сих пор в шоке. Вот такая вот история с хорошим концом.
          Я здесь описал наверно только 1/10 часть всего, что я пережил создавая данный линкер.

          Я еще не написал, о том, что захотелось большего, а именно, чтобы через компилировать через IDe безгемора, ручной прописки функций. Пошарив по яндексу я был приятно удивлен, что VBIDE похож на офис, в нем можно делать такие-же макросы, ADD-In'ы и все такое. Искал пример. Нашел изучил. Написал свой. Все!

          Кстати там подно еще непонятых мною ключей.
          Так что впереди еще много открытий. Мы и драйвер когда нибудь на VB напишем.
          А пока я лишь разобрал ключики MAP и MAPINFO, они создают карту функций и всего такого в файле Project1.map
            Цитата Uhri,9.08.04, 16:22
            Sciner, ты конечно молодец, я тебе даже плюсик добавляю, но тем не менее, по сравнению с длл в С++ это далеко до совершенства. Формы там ворос третий, не идут можно и Апи как говорит Вася, но вопрос самый главный, как это все отлаживать пошагово...

            Цитата
            Отлаживать пошагово


            Поясни поконкретней
              Да, довольно интересное открытие. Правда, это скорее баг компилятора, чем пробуманная реализация. Дело в том, что данный процесс нарушает некоторые аспекты компоновки, поэтому библиотека будет работать не стабильно. В общем, меня эта находка заинтересовала, так что я провел некоторое более глубокое исследования процесса компиляции. На самом деле ликер может дать больше гораздо больше возможностей, чем просто ДЛЛ. Вот, к каким результатом я пришел:
              1. Приятно было узнать, что компилятор ВБ аналогичен компилятору ВЦ, причем он оба этих компилятора построены на едином стандарте и поддерживают одинаковые ключи, что несомненно является большим плюсом. Правда меня очень удивило, что наличие или отсутствие ключа /DEBUG нисколько не смущает ВБ, он всё равно добавляет в итоговый файл необходимую дебаговую информацию, а точнее ссылки на описания ошибок записанных в виртуальной машине, что только увеличивает размер файла.
              2. Изучение процессы компиляции помогло разобраться в устройстве самой программы, откомпилированной в ВБ. Все надежды на то, что ВБ всё-таки делает полноценные ЕХЕ-файлы, развеялись, как дым. Как оказалось, весь бинарный код имплиментируется в некоторую оболочку из Vba6.dll. Вернее сказать, что Vbaexe6.lib вместе с основными функциями экспортирует огромное кол-во кода - какие-то классы, типы данных и т. п. Фактически в экзешник добавляется целая оболочка, которая и является цельным кодом, весь код, который пишут программисты, является почти что инструкциями интерпретатора, т.е. компилируется в бинарный код частично. Я выяснил, что все переменные хранятся не в сегменте данных, как в обычных ЕХЕ, а в специальном списке, который, видимо, создается динамически в процессе работы программы (именно этот метод позволяет ВБ создавать новые переменные в процессе работы программы при отсутствии инструкции Option Explicit). С ресурсами я не разобрался, там какая-то сложная система, но они походу тоже грузятся динамически из отдельного сегмента. Вот неполный список того, что экспортируется в ЕХЕ.
              ExpandedWrap disabled
                _CIcos    _adj_fptan    _adj_fdiv_m64   _adj_fprem1  
                _adj_fdiv_m32   _adj_fdiv_m16i    _adj_fdivr_m16i    __vbaChkstk  
                _adj_fpatan   __vbaExceptHandler    _adj_fprem    _adj_fdivr_m64    
                __vbaFPException    _adj_fdiv_m32i    _adj_fdivr_m32i   _adj_fdivr_m32    
                _adj_fdiv_r _CIatan   _allmul

              Большинство ф-ий, такие как __adjust_fdiv, эспортируются полностью, вместе с кодом. Линкер использует ещё один объектный файл - natsupp.obj из Vbaexe6.lib. Кстати, компилятор ВБ, ну т.е. VB6.EXE, работает в режиме "автоматические заголовки компиляции", т.е. включает в obj-файл ссылки на все встречающиеся ф-ии. Но, что самое интересное, ВБ делает собственную таблицу превдонимов внутри кажного объектного файла.
              К примеру, CLng на самом деле называется _CIlog, а ф-ия Int имеет вид __vbaR8IntI2.
              У всех ф-ий есть характерный префикс _CI
              ExpandedWrap disabled
                _CIsin  _CIsqrt  _CItan  _CIexp ...

              что свидетельствует о принадледности ф-ий к некоторому интерфейсу, который без сомнения тоже экстпортируется в ЕХЕ. Представьте, как это замедляет работу приложения.
              3. Мне так же удалось выяснить, что именно делает возможным создание библиотек в ВБ. Это можно сказать ноухау от SCINERа. Всё дело в переопределении точки входа в ДЛЛ. Дело в том, что, как оказалось, точкой входа (т.е. ф-ей, которая вызывается при работе с ДЛЛ в памяти) ВБ назначает __vbaS, которая экспортируется из файла ИмяПроекта.OBJ. Она сначала вызывает ряд ф-ий: VB@TEXT, VB@BTXT, VB@ETXT, VB@BSS. Последняя, кстати, вероятно инициализирует классы, которые предоставляют интерфейсы позволяющие создать элементы управления. При обходе данной процедуры этого не происходит. Именно по этому попытка в полученных ДЛЛ использовать формы или другие компоненты приводят к краху виртуальной машины. Затем уже вызывается некая ф-ия _WinmainStartup, а затем - процедура Main.
              У меня раньше тоже получалось экспортировать ф-ии из библиотеки с помощью def-файла, но у меня не получалось грамотно откомпилировать файл, т.к. назначение входной точкой стандартной ф-ии ВБА делало невозможным любой экспорт, т.к. вносило изменения в бинарную таблицу.
              На официальном сайте майкрософт написано, что все ф-ии в ВБ не поддерживают стандарт вызова __stdcall. Однако, как оказалось, все объявленные в модуле ф-ии имеют формат __stdcall или WINAPI, т.е. потенциально могут вызываться как обычные АПИ.
              Переопределение точки входа позволило обойти данный процесс и каким-то образом это позволили выполнить экспорт ф-ий, сохранив функциональность библиотеки, т.к. вызов вспомогательных ф-ий осуществляется на уровне интерпретатора.
              Что касается точки входа, то всё равно, как соответствующая ф-ия будет называться. Её можно назвать просто Hello, надо только указать её имя в ключе /ENTRY, главное, чтобы она принимала 3 параметра:
              ExpandedWrap disabled
                Объявление в С:
                BOOL __stdcall DllMain(HINSTANCE hInst, DWORD Reason, LPVOID reserved)
                ВБ аналог:
                Function DllMain(hInst As Long, Reason As Long, reserved As Long) As Long
                где hInst - инстанция процесса, Reason - причина вызова ф-ии, reserved - зарезервированый параметр, который пока не используется.

              На самом деле она совсем не бесполезна. К примеру параметр Reason может принимать следующие значения:
              ExpandedWrap disabled
                DLL_PROCESS_ATTACH = 1 - библиотека загружается в адресное пространство процесса
                DLL_PROCESS_DETACH = 0 - библиотека выгружается из адресного пространства процесса

              Ф-ия возвращает True (или 1) в случает удачного выполнения, False (или 0) - в случае ошибки, тогда библиотека загружена не будет.
              Целесообразно добавить в эту ф-ию проверку параметра Reason. Если DLL_PROCESS_DETACH, тогда надо уничтожать все созданные объекты, т.к. ни один объект не будет находится в разделенном сегменте данных (ВБ этого не поддерживает), т.е. не может быть использован другим приложением.
              4. Как оказалось, не смотря ни на что, ВБ позволят таким "варварским" образом компилировать ActiveX и ActiveX DLL проекты. Причем, если говорить о последнем типе, то в нём естественно можно создавать классы для множественного использования, ну и так же экспортировать ф-ии. В итоге получается интересная библиотека, ф-ии из которой можно вызывать как АПИ, а так же импортировать из неё классы через Project->Reference, как из обычной ВБ-шной ДЛЛ. Это подобно тому, как работает msvbvm60.dll - она является СОМ-обектом, однако из неё можно вызывать ф-ии типа VarPtr, как из обычной АПИ-библиотеки. Однако тут открылся небольшой минус. Как я уже сказал, ВБ создает большое количество сегментов кода и данных в исполняемом файле:
              ExpandedWrap disabled
                Из мапфайла:
                 Start         Length     Name                   Class
                 0001:00000000 0000006cH .idata$5                CODE
                 0001:00000070 000004e0H .text                   CODE
                 0001:00000550 00000004H .text$0                 CODE
                 0001:00000560 00000030H .text$1                 CODE
                 0001:00000590 00000004H .text$2                 CODE
                 0001:00000594 00000014H .idata$2                CODE
                 0001:000005a8 00000014H .idata$3                CODE
                 0001:000005bc 0000006cH .idata$4                CODE
                 0001:00000628 00000178H .idata$6                CODE
                 0001:000007a0 00000044H .edata                  CODE
                 0002:00000000 00000004H .data                   DATA
                 0002:00000008 000002c4H .bss                    DATA тут видать компоненты хранятся
                 0003:00000000 00000148H .rsrc$01                DATA
                 0003:00000150 00000780H .rsrc$02                DATA

              и возможно ф-ии объявленные в модуле находятся не в том сегменте, где расположены все классы. Модуль экспортирующий ф-ии является отдельным типом в ДЛЛ, но он не имеет своего CLSID, т.к. "не попадает" в нужный сегмент, таким образом стандартная ф-ия удаления зарегистрированной информации из реестра DLLUnregisterServer не сможет удалить инфорацию об этом типе из реестра, т.е. придется лазить по разделу TypeLib и удалять всё руками.
              5. Лучше вообще не пользоваться в этой библиотеке такими ф-иями как New и CreateObject, т.к. создание любого объекта, размер данных которого превышает размер стека, т.е. 64 кб, приведет к краху приложения. Так же надо очень аккуратно проводить операции по копированию блоков памяти и выделению места в адресном пространстве процесса.
              6. Большой плюс. Теперь в ВБ можно более ли менее работать с потоками. Из-за обхода некоторых ф-ий оболочки, библиотека стала более безопасной для многопоточных задач.
              7. Так же несколько плюсов вытекает из доступных опций компиляции.
              К примеру
              Ещё одним интересным ключом является параметр /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]], он говорит виндам каким именно образом запускать исполняемый файл. Значение WINDOWS говорит линкеру, что это обычное виндовое приложение, WINDOWSCE значит, что апликуха будет работать под ЦЕ. Но большего внимания заслуживает значение CONSOLE, оно говорит, что прога должна запускаться в консоли. При запуске такого приложения, стандартный поток вывода переадресуется на консоль, т.е. GetStdHandle вернёт значение манипулятора консоли. Следовательно, на ВБ всё-таки можно делать консольные приложения.
              Но эта возможность пока только исследуется.


              2 SCINERL: Моё предложение - сделать аддин, который автоматически, без указания деффайла, пробегался по всем модулям и экспортирует все ф-ии, которые не private. Работать людям будет удобнее.
              Сообщение отредактировано: Lamerroot -
                Впечетляет.
                Спасибо за совет по аддину.
                Конкретней отвечу позже, когда разберу все прочитанное.
                Сообщение отредактировано: Vasya2000 -
                    Как говорится - кто ищет, тот всегда найдет.
                    Вообще-то этот пост надо было бы запихнуть в тему: "как создать консольное приложение на ВБ", но концепция, которую я собираюсь изложить, скорее относится к этой теме.
                    Как я уже говорил, опции линкера ВЦ предусматривали запуск приложения разными способами. Так вот, оказалось, что линкер ВБ в этом плане полностью аналогичен линкеру ВЦ, т.е. он позволяет делать ЕХЕ с различными опциями подсистемы. Всё это делает возможным написание консольных приложений и в ВБ, причем в этих приложениях можно использовать формы и любые другие компоненты.
                    Я приложил к посту наглядное пособие, а то вдруг кто-то не поверит.
                    Как оно устроено? Просто. Проект состоит из одного единственного модуля, содержащего следующий код:
                    ExpandedWrap disabled
                      Option Explicit
                       
                      Private Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long
                      Private Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, _
                          ByVal lpBuffer As String, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, _
                          lpReserved As Any) As Long
                      Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
                       
                      Private Const STD_OUTPUT_HANDLE = -11&
                       
                      Sub Main()
                          Dim hConsole As Long
                          Dim txt As String
                          Dim num_written As Long
                          'получаем манипулятор стандартного потока вывода
                          hConsole = GetStdHandle(STD_OUTPUT_HANDLE)
                          If hConsole = 0 Then MsgBox "Couldn't allocate STDOUT"
                       
                          txt = "********************************" & vbCrLf & _
                                "*  Concole application on VB!  *" & vbCrLf & _
                                "*     Created by Lamerroot.    *" & vbCrLf & _
                                "********************************" & vbCrLf
                          'работаем, как с обычной консолью, хотя можно было использовать WriteFile
                          WriteConsole hConsole, txt, Len(txt), num_written, vbNullString
                          'надо обязательно закрыть манипулятор при окончании работы
                          CloseHandle hConsole
                      End Sub

                    Я компиляю проект, а затем линкую объектные файлы следующим образом:
                    ExpandedWrap disabled
                      LINK путь\имя_проекта.OBJ путь\имя_модуля.OBJ путь\VBAEXE6.LIB /ENTRY:__vbaS /OUT:путь\Cons.exe /BASE:0x400000
                      /SUBSYSTEM:CONSOLE /VERSION:1.0 /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078

                    Параметр VERSION зависит от версии среды ВБ.
                    Получаю указанный файл Cons.exe. Ну, вот и всё. Все файлы, откомпилированные подобным способом, будут нормально работать с консолью.

                    ЗЫ: Кстати, изучения опций линкования показало, что, как и в ВЦ, в исполняемый файл вместе с VBAEXE6.LIB можно включать и другие либы. К примеру, включение в ЕХЕ-файл либы ole32.lib (ставится вместе с ВЦ, папка \Lib) избавит от необходимости включать в инсталляционный пакет файл таблицы автоматизации OLE (OLE Automation) stdole2.tlb. А, скажем, изменение базового адреса входа (/BASE) способно уменьшить размер исполняемого файла.
                    Сообщение отредактировано: Lamerroot -

                    Прикреплённый файлПрикреплённый файлCons.exe (16 Кбайт, скачиваний: 703)
                      Теперь встает вопрос, как удалить ресурсы из DLL.
                      Они размер раздувают. А пользы 0.

                      Добавлено в :
                      Цитата
                      надо модуль в рабочий ехе-проект вкомпиливать и проверять пошагово


                      Вот, что я на это могу ответить:
                      1. Когда ActiveX делаешь, разве не тоже самое, надо встраивать в приложение, чтобы проверить.
                      2. Модуль проверить легче, чем AtiveX.

                      Дальнейшие возражения не принимаются!
                        2 SCINER, Lamerrot и всем: у меня предложение, давайте напишем програмулину которая будет заменять компилятор ВБ. Т.е. при компиляции будет вызываться она и в окне установив нужные параметры линковки, тогда без напряга можно будет получать необходимый исполняемый файл или компонент.
                        Сообщение отредактировано: Uhri -
                          В первом посте обновление.
                          В меню появилась новая строка Make console exe
                          Авторство сохранено за Lamerroot.

                          Добавлено в :
                          Цитата Uhri @ 12.08.04, 07:55
                          2 SCINER, Lamerrot и всем: у меня предложение, давайте напишем програмулину которая будет заменять компилятор ВБ. Т.е. при компиляции будет вызываться она и в окне установив нужные параметры линковки, тогда без напряга можно будет получать необходимый исполняемый файл или компонент.

                          Дык уже все готово. ;)
                          Смотри в первом посте! :whistle:
                            Цитата
                            Теперь встает вопрос, как удалить ресурсы из DLL.
                            Они размер раздувают. А пользы 0.

                            Неправда, ресурсы из ДЛЛ (даже откомпилированой подобным образом) загрузить можно. Только надо пользоваться не встроенными ф-иями ВБ, а чистыми АПИ для работы с ресурсами.
                            Цитата
                            Вот, что я на это могу ответить:
                            1. Когда ActiveX делаешь, разве не тоже самое, надо встраивать в приложение, чтобы проверить.
                            2. Модуль проверить легче, чем AtiveX.

                            Всё правильно, Uhri загоняет. Не все же компоненты доступны в процессе создания проекта... И это нормально.
                            Цитата
                            2 SCINER, Lamerrot и всем: у меня предложение, давайте напишем програмулину которая будет заменять компилятор ВБ. Т.е. при компиляции будет вызываться она и в окне установив нужные параметры линковки, тогда без напряга можно будет получать необходимый исполняемый файл или компонент.

                            А чё ты сам не можешь написать? Я вот себе личную неаддиновскую аплику сделал, которая этим делом занимается. Там link заменять не надо, и мне просто с такой работать удобней. Ну сделай и ты себе прогу для компиляции на свой вкус.
                              Вот ответ на твой биг-пост:

                              Ты написал, что данная реализация ведет себя нестабильно, т.к. нарушает некоторые аспекты компоновки. Я так понял, что ты имел в виду про обход стандартной процедуры точки входа. Если так, то да. Но. Я решил проверить стабильность. Создал DLL в VB (с функцией работающей с потоками)и начал вызывать процедуру из других языков таких как VC, Delphi, PowerBasic, ну и из самого VB конечно. При данном тестировании небыло замечено ни одного признака нестабильности. Все отработало как часы.

                              1. Ключ /DEBUG не не действует по той причине, что эта самая отладоная инфа уже лежит в .obj файле, созданная компилятором.

                              2. Ты утверждаешь, что такие функции, как __adjust_fdiv или __vbaR8IntI2 экспортируются с кодом. Плюс к тому они еще в составе какого-то интерфейса и экспортируются в EXE. Попробуй загляни в msvbvm. Все сомнения насчет этого отпадут разом! Там фугкции именно так и называются. Неможет быть такого, чтобы он таскал за собой msvbvm да еще и в себя их копировал. В этом случае экзешник был бы похож на дельфийский.

                              3. Пишешь, что главная процедура небесполезная. Это частично так. По ним можно ориентироваться создавать или уничтожать классы. Ну какая может идти речь о классах в модулях. В этой функции только одно полезно. С помощью ние можно посмотреть кто тебя вызвал и решить позволять ему пользоваться твоими функциями или нет. Вот и вся прелесть.

                              4. Все верно. Кстати а может по этому мап файлу может вырезать ненужные блоки. Например блок и ресурсами о версии DLL.

                              5. Я очень неаккуратно работал с Copymemory с блоками по 60 мег. Ничего страшного не происходило. Все стабильно. Ресурсы не глючат(тестировал на Win9X, Win2000, WinXProHome). Да и вообще действуют все те же правила, что и в простой VB-пограмме.

                              6. С потоками теперь можно работать не более или менее а полноценно, т.к. DLL находится не в адресном пространстве вызвавшей ее программы.

                              7. Мне кажется вопрос исчеран. Ты написал пример, а я добавил меню в аддине.

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

                                Стандартная прога теперь весит где-то 7-8 кб.

                                Причем данный чекбокс действует и на простые экзешки и на activex и на консольные, в общем на все.

                                Сорри. Минимальный размер экзешек 5120 байт!!!, т.е. 6кб!

                                Насчет табов заметано!
                                Сообщение отредактировано: SCINER -
                                  Цитата
                                  Я решил проверить стабильность. Создал DLL в VB (с функцией работающей с потоками)и начал вызывать процедуру из других языков таких как VC, Delphi, PowerBasic, ну и из самого VB конечно. При данном тестировании не было замечено ни одного признака нестабильности. Все отработало как часы.

                                  Я как раз сказал, что с потоками библиотека работает нормально. Ты попробуй там СОМ-объекты посоздавать побольше. Приколешься.
                                  Цитата
                                  1. Ключ /DEBUG не действует по той причине, что эта самая отладочная инфа уже лежит в .obj файле, созданная компилятором.

                                  Я это и сказал.
                                  Цитата
                                  2. Ты утверждаешь, что такие функции, как __adjust_fdiv или __vbaR8IntI2 экспортируются с кодом. Плюс к тому они еще в составе какого-то интерфейса и экспортируются в EXE. Попробуй, загляни в msvbvm. Все сомнения насчет этого отпадут разом! Там фугкции именно так и называются. Не может быть такого, чтобы он таскал за собой msvbvm да еще и в себя их копировал. В этом случае экзешник был бы похож на дельфийский.

                                  Ну я же не говорил, что вот прямо полностью весь код всех ф-ий в ЕХЕ переноситься. Зато вот виртуальное объявление этих ф-ий как членов класса в ЕХЕ есть точно + какие-то ф-ии точно экспортируются полностью.
                                  Цитата
                                  3. Пишешь, что главная процедура небесполезная. Это частично так. По ним можно ориентироваться создавать или уничтожать классы. Ну какая может идти речь о классах в модулях. В этой функции только одно полезно. С помощью нее можно посмотреть кто тебя вызвал и решить позволять ему пользоваться твоими функциями или нет. Вот и вся прелесть.

                                  Ну, это совсем не мало.
                                  Цитата
                                  4. Все верно. Кстати, а может по этому мап файлу может вырезать ненужные блоки. Например, блок и ресурсами о версии DLL.

                                  Не я пробовал. Они находятся в другом сегменте данных. ВБ их не видит, как членов кода, т.е. откомпилировать проект будет невозможно. Мапфайл это чисто логи линковки. Ресурсы о версии можно удалить в последствии уже из готовой ДЛЛ стандартными АПИ или прикладной прогой, а так не знаю даже.
                                  Цитата
                                  5. Я очень неаккуратно работал с Copymemory с блоками по 60 мег. Ничего страшного не происходило. Все стабильно. Ресурсы не глючат (тестировал на Win9X, Win2000, WinXProHome). Да и вообще действуют все те же правила, что и в простой VB-пограмме.

                                  Причем тут CopyMemory? Я говорю про GlobalAlloc, VirtualAlloc, HeapAlloc и т.д.
                                  Цитата
                                  6. ... т.к. DLL находится не в адресном пространстве вызвавшей ее программы.

                                  Та конечно, а где она, по-твоему, тогда находится? Любая библиотека динамической компоновки загружается в адресное пространство процесса, который её вызвал (это на уровне ОС). Так что ты шутишь.
                                    to SCINER:

                                    К сожалению никак не могу заставить работать твой AddIn.
                                    DLL не компилируются, при запуске компиляции появляется
                                    месанджбокс "Bad file name or number". У меня на вижул студии
                                    стоит 6 сервис пак. Может из-за этого?
                                      Цитата SCINER @ 17.08.04, 09:21
                                      А как ты его устанавливал.
                                      Соблюдал ли все шаги описанные в ридми ?

                                      Стоит софт Visual Studio 6 SP6, Windows2000 build 5.00.2195 SP4.
                                      Addin устанавливал по инструкции, консольные программы компилируются
                                      нормально.При попытке копиляции тестового прожекта DLL.VBP появлялся
                                      месенджбокс "Bad file name or number". Деинсталлировал Addin,
                                      переустановил VS и SP6, заново установил Addin. Ура! Заработала.
                                      DLL наконец появилась. Компилирую Проверка.vbp, запускаю. Жму
                                      на кнопочку ADD появляется сообщение об ошибке:

                                      "Run-time error 453. Can`t find DLL entry point ADD in dll"

                                      Натравливаю на эту DLL "Stud_PE Analizator", он показывает
                                      девственно чистый раздел экспорта...

                                      "Number of exported Functions - 0"

                                      Абыдно понимаешь... Очень хочется нормальные DLL на VB писать..
                                      :(
                                        Это мой глюк, точно!

                                        Надо было так:
                                        VBInstance.ActiveVBProject.BuildFileName

                                        а я написал так:
                                        VBInstance.ActiveVBProject.Name

                                        В результате заместо c:\progman\vb\dll\mydll.vbd
                                        в линкер посылалось mydll.vbd

                                        разница очевидна :ph34r:

                                        Это только в последней версии, седня обновлю!
                                          SCINER:
                                          Цитата
                                          Я так понял, что ты имел в виду про обход стандартной процедуры точки входа. Если так, то да. Но. Я решил проверить стабильность. Создал DLL в VB (с функцией работающей с потоками)и начал вызывать процедуру из других языков таких как VC, Delphi, PowerBasic, ну и из самого VB конечно. При данном тестировании небыло замечено ни одного признака нестабильности. Все отработало как часы.
                                          Её и не должно было быть. Какая разница, как называется эта функция? VB её даже не экспортирует (да и зачем?).

                                          Цитата
                                          1. Ключ /DEBUG не не действует по той причине, что эта самая отладоная инфа уже лежит в .obj файле, созданная компилятором.
                                          Народ, вы что, думаете, что линкер просто "соединяет" obj-файлы и прописывает заголовок? Если отладочная инфа есть в obj'е, то это не значит, что она должна попасть в EXE-шник/DLL-ку. Линкер сам выбирает, что ему кидать в EXE-шник из obj'а, а что нет.

                                          Цитата
                                          В этой функции только одно полезно. С помощью ние можно посмотреть кто тебя вызвал и решить позволять ему пользоваться твоими функциями или нет. Вот и вся прелесть.
                                          А также удаление временных файлов, восстановление каких-то параметров, сохранение установок и т.д... в зависимоти от задач модуля :)

                                          Цитата
                                          Сорри. Минимальный размер экзешек 5120 байт!!!, т.е. 6кб!
                                          Гы! А если создать в VB обычный пустой проект, скомпилить и упаковать UPX'ом, то он тоже будет 5120 байт :D

                                          Lamerroot:
                                          Цитата
                                          5. Лучше вообще не пользоваться в этой библиотеке такими ф-иями как New и CreateObject, т.к. создание любого объекта, размер данных которого превышает размер стека, т.е. 64 кб, приведет к краху приложения. Так же надо очень аккуратно проводить операции по копированию блоков памяти и выделению места в адресном пространстве процесса.
                                          Может, я торможу, но что-то я не понял, причём тут стек? И причём тут 64kb, когда размер стека растягивается до метра?

                                          Цитата
                                          Та конечно, а где она, по-твоему, тогда находится? Любая библиотека динамической компоновки загружается в адресное пространство процесса, который её вызвал (это на уровне ОС). Так что ты шутишь.
                                          :yes:

                                          p.s. Кстати, ничего, что...
                                          1. При первом запуске после установки add-in'а VB выдал мне мессагу: "Method '~' of object '~' failed." ?
                                          2. Пункт "Компиляция" появился не сразу, а после того, как я нажал на "Make DLL"
                                          3. Frame "Настройки компиляции" (со всем содержимым) не... эээ... англифицируется :)
                                          4. При создании проекта выбрал "DLL", увидел функции DLLMain и Main (зачем, кстати, вторая?). Решил откомпилить, но нашёл только Make EXE. Подумал, вдруг так и надо. Откомпилил. Файл по-прежнему EXE. Заглянул внутрь. Файл не-DLL. Так, в чём прикол-то?
                                            Еще вопрос по консольным приложениям.
                                            К примеру, хочу я написать прогу типа FAR`а. С текстовым интерфейсом.
                                            Ну и мне нужно обрабатывать события в консоли. Нажатие клавишь, мышь и т.п.
                                            Как реализовать обработку событий в консольном окне?
                                            Вопрос довольно интересный...
                                              Цитата
                                              p.s. Кстати, ничего, что...
                                              1. При первом запуске после установки add-in'а VB выдал мне мессагу: "Method '~' of object '~' failed." ?
                                              2. Пункт "Компиляция" появился не сразу, а после того, как я нажал на "Make DLL"
                                              3. Frame "Настройки компиляции" (со всем содержимым) не... эээ... англифицируется
                                              4. При создании проекта выбрал "DLL", увидел функции DLLMain и Main (зачем, кстати, вторая?). Решил откомпилить, но нашёл только Make EXE. Подумал, вдруг так и надо. Откомпилил. Файл по-прежнему EXE. Заглянул внутрь. Файл не-DLL. Так, в чём прикол-то?


                                              Специально, форматнул винт, установил Win2000 и Win98 буду проверять!

                                              Добавлено в :
                                              Цитата Alex221 @ 18.08.04, 09:40
                                              Еще вопрос по консольным приложениям.
                                              К примеру, хочу я написать прогу типа FAR`а. С текстовым интерфейсом.
                                              Ну и мне нужно обрабатывать события в консоли. Нажатие клавишь, мышь и т.п.
                                              Как реализовать обработку событий в консольном окне?
                                              Вопрос довольно интересный...

                                              Цитата
                                              Еще вопрос по консольным приложениям.
                                              К примеру, хочу я написать прогу типа FAR`а. С текстовым интерфейсом.
                                              Ну и мне нужно обрабатывать события в консоли. Нажатие клавишь, мышь и т.п.
                                              Как реализовать обработку событий в консольном окне?
                                              Вопрос довольно интересный...


                                              Сам думай!

                                              Добавлено в :
                                              Все работает, не гони

                                              Добавлено в :
                                              Цитата Jin X @ 18.08.04, 09:29
                                              SCINER:
                                              Цитата
                                              Я так понял, что ты имел в виду про обход стандартной процедуры точки входа. Если так, то да. Но. Я решил проверить стабильность. Создал DLL в VB (с функцией работающей с потоками)и начал вызывать процедуру из других языков таких как VC, Delphi, PowerBasic, ну и из самого VB конечно. При данном тестировании небыло замечено ни одного признака нестабильности. Все отработало как часы.
                                              Её и не должно было быть. Какая разница, как называется эта функция? VB её даже не экспортирует (да и зачем?).

                                              Цитата
                                              1. Ключ /DEBUG не не действует по той причине, что эта самая отладоная инфа уже лежит в .obj файле, созданная компилятором.
                                              Народ, вы что, думаете, что линкер просто "соединяет" obj-файлы и прописывает заголовок? Если отладочная инфа есть в obj'е, то это не значит, что она должна попасть в EXE-шник/DLL-ку. Линкер сам выбирает, что ему кидать в EXE-шник из obj'а, а что нет.

                                              Цитата
                                              В этой функции только одно полезно. С помощью ние можно посмотреть кто тебя вызвал и решить позволять ему пользоваться твоими функциями или нет. Вот и вся прелесть.
                                              А также удаление временных файлов, восстановление каких-то параметров, сохранение установок и т.д... в зависимоти от задач модуля :)

                                              Цитата
                                              Сорри. Минимальный размер экзешек 5120 байт!!!, т.е. 6кб!
                                              Гы! А если создать в VB обычный пустой проект, скомпилить и упаковать UPX'ом, то он тоже будет 5120 байт :D

                                              Lamerroot:
                                              Цитата
                                              5. Лучше вообще не пользоваться в этой библиотеке такими ф-иями как New и CreateObject, т.к. создание любого объекта, размер данных которого превышает размер стека, т.е. 64 кб, приведет к краху приложения. Так же надо очень аккуратно проводить операции по копированию блоков памяти и выделению места в адресном пространстве процесса.
                                              Может, я торможу, но что-то я не понял, причём тут стек? И причём тут 64kb, когда размер стека растягивается до метра?

                                              Цитата
                                              Та конечно, а где она, по-твоему, тогда находится? Любая библиотека динамической компоновки загружается в адресное пространство процесса, который её вызвал (это на уровне ОС). Так что ты шутишь.
                                              :yes:

                                              p.s. Кстати, ничего, что...
                                              1. При первом запуске после установки add-in'а VB выдал мне мессагу: "Method '~' of object '~' failed." ?
                                              2. Пункт "Компиляция" появился не сразу, а после того, как я нажал на "Make DLL"
                                              3. Frame "Настройки компиляции" (со всем содержимым) не... эээ... англифицируется :)
                                              4. При создании проекта выбрал "DLL", увидел функции DLLMain и Main (зачем, кстати, вторая?). Решил откомпилить, но нашёл только Make EXE. Подумал, вдруг так и надо. Откомпилил. Файл по-прежнему EXE. Заглянул внутрь. Файл не-DLL. Так, в чём прикол-то?

                                              Все работает!
                                              скачай последнее обновление
                                                Я и не спорю, что работает (ты лучше повнимательнее почитай, что я написал, я там и не говорил, что не работает, просто есть замечания), но то, что я описал, я же не сам придумал.
                                                Видимо, я просто не понял, как создать DLL-ку.
                                                Запускаю VB, выбираю "DLL", открываю "modDLL"... ах вон что! Нужно через "компиляцию" компилить! А я-то думал, что стандартно :)

                                                Добавлено в :
                                                Неее, не всё так просто!
                                                Теперь так. Запускаем VB (делаю всё параллельно написанию этого текста), выбираем "DLL", затем "modDLL", создаём Sub xyz():MsgBox "hi!":End Sub. File/Компиляция... тьфу, блин, забыл сохраниться... File/Save..., File/Компиляция. Выбираю функцию xyz, жму OK. Указываю файл (по умолчанию DLL.exe, кстати). DLL-ка скомпилена! Ура! А теперь проверим её. Жмём просмотр, поиск, "xyz"... найден, что радует. Делаем прогу, вызывающую процедуру. Запускаем. Ошибка. Так, через OllyDBG, модуль загрузили, адрес процедуры получили, call eax (заходим внутрь). Идём, идём... ошибень! Ладно, может, я накосячил? Делаем на Delphi procedure...external.... Запускаем. Опять всё нормально. Ok, лезем в файл через hiew. F8, F2, смотрим "File is DLL: YES". Хм... почему ж не работает? Почему не работает?
                                                Чтоб не быть голословным, вот вам мой проект.
                                                Прикреплённый файлПрикреплённый файлproject1.zip (26.15 Кбайт, скачиваний: 282)
                                                  Вообще, надо бы, чтоб всё было чётко при "стандартной" компиляции, если это возможно.
                                                  А то когда делаешь File/Make DLL.dll, делается exe-шник, без экспортов и т.д.

                                                  p.s. Кстати, если в dll-ке (имеется в виду вообще в исходнике) нет экспортируемых функций (DLLMain не в счёт), то это не значит, что она не имеет право на существование! К тому же, для чего нужна функция main?
                                                    Спасибо насчет 2-х советов по улучшению аддина.
                                                    Однако я проверив твою DLL был в шоке!
                                                    Раньше-то все работало...вроде

                                                    Я в дельфях не спец, но написал динамический вызов (может неправильно):

                                                    ExpandedWrap disabled
                                                      uses
                                                        Windows, SysUtils;
                                                       
                                                      //procedure xyz; stdcall; external 'dll.dll';
                                                       
                                                      var
                                                       hDll:longint;
                                                       pProc:pointer;
                                                       
                                                      begin
                                                        //xyz
                                                       
                                                      hDll := LoadLibrary('dll');
                                                      pProc := GetProcAddress(hDll, 'xyz');
                                                      hDll := CallWindowProc(pProc,0,0,0,0);
                                                      FreeLibrary (hDll);
                                                       
                                                      end.


                                                    но и с помощью него вылетает таже ошибка, однако тот-же код на VB работает четко:

                                                    ExpandedWrap disabled
                                                      Dim hDll As Long, pProc As Long
                                                      hDll = LoadLibrary("dll")
                                                      pProc = GetProcAddress(hDll, "xyz")
                                                      pProc = CallWindowProc(pProc)
                                                      FreeLibrary hDll


                                                    Что-же это может быть? :wall: :wall: :wall:
                                                      ExpandedWrap disabled
                                                        uses
                                                          Windows, SysUtils;
                                                         
                                                        //procedure xyz; stdcall; external 'dll.dll';
                                                         
                                                        var
                                                         hDll:longint;
                                                         pProc:procedure; {stdcall}; может быть надо поставить
                                                         
                                                        begin
                                                          //xyz
                                                         
                                                        hDll := LoadLibrary('dll');
                                                        pProc := GetProcAddress(hDll, 'xyz');
                                                        pProc;
                                                        FreeLibrary (hDll);
                                                         
                                                        end.
                                                        И что это за код? Всё равно он не работает.
                                                        Видимо, дело в том, что процедура в DLL вызывает что-то. Если MsgBox убрать, то будет всё нормально. Это какие-то MS VB-шные штучки...
                                                          Вы вообще мои посты читали? Я там про точку вхождения кое-что писал.
                                                          Попробуйте сдеалть так: Переименовать ф-ию DLLMain, скажем, в Entry. Ну и откомпилять файл с ключом /ENTRY:Entry. Msgbox должен работать. Или можно, к примеру, воспользоваться API ф-ией MеssageBox. Она будет работать. А вообще в таких ДЛЛ нет никакой пользы т.к. процедура "Set obj = New Obj" приводит к немедленному краху ВБ. Лучше уже делать всё на старом добром ВЦ.
                                                            А лучше во всем разобраться и довести все до ума
                                                              Lamerroot, да, читали. И что с того? Почему при переименовании будет работать? Ты писал, что __vbaS вызывает разные функции, а затем Main, а если мы переопределяем точку входа, что будет вызываться только DLLMain или что-то ещё (которая уже ничего не вызывает... по идее в этом и должна быть проблема). Причём тут имя вообще?
                                                                Цитата
                                                                А лучше во всем разобраться и довести все до ума

                                                                Уж слишком это всё глючно работает, врядли это вообще до чего-нибудь можно довести.
                                                                Цитата
                                                                Причём тут имя вообще?

                                                                Просто попробуй...
                                                                  А объяснить никак?
                                                                  Может, тогда и появится мысль, как довести? :)
                                                                    Кого довести?
                                                                      Цитата
                                                                      Lamerroot, 22.08.04, 13:45
                                                                      Уж слишком это всё глючно работает, врядли это вообще до чего-нибудь можно довести.
                                                                        И у меня тоже, ничего так и не заработало.
                                                                        Косяк какойто
                                                                          Неговори. Ну хоть консольные апликухи прекрасно работают. :)
                                                                            А еще размер прог уменьшился и длл-ки хотябы для самого васика писать можно !
                                                                            Но я все равно стараюсь все по грамотному сделать!
                                                                              Да плевать на этот размер! Сколько вы там сэкономите? 10kb? В ущерб стабильности...
                                                                                Чуваки, слышал я, что Вы тут компайлер вместо ВБ писать хотели, кот. мусора всякого в екзешники не кидает, ну так как?
                                                                                  Хотел!Хочу!
                                                                                  А ты чем-то можешь помочь?
                                                                                    А чем нужно? Я неплохо програмлю на VB, учусь(сам!) на C++ и Асме...
                                                                                      При вызове DLL написанной на VB из программы написанной на другом языке прога рухнет.
                                                                                      Потому что VB требует загруженного msvbvm60. Как ее можно загрузить ?
                                                                                        LoadLibrary('msvbvm60.dll');
                                                                                          :blink: А вдруг поможет. Надо попробовать..
                                                                                            Начнем с того, что DLL'ки вообще не компайлятся :( :'( (консольные апликухи нормально(даже хорошо!), но вот... :wacko: ),а посему я не имел возможности протестить сие "чудо проироды" на др. языках :( . Но Andrey был прав - почаще смотри в API-вьювер:

                                                                                            сначала
                                                                                            Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

                                                                                            потом
                                                                                            LoadLibrary("msvbvm60.dll")

                                                                                            ***
                                                                                            Ну так как на счет компайлера???
                                                                                              Цитата
                                                                                              сначала
                                                                                              Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
                                                                                              - За кого меня принимаешь ? ;)

                                                                                              Почему ДЛЛ-ки не компиляться ?
                                                                                              Хоть что-то пишется, нет ???
                                                                                              :unsure:
                                                                                              Сообщение отредактировано: SCINER -
                                                                                                Ну не за лаймера-же!!! :tong:
                                                                                                ***
                                                                                                Насчет dll'ок - ничего не пишется, никаких сообщений и на диске ничего нет (хотябы отдаленно напоминающего DLL), хотя все ОК. Только не спрашивай правильно-ли я инсталировал аддин.
                                                                                                  Цитата
                                                                                                  хотябы отдаленно напоминающего DLL


                                                                                                  а файл [project_name].vbd создается ?
                                                                                                    Да, помоему... а он-то здесь причем??? Мне длл нужна!!!
                                                                                                      Это Def-файл. Есть или нет ????????
                                                                                                        VBD есть ... но ... мне dll нужна!!!
                                                                                                        ...
                                                                                                        Кстати, я конечно понимаю, что все программисты "очень скромны" но все и без
                                                                                                        Цитата
                                                                                                        ;*********************************************************************
                                                                                                        ; This is the .VBD file for the Microsoft Visual Basic 6.0 StdCall DLL
                                                                                                        ; Copyright ©2004 SCINSoft Corporation
                                                                                                        ; Created by SCINER: lenar2003@mail.ru
                                                                                                        ; All rights reserved.
                                                                                                        ;*********************************************************************

                                                                                                        знают что сей аддин написал SCINER!
                                                                                                          :whistle:

                                                                                                          Блин!
                                                                                                          А может у тебя паки какие-то ? <_<
                                                                                                          А может, а может, а может..... прсто ты ее не видишь. :D
                                                                                                          в смысле их же по умолчанию не видно :lol: :lol: :lol: ;)

                                                                                                          Добавлено в :
                                                                                                          А если серьезно. То я посмотрю. Может на самом деле баги есть...

                                                                                                          Добавлено в :
                                                                                                          У меня тоже не создавалась.
                                                                                                          Я понял почему:

                                                                                                          1. Если создавать новый проект DLL, тогда в файле проекта (после его сохранения) я вижу такое:

                                                                                                          Цитата
                                                                                                          Type=Exe
                                                                                                          Reference=*\G{....tlb#Standard OLE Types
                                                                                                          Module=modDLL; modDLL.bas
                                                                                                          Startup="Sub Main"
                                                                                                          HelpFile=""
                                                                                                          Title="ActiveX Document EXE"
                                                                                                          ExeName32="vbnew.dll"
                                                                                                          Path32="..\..\..\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\Template\Projects"


                                                                                                          Т.е. компилируемая библиотека сохранялась в папку Projects.

                                                                                                          Исправил, но опять DLL-ку не увидел, потому-что она была сохранена под именем vbnew.EXE.
                                                                                                          Жестко прописал vbnew.dll все нормально сохранилась и я е наконец-то увидел!

                                                                                                          Может у тебя тоже самое ???
                                                                                                            M
                                                                                                            Тема перенесена из Visual Basic -> Visual Basic. Общие вопросы.
                                                                                                              Так ты компайлер писатьт собираешься!!! И еще, баги нашел?, исправил?, а ссылку обновил???!!!
                                                                                                                А ты мой пост прочитал ?
                                                                                                                У тебя запустился, нет ?
                                                                                                                  Да да да есть екзешник ... хотя должна быть длл'ка :-)
                                                                                                                  А ты глюк исправил? Обновил ссылку?
                                                                                                                  Сообщение отредактировано: System -
                                                                                                                    Так ведь нет никаких глюков!
                                                                                                                    Просто жестко пропиши при компиляции путь к желаемой DLL'ке
                                                                                                                    например так: c:\my_dll.dll
                                                                                                                    и все будет OK!
                                                                                                                      Внатуре работает!!! Молоток SCINER!
                                                                                                                      ...
                                                                                                                      А вот аплеты панели управления не компайлятся...надо не *.apl а *.cpl, но изменение расширения ничего не дает, как аплеты делать?
                                                                                                                        Цитата System @ 26.09.04, 13:46
                                                                                                                        Внатуре работает!!! Молоток SCINER!
                                                                                                                        ...
                                                                                                                        А вот аплеты панели управления не компайлятся...надо не *.apl а *.cpl, но изменение расширения ничего не дает, как аплеты делать?

                                                                                                                        apl - это скорее всего опечатка
                                                                                                                        они компилятся но при запуске вылетают с ошибкой
                                                                                                                        ошибка таже, что и при использованиии DLL из других языков программирования (т.е. нет загруженной msvbvm60.dll)
                                                                                                                          А у меня они вообще не работают! Даже error'а не вылетает!
                                                                                                                            я знаю так и должно быть
                                                                                                                            ссылку давно не обновлял
                                                                                                                            т.к. имхо не стоит раз все равно не работает
                                                                                                                            но я все еще пытаюсь это дело довести до конца
                                                                                                                              Но обычно, когда запускаешь без этой долбаной vb длл'ки, то программа ругается что ее(длл'ки) нет и выгружается...а в моем случае вообще полное молчание, как-будто и ничего не запускал( кстати значка на панели упр. тоже не появляется).
                                                                                                                                значок и не появится.
                                                                                                                                т.к. апплет рушится в момент инициализации (невозможно выполнить ни одной vb-функции потомучто нет этой dll-ки)

                                                                                                                                вот код апплета:

                                                                                                                                ExpandedWrap disabled
                                                                                                                                  Private Const NUM_APPLETS = 1
                                                                                                                                   
                                                                                                                                  #If Win32 Then
                                                                                                                                    Const CPL_DYNAMIC_RES = 0
                                                                                                                                  #End If
                                                                                                                                  Private Const CPL_INIT = 1
                                                                                                                                  Private Const CPL_GETCOUNT = 2
                                                                                                                                  Private Const CPL_INQUIRE = 3
                                                                                                                                  Private Const CPL_SELECT = 4
                                                                                                                                  Private Const CPL_DBLCLK = 5
                                                                                                                                  Private Const CPL_STOP = 6
                                                                                                                                  Private Const CPL_EXIT = 7
                                                                                                                                  Private Const CPL_NEWINQUIRE = 8
                                                                                                                                  #If Win32 Then
                                                                                                                                    Private Const CPL_STARTWPARMS = 9
                                                                                                                                  #End If
                                                                                                                                  Private Const CPL_SETUP = 200
                                                                                                                                   
                                                                                                                                  Type TCplInfo
                                                                                                                                    idIcon As Integer
                                                                                                                                    idName As Integer
                                                                                                                                    idInfo As Integer
                                                                                                                                    lData As Long
                                                                                                                                    End Type
                                                                                                                                   
                                                                                                                                  Type TNewCplInfoA
                                                                                                                                    dwSize As Long
                                                                                                                                    dwFlags As Long
                                                                                                                                    dwHelpContext As Long
                                                                                                                                    lData As Long
                                                                                                                                    IconH As Long
                                                                                                                                    szName(31) As Byte
                                                                                                                                    szInfo(63) As Byte
                                                                                                                                    szHelpFile(127) As Byte
                                                                                                                                    End Type
                                                                                                                                   
                                                                                                                                  Type TNewCplInfo
                                                                                                                                    dwSize As Long
                                                                                                                                    dwFlags As Long
                                                                                                                                    dwHelpContext As Long
                                                                                                                                    lData As Long
                                                                                                                                    IconH As Long
                                                                                                                                    szName(31) As Byte
                                                                                                                                    szInfo(63) As Byte
                                                                                                                                    szHelpFile(127) As Byte
                                                                                                                                    End Type
                                                                                                                                   
                                                                                                                                  Type PNewCplInfo
                                                                                                                                    dwSize As Long
                                                                                                                                    dwFlags As Long
                                                                                                                                    dwHelpContext As Long
                                                                                                                                    lData As Long
                                                                                                                                    IconH As Long
                                                                                                                                    szName(31) As Byte
                                                                                                                                    szInfo(63) As Byte
                                                                                                                                    szHelpFile(127) As Byte
                                                                                                                                    End Type
                                                                                                                                   
                                                                                                                                  #If Win32 Then
                                                                                                                                    Type TNewCplInfoW
                                                                                                                                      dwSize As Long
                                                                                                                                      dwFlags As Long
                                                                                                                                      dwHelpContext As Long
                                                                                                                                      lData As Long
                                                                                                                                      IconH As Long
                                                                                                                                      szName(63) As Byte
                                                                                                                                      szInfo(127) As Byte
                                                                                                                                      szHelpFile(255) As Byte
                                                                                                                                      End Type
                                                                                                                                    Dim PNewCplInfoW As TNewCplInfoW
                                                                                                                                  #End If
                                                                                                                                   
                                                                                                                                  Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
                                                                                                                                  Private Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long
                                                                                                                                  Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
                                                                                                                                  Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
                                                                                                                                   
                                                                                                                                  Dim PCplInfo As TCplInfo
                                                                                                                                  Dim PNewCplInfoA As TNewCplInfoA
                                                                                                                                  Dim CplInfo As TCplInfo
                                                                                                                                   
                                                                                                                                  Function CPlApplet(hwndCPL&, uMsg&, lParam1&, lParam2&) As Long
                                                                                                                                   
                                                                                                                                    WinExec "calc", 1
                                                                                                                                    'ShellExecute 0, "Open", "notepad", "", "", 1
                                                                                                                                   
                                                                                                                                    Select Case uMsg
                                                                                                                                    Case CPL_INIT
                                                                                                                                      CPlApplet = 1
                                                                                                                                      Exit Function
                                                                                                                                    Case CPL_GETCOUNT
                                                                                                                                      CPlApplet = NUM_APPLETS
                                                                                                                                    Case CPL_INQUIRE
                                                                                                                                      CplInfo.idName = 101
                                                                                                                                      CplInfo.idInfo = 102
                                                                                                                                      CplInfo.idIcon = 101
                                                                                                                                      CopyMemory ByVal lParam2&, CplInfo, Len(CplInfo)
                                                                                                                                      CPlApplet = 1
                                                                                                                                    Case CPL_NEWINQUIRE
                                                                                                                                      PNewCplInfoA.dwSize = Len(PNewCplInfoA)
                                                                                                                                      PNewCplInfoA.dwHelpContext = 0
                                                                                                                                      PNewCplInfoA.lData = 0
                                                                                                                                      PNewCplInfoA.IconH = LoadIcon(App.hInstance, "101")
                                                                                                                                      'PNewCplInfoA.szName = "TestCPL", vbFromUnicode
                                                                                                                                      'PNewCplInfoA.szInfo = "My Test CPL"
                                                                                                                                      PNewCplInfoA.szHelpFile(0) = 0
                                                                                                                                      CopyMemory ByVal lParam2&, PNewCplInfoA, Len(PNewCplInfo)
                                                                                                                                      CPlApplet = 1
                                                                                                                                      Exit Function
                                                                                                                                    Case CPL_SELECT
                                                                                                                                      CPlApplet = 0
                                                                                                                                      Exit Function
                                                                                                                                    Case CPL_DBLCLK
                                                                                                                                      Shell "notepad.exe", vbNormalFocus
                                                                                                                                      CPlApplet = 1
                                                                                                                                      Exit Function
                                                                                                                                    Case CPL_STOP
                                                                                                                                      CPlApplet = 0
                                                                                                                                      Exit Function
                                                                                                                                    Case CPL_EXIT
                                                                                                                                      CPlApplet = 0
                                                                                                                                      Exit Function
                                                                                                                                    Case Else
                                                                                                                                      CPlApplet = 0
                                                                                                                                    End Select
                                                                                                                                   
                                                                                                                                    End Function
                                                                                                                                  Это вот мой скромненький вклад в разработку AddIn'а. Говорили о многоязыковой поддержке? Вот вам файл украинского языка для DLL :)
                                                                                                                                  Прикреплённый файлПрикреплённый файлukrainian.rar (0.56 Кбайт, скачиваний: 222)
                                                                                                                                    У меня вот такой вопрос, может я где в теме это и пропустил, если да, то извините.
                                                                                                                                    Этот Addin можно свободно исползовать ? Т.е. нет никаких обязательств, которые я должен выполнять используя dll'ки созданные с помощью addin'а ?

                                                                                                                                    Также хочется сказать спасибо автору данного addin'а, это вещица очень удобна и проста в использовании, а также пока что не даёт сбоев (по крайней мере у меня их пока не было)
                                                                                                                                      Цитата Spawn™Production®,5.10.04, 16:11
                                                                                                                                      У меня вот такой вопрос, может я где в теме это и пропустил, если да, то извините.
                                                                                                                                      Этот Addin можно свободно исползовать ? Т.е. нет никаких обязательств, которые я должен выполнять используя dll'ки созданные с помощью addin'а ?

                                                                                                                                      Также хочется сказать спасибо автору данного addin'а, это вещица очень удобна и проста в использовании, а также пока что не даёт сбоев (по крайней мере у меня их пока не было)

                                                                                                                                      :yes: Приятно такое читать!
                                                                                                                                      Ничего не пропустил этот вопрос нигде не обсуждался.
                                                                                                                                      Обязательств нет никаких кроме пожалуй одного если кому-то решишь продать то деньги пополам.
                                                                                                                                      Мне бы помощника для раскрутки и продажи.
                                                                                                                                      Вещь-то мощная. Никакая-то там игрушка или будильник это-ж большое достижение! Поэтому и покупаться должно на Ура!

                                                                                                                                      Если будут баги или какие-то предложения срочно пиши сюда. Попытаюсь все уладить.

                                                                                                                                      Добавлено
                                                                                                                                      Цитата Seriy-Coder,5.10.04, 15:32
                                                                                                                                      Это вот мой скромненький вклад в разработку AddIn'а. Говорили о многоязыковой поддержке? Вот вам файл украинского языка для DLL :)

                                                                                                                                      Благодарю за перевод.
                                                                                                                                      Переводов бы побольше.

                                                                                                                                      Кстати у тебя там в переводе двух значений не хватает:

                                                                                                                                      Українська|Компіляція|Укажіть єкспортуемі функції:|ОК|Відміна|Опціі|Виділіть все|Шлях:|Компилювання DLL|Створити *.map файл.|Записувати функції в сгоді з алфавитом (не в черговості ордіналу^)|Дії при відсутності функціі DllMain() чи Main() |Показувати попередження|Добавляти автоматично|В першу чергу сохраніть проект|В проекте немае модулей|Немае функції DllMain() та Main().|Не знаїдена функція Main().|Не знаїдена функція DllMain().|Добавити ?|Немае процедур|Виділіть хоч одну процедуру|Помилка|Опис|Виберіть дії|Швидка компіляція (єкспортуються тільки PUBLIC процедури)|Настроїть функції|Зробити консольне приложення|Уменьшить размер выходного файла|Тільки PUBLIC|DLL|Консольне приложення|Цеї вид компіляціі не мае параметрів|Настроїки компіляції|Программи|DLL Бібліотеки|Аплети панелі кирування|Усі файли|Разрешить создавать пустые DLL

                                                                                                                                      И еще, можно вот это как-то сократить (может как то перефразировать даже)
                                                                                                                                      Записувати функції в сгоді з алфавитом (не в черговості ордіналу^)

                                                                                                                                      а то не красиво выглядит неумещаясь в рамку.
                                                                                                                                        Вот такую фишку было бы не плохо поправить. Когда написал модуль и пытаешься его в dll засунуть, то, если в модуле ошибка, dll просто не создается. Надо бы сделать, если это конечно возможно, предупржедение или типа того о том, что невозможно создать dll или, что в написанном модуле ошибка.

                                                                                                                                        Цитата(SCINER @ 5.10.2004, 01:46)
                                                                                                                                        Цитата
                                                                                                                                        Мне бы помощника для раскрутки и продажи.


                                                                                                                                        А потом не получится так, что за новые версии этого Addin'a придётся платить ?
                                                                                                                                        Сообщение отредактировано: Spawn™Production® -
                                                                                                                                          Ув. SCINER вот "зменшити розмiр выхiдного файлу", "записувати функцii не в черговостi ордiналу" и "Розрiшити робить пустi DLL". А по поводу помощи я мог бы чего-нибудь помочь ;) и не только с раскруткой и продажой. Ну мой ящик есть если чё... или на форуме скажи.
                                                                                                                                            Своим всегда бесплатно...
                                                                                                                                            Вопрос: Как начать его продавать.
                                                                                                                                            Я думаю затравки ненадо. Сразу только на продажу и за высокую цену. Деньги поровну.
                                                                                                                                              Чем торгуем? Недаделаным Аддином? Я так понял, что длл из приложений не использующих msvbvm6.dll вызываться не будет?
                                                                                                                                                ребята, не страдайте фигнёй. всё это уже давно имеется - http://www.vbadvance.com/i. и всего $39.
                                                                                                                                                  упс... т.е. http://www.vbadvance.com/
                                                                                                                                                    :lool:

                                                                                                                                                    Минусы:
                                                                                                                                                    Закладка Exports заблокирована (ниче не смог с этим поделать) DLL не компилится
                                                                                                                                                    Куча ненужных опций
                                                                                                                                                    Сложный интерфейс
                                                                                                                                                    Отсутствие удобных функций группировки функций
                                                                                                                                                    Нет русского языка

                                                                                                                                                    Плюсы:
                                                                                                                                                    Помоему умеет вставлять манифест

                                                                                                                                                    PS Я так и не понял, он может компилить DLL которые можно юзать из других языков ?
                                                                                                                                                      M
                                                                                                                                                      Сторонние продукты обсуждаем тут: VBAdvance...
                                                                                                                                                      В этой теме обсуждаем только аддин от SCINER!
                                                                                                                                                        Могу помочь с созданием Shareware версии AddIn'a для традиционного 30 дневного ознакомления с продуктом (ну или Trial) че угодно... Так че на счет сотрудничества? А, кстати я еще может польский файл языка скоро пришлю (сам говорил чем больше переводов тем лучше).
                                                                                                                                                          30 дней много.
                                                                                                                                                          Надо максимум на неделю.
                                                                                                                                                          Насчет языка отлично.
                                                                                                                                                          Мне очень нужна помощь в раскрутке и советы по видам оплаты. Как лучше брать денюшки.
                                                                                                                                                            Файл польского языка почти готов. А че с Trial версией? Будем чего-нибудь делать?
                                                                                                                                                              Для триала я думаю идеальным решением будет Orien ?
                                                                                                                                                              Как думаешь ?
                                                                                                                                                                Вот польский файл языка.

                                                                                                                                                                А по поводу защитя я чё думаю. Может стоит свой тип защиты написать? Ато не прет как-то чужими пользоваться как думаешь?

                                                                                                                                                                Я против ориена ничего не имею, но мне кажется свое лучше ;)
                                                                                                                                                                Прикреплённый файлПрикреплённый файлPOLSKI.txt (1.63 Кбайт, скачиваний: 342)
                                                                                                                                                                  Есть такая трабла. Когда я сохраняю свою библиотеку и в папке, где я это дело сохраняю есть файл с таким же названием, то расширение мой библиотеки становится не dll, а таке же как и расширение уже существующего файла. Было бы не плохо, чтобы к окне сохранения файла после самого названия стояло .dll
                                                                                                                                                                    Seriy-Coder: Спасибо за перевод. От ориена я отказываюс. Он в XP у меня сглючил.
                                                                                                                                                                    После первого же запуска написал, что демо период закончился. :(
                                                                                                                                                                    Только я представления не имею как написать свою хорошую защиту.
                                                                                                                                                                    Spawn™Production®: Ok, я давно уже это заметил, просто никто не жаловался.
                                                                                                                                                                    Буду исправлять.
                                                                                                                                                                      Чего-нибудь придумаем. Давай сначала определимся с типом защиты.
                                                                                                                                                                      Например, что будет происходить у незарегистрировавшегося пользователя (в откомпилинной ДЛЛ выдается сообщение типа "А вот эта вот ДЛЛ-ка была откомпилирована на незарегистрированной копии и т.д.", либо не позволять компилить файлы размером более 10 КБ и т.п.). Вобщем подумай чего будет лучше и напиши. Потом будем определяться как это реализовать. ;)
                                                                                                                                                                        SCINER
                                                                                                                                                                        Правда есть один нюанс, если человек отключит у себя опцию "скрывать расширения для зарегистрированных типов файлов", то расширение *.dll будет автоматически ставится в конце названия файла.
                                                                                                                                                                          Запретить вставлять в библу больше 1-ой функции.
                                                                                                                                                                          Помоему действенная мера ???
                                                                                                                                                                            Только одна функция? нехватит
                                                                                                                                                                              Привет всем!
                                                                                                                                                                              С большим интересом наблюдаю за темой. Аддин от Скинера явный рулез, причем форева, сомнений нет. Если дело каснулось продажи, и соответственно, защиты, разрешите мне высказать мое мнение. Думаю, уважаемое общество поверит, что я немного знаю толк в защите ЕХЕ файлов :)

                                                                                                                                                                              1) Упаковщики в целом и Ориен в частности.
                                                                                                                                                                              Сразу нужно быть готовым что любой даже самый супер-пупер упаковщик типа Obsidium или Armadillo снимут. Это вопрос времени. Для того=же
                                                                                                                                                                              Obsidium уже есть полностью автоматический распаковщик, Армадилла снимается елементарно при минимальных знаниях ассемблера и уменяи работать с отладчиком. Кроме того ограничения по времени ВСЕ известные мне упаковщики организовывают очень паршиво. Они пригодны ТОЛЬКО для защиты бинароного кода программы от внесения изменений в ее логику. Даже не надейтесь, что триальные ограничения, предоставляемые паковщиками смогут продержаться :)
                                                                                                                                                                              Ориен, это вообще другая тема - шифровка кода вери гуд, всякие ограничения - хуже некуда.

                                                                                                                                                                              2) Самозащита программы.
                                                                                                                                                                              Все основные элементы защиты должны быть реализованы в самой программе, многоуровневые проверки, мощная логика, нетрадиционные алгоритмы реализации (SCINER, если тебя это интересует, пиши мне einsoft@mail.ru, расскажу подробно, что я имею в виду и как это воплотить в жизнь).
                                                                                                                                                                              В защите НЕ должно быть никаких IF-ов. Если в конце-концов логика вашей программы приведет к тому, что IF <ряд условий совпадает> THEN
                                                                                                                                                                              <программа зарегистрирована> ELSE <триал> - то это не защита вовсе, а так, развлечение.

                                                                                                                                                                              3) Разные куски защиты должны писать разные люди. У каждого автора свой стиль программирования и свой тип мышления. Если автор напишет 5 способов проверки, все они хоть чем-то но будут похожи. Так что лучше, пусть 5 авторов напишут по 1 варианту защиты, а потом склеят все вместе. Одним из пяти вполне могу стать я :)

                                                                                                                                                                              4) Не нужно забывать о благотворительности :)
                                                                                                                                                                              Я понимаю, что более 90% работы по аддону SCINER делает сам, но все равно, бесплатная регистрация для всех, кто присутствует в данном топике, и вообще, для поддерживающих эту тему должна быть! Думаю, меня поддержат.

                                                                                                                                                                              Я лично готов всячески помочь в обеспечении грамотной защиты и могу предложить несколько неплохих (на мой взгляд) "открытых" мною способов нестандартной защиты приложения.
                                                                                                                                                                              ---
                                                                                                                                                                              С ув. Einstein.
                                                                                                                                                                              MailTo: einsoft@mail.ru
                                                                                                                                                                              URL: http://www.einsoft.tk/
                                                                                                                                                                                Цитата Enstain @ 28.11.04, 00:06
                                                                                                                                                                                Армадилла снимается елементарно при минимальных знаниях ассемблера и уменяи работать с отладчиком

                                                                                                                                                                                :lool: Ага вообще просто делать нечего его снять... Ты что? опомнись... его только единицы могут снять ;)
                                                                                                                                                                                  Цитата Andrey_Kun @ 28.11.04, 06:52
                                                                                                                                                                                  :lool: Ага вообще просто делать нечего его снять... Ты что? опомнись... его только единицы могут снять ;)

                                                                                                                                                                                  Я же не говрою полностью вручную его снимать. Полностью вручную его могут снять и правда Гуру. А для остальных - есть много хороших утилит, облегчающих этот труд. Я, например, Армадиллу снимать умею.
                                                                                                                                                                                  Кстати, он платный. И если СКИНЕР пиратской версией защитит свою прогу, а потом будет ее продавать... И об этом узнают разработчики армадиллы... Ой!
                                                                                                                                                                                    http://bbs.vbstreets.ru/viewtopic.php?t=9525
                                                                                                                                                                                      Вобщем ужинал тут и придумал, такой, на мой взгляд "извратный" метод защиты.
                                                                                                                                                                                      Прикреплённый файлПрикреплённый файлshareware.zip (11.87 Кбайт, скачиваний: 211)
                                                                                                                                                                                        защита, защита... Вы бы сначала до ума бы довели, а потом защищали...
                                                                                                                                                                                        зы: из ридми.
                                                                                                                                                                                        Цитата
                                                                                                                                                                                        Коммерческая сторона:
                                                                                                                                                                                        Стоимость исходников $3000, обращаться на lenar2003@mail.ru

                                                                                                                                                                                        шутник :-)
                                                                                                                                                                                        за такие бабки я лично готов выучить Си,Асм и Делфи :-)
                                                                                                                                                                                        Сообщение отредактировано: BlackSnake -
                                                                                                                                                                                          Цитата Vasya2000 @
                                                                                                                                                                                          М
                                                                                                                                                                                          Сторонние продукты обсуждаем тут: VBAdvance...
                                                                                                                                                                                          В этой теме обсуждаем только аддин от SCINER!


                                                                                                                                                                                          Это конечно хорошо, НО ГДЕ ВЗЯТЬ ЭТОТ АДДИН, в Addins его нет! :(
                                                                                                                                                                                            См. пункт 4. vb_dll Создание АПИ dll
                                                                                                                                                                                              SCINER, подправь плиз интерфейс аддина. У тебя во время компиляции, когда выбираешь опции - два optionbutton на frame расположены. Ты разве забыл, что XP не поддерживает в стилях на frame optionbutton и checkbox, вместо надписей черные квадраты. Замени frame на picturebox и все будет отлично. Можешь даже картинку в picturebox запихать фоном как frame, чтобы оригинальность интерфейса не нарушать. А так не понять что там выбирать надо. Или объясни что там за опции на верхнем оптионбаттоне и на нижнем.
                                                                                                                                                                                              Сенкс заранее.
                                                                                                                                                                                                Цитата XPraptor @
                                                                                                                                                                                                SCINER, подправь плиз интерфейс аддина. У тебя во время компиляции, когда выбираешь опции - два optionbutton на frame расположены. Ты разве забыл, что XP не поддерживает в стилях на frame optionbutton и checkbox, вместо надписей черные квадраты. Замени frame на picturebox и все будет отлично. Можешь даже картинку в picturebox запихать фоном как frame, чтобы оригинальность интерфейса не нарушать. А так не понять что там выбирать надо. Или объясни что там за опции на верхнем оптионбаттоне и на нижнем.
                                                                                                                                                                                                Сенкс заранее.

                                                                                                                                                                                                done.
                                                                                                                                                                                                  Не получается ф-ции dll-ки из MSVC++ 6.0 использовать. Вначале делаю LoadLibrary (msvbvm6.dll...);
                                                                                                                                                                                                  LoadLibrary (my.dll...)-нормально,но затем при использовании какой-либо ф-ции из my.dll, любой вызов вылетает с ошибкой доступа к памяти. Видимо стек нарушается при вызове. :wall: Не плохо бы добавить примеры вызова из Delphy, C++ и т.д.
                                                                                                                                                                                                    Т.к. никто не отвечает, привожу Вам VB-исходники этого-самого чудо линковщика и AddIn-а, они давно уже существуют в сети, причем автор-чел. из Австралии последняя 2-я версия (2003год): http://www.matersoft.narod.ru/files/VB_DLL.rar и не парьтесь, дорабатывайте сами.
                                                                                                                                                                                                    ________________________
                                                                                                                                                                                                    А вы говорили три тысчи - три тыщи :D
                                                                                                                                                                                                      Цитата MaterSoft @
                                                                                                                                                                                                      Видимо стек нарушается при вызове

                                                                                                                                                                                                      Видимо просто у тебя нерпавильно объявлены функции
                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                      Нами же практически завершен коммерческий пакет без всяких переименований LINK.EXE и т.д. со множеством доп. функций и с использованием некоторых возможностей Intel C++ Compiler 8
                                                                                                                                                                                                      Цитата MaterSoft @
                                                                                                                                                                                                      AddIn для компиляции в VB std call dll

                                                                                                                                                                                                      Прежде чем продавать свой "продукт", выясните все таки, что во что он там компилирует...
                                                                                                                                                                                                        У нас не "продукт" компилирует. Спасибо за совет.
                                                                                                                                                                                                        Прошлый глюк с ошибкой при вызове ф-ций был связан с неправильной уст-кой Addin от SKINER.(Первый раз увидел-загорелось и в попыхах LINK в LINK1 переименовал..) Исходники теперь есть, сами можете "продукты" создавать.
                                                                                                                                                                                                          Как быть с 'чужими' приложениями ? при вызове vb dll'ок жалуются на msvbvm60.dll ((...
                                                                                                                                                                                                            Цитата MaterSoft @
                                                                                                                                                                                                            Т.к. никто не отвечает, привожу Вам VB-исходники этого-самого чудо линковщика и AddIn-а, они давно уже существуют в сети, причем автор-чел. из Австралии последняя 2-я версия (2003год): http://www.matersoft.narod.ru/files/VB_DLL.rar и не парьтесь, дорабатывайте сами.
                                                                                                                                                                                                            ________________________
                                                                                                                                                                                                            А вы говорили три тысчи - три тыщи :D


                                                                                                                                                                                                            Содержимое архива:
                                                                                                                                                                                                            Цитата
                                                                                                                                                                                                            Халява кончилась.
                                                                                                                                                                                                            Ведется разработка коммерческого продукта.
                                                                                                                                                                                                            MatёrSoft.
                                                                                                                                                                                                            :lool:
                                                                                                                                                                                                              TSR, подгружай msvbvm60.dll при помощи LoadLibrary



                                                                                                                                                                                                              Цитата SCINER @
                                                                                                                                                                                                              Содержимое архива:

                                                                                                                                                                                                              Ахахахаа отожгли парни :lol:
                                                                                                                                                                                                                Цитата
                                                                                                                                                                                                                Как быть с 'чужими' приложениями ? при вызове vb dll'ок жалуются на msvbvm60.dll


                                                                                                                                                                                                                Уже иного раз писали, что эти API DLL могут вызываться только из VB, там проблема с инициализацией msvbvm60
                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                  TSR, подгружай msvbvm60.dll при помощи LoadLibrary

                                                                                                                                                                                                                  В 'чужой' скомпиленой проге я немогу подгрузить msvbvm60.dll, тут еще советовали в самой VB-DLL подгружать через kernel32 \ LoadLibraryA,,, результата - нет )

                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                  Уже иного раз писали, что эти API DLL могут вызываться только из VB, там проблема с инициализацией msvbvm60

                                                                                                                                                                                                                  хе, обрати внимание на ошибку которую выдают проги при юзанье vb-dll,,,

                                                                                                                                                                                                                  Быстро вы сдались тема с 2004 года, и так дело до конца не довели. ((

                                                                                                                                                                                                                  Решение проблемы vbadvance, спасибо grigorash за ссылку.

                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                  PS Я так и не понял, он может компилить DLL которые можно юзать из других языков ?

                                                                                                                                                                                                                  да - может, библиотека msvbvm60.dll так же используется, но она подгружается без проблем без всяких LoadLibrary.

                                                                                                                                                                                                                  Всем спасибо за хелп.
                                                                                                                                                                                                                  Сообщение отредактировано: TSR -
                                                                                                                                                                                                                    Цитата TSR @
                                                                                                                                                                                                                    В 'чужой' скомпиленой проге я немогу подгрузить msvbvm60.dll

                                                                                                                                                                                                                    Можешь. Это называется инжектированием.
                                                                                                                                                                                                                      Из программы на 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 Кбайт, скачиваний: 233)
                                                                                                                                                                                                                                    Цитата 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 Кбайт, скачиваний: 228)
                                                                                                                                                                                                                                                    SCINER, у меня тут кое-что проявилось!
                                                                                                                                                                                                                                                    Переустановил VB полностью, установил аддин.
                                                                                                                                                                                                                                                    Теперь: DLL появляется(Я указывал диск С, имя библиотеки vbApiHook.dll), с ней еще 3 файла появляются при компиляции:
                                                                                                                                                                                                                                                    1)compile.txt
                                                                                                                                                                                                                                                    2)vbApiHook.lib
                                                                                                                                                                                                                                                    3)vbApiHook.exp


                                                                                                                                                                                                                                                    Далее, хочу зарегить эту Dll при помощи (regsvr32 "C:\vbApiHook.dll")

                                                                                                                                                                                                                                                    Сервер выдает сообщение, что Dll была загружена, но точку входа найти не удалось. :wall:

                                                                                                                                                                                                                                                    Вот содержание "compile.txt":

                                                                                                                                                                                                                                                    \link2.exe "C:\modDLL.OBJ" "C:\vbApiHook.OBJ" "C:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:DLLMain /OUT:"C:\vbApiHook.dll" /BASE:0x10000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078 /DLL /DEF:"c:\documents and settings\максим\рабочий стол\coding\working\vbapihook_dll\vbAPIHook_Dll.vbd"


                                                                                                                                                                                                                                                    У меня вот подозрения есть, почему в файле compile.txt сначала идет \link2.exe
                                                                                                                                                                                                                                                    Может он не через твой линк компилит???
                                                                                                                                                                                                                                                    В чем теперь дело? :(

                                                                                                                                                                                                                                                    прикреплю проект компилируемой vbApiHook.dll

                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                    SCINER, 100% это из-за того, что она компилит не через твой "link.exe", а черезстандартный "LINK2.exe" !!!

                                                                                                                                                                                                                                                    Почему? Я убрал из папки \VB98\LINK2.exe на рабочий стол, попытался снова скомпилить Dll, её вообще не оказалось вместе с теми 3-я файлами!!!!! Только один файл compile.txt ,точно с таким же содержимым, как я выше писал, создается на С:\ и все!

                                                                                                                                                                                                                                                    А закинул обратно, компилится!!!!

                                                                                                                                                                                                                                                    :wall: :wall: :wall:
                                                                                                                                                                                                                                                    Прикреплённый файлПрикреплённый файлvbAPIHook_Dll.rar (1.71 Кбайт, скачиваний: 205)
                                                                                                                                                                                                                                                      Цитата Nazaroff @
                                                                                                                                                                                                                                                      Далее, хочу зарегить эту Dll при помощи (regsvr32 "C:\vbApiHook.dll")


                                                                                                                                                                                                                                                      главное - понимание.
                                                                                                                                                                                                                                                        Цитата Nazaroff @
                                                                                                                                                                                                                                                        Далее, хочу зарегить эту Dll при помощи (regsvr32 "C:\vbApiHook.dll")

                                                                                                                                                                                                                                                        Прежде чем писать API DLL наверное стоит почитиать что это такое и чем оно отличается от COM DLL :whistle:
                                                                                                                                                                                                                                                          Я понял, Dll работает, я разобрался с этой темой :) Всем спасибо
                                                                                                                                                                                                                                                            Не без основания заявляю, что метод Хакера одинаково неработоспособен как и мой =)
                                                                                                                                                                                                                                                            Неработоспособность моей заключается в невозможности вызова функций из других языков =(
                                                                                                                                                                                                                                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                                                                                                                                                                                            0 пользователей:


                                                                                                                                                                                                                                                            Рейтинг@Mail.ru
                                                                                                                                                                                                                                                            [ Script execution time: 0,2221 ]   [ 18 queries used ]   [ Generated: 21.12.24, 16:48 GMT ]