Saturn.65
Я поясню.
Вот код и не надо никаких модулей.
Если ты думаешь, что OCX-контрол, наделённый какой-то функциональностью, чем-то лучше модуля, наделённого той же функциональностью, ты ошибаешься.
Во-первых, ocx предназначен для хранения классов
визуальных компонентов. Ты считаешь, что твой компонент можно назвать визуальным? Ты сделал так, как далали в своё время создатели компонента WinSock. Однако есть большая разница. В то время, когда создавался компонент WinSock - это было вынужденной необходимостью. У тебя такой необходимости нет.
Так что, даже если ты позиционируешь свою поделку как "продукт для новичков" - сделай её хотя бы как ActiveX DLL.
Но и в этом случае, она будет хуже модуля. Видешь-ли, тебе придётся поместить свои функции в класс (оно у тебя и сейчас в классе, однако в т.н. "визуальном классе"). А я (лично я - как другие - не знаю) не переношу, когда класс используют там, где его использовать не нужно.
Возьмём WinSock о котором говорилось выше. Есть ли какой-то смысл в размещении на форме нескольких WinSock-ов? --Да, есть. Например, если нам необходимо работать сразу с несколькими сокетами. А есть ли смысл в размещении на форме нескольких твоих Reg-ов
Т.е. я не переношу использование класса, для создания объекта (этого класса), который нужен только в одном экземпляре - который может существовать только в одном экземпляре, потому что если создать несколько начнутся жуткие глюки (к твоей поделке это не относится - там нечему глючить, а вот ко всяким iRender, rRenderer, TrueVision3D и тд. - это ой-как относится. Попробуй создать там несколько объектов Engine и вызвать у всех сразу метод Init. Будет очень "весело".)
Причём я не настолько категоричен, что ни при каких условиях не допущу использование класса как единичного объекта. Нет. Есть ряд случаев, в которых, я считаю, это делать можно или даже нужно. Например у класса есть события инициализации. У класса можно легко вызывать методы по имени (в модуле это просто невозможно сделать, если не регистрировать в специальном месте соответствие имени и адреса функции). Но ты может мне объяснишь - в чём смысл использования в данном случае класса (не суть какого - обычного или визуального (т.е. UserControl-а))?
Нет никаких модулей.
Фу. Опять эта глупость.
К тому же на форуме не все хакеры, как вы, много начинающих, как я и им трудно еще во многом разобраться.
Отлично. Ты сам себе противоречишь. Если здесь не все хакеры, как tyomitch, то почему же ты не удосужился сделать документацию (шаблон которой, кстати,
валяется- поправь в двух местах и готово) для начинающих, которым трудно во многом разобраться?
Например API для меня темный лес.
Вот это, кстати, большое заблуждение. Во-первых, API это Application Programming Interface, а не то, что ты имел ввиду. То что ты сделал - тоже можно назвать API. А ты имел ввиду, как мне кажется (если нет - поправь), вызов функции из DLL-библиотеки?
Так? Так. Функцию MsgBox ты вызываешь? Ничего сложного тут для тебя нет? А в чём разница между вызовом API-функции и вызовом функции MsgBox ? -- Да ни в чём. Причём как в коде (и там и там вызов функции будет выглядеть одинаково), так и в принципе действия (в обоих случаях: аргументы пакуются в стек, делается call, функция отрабатывает (и чистит стек) и возвращает выполнение туда, откуда была вызвана.) Где тёмный лес? Что такого страшного в вызове API-функции, чего нет в вызове обычной функции (любой, хоть той, которую ты сам определил) ? -- Да ничего. Есть, конечно, моменты, свойственные именно для VB (перекодировка строк, например) - но ведь ничего не стоит их понять.
Вообще, есть много различных моментов (например, кроме соглашения stdcall, о котором идёт речь, есть ещё cdecl, fastcall ...) о которых нужно знать (Хочешь узнать? - ты спроси). Но если бы только знал, на сколько (или даже во сколько) принцип действия этого
- Код: Выделить всё
Set s = CreateObject("Wscript.Shell")
s.regwrite "......es\wuauserv\Start", "2", "REG_DWORD"
сложнее чем "принцип действия" API-функций...
Конечно, легко ни о чём не знать и вызывать метод regwrite у объекта s. Но тебе нравится быть невеждой (ни о чём не знать)? Да - пожалуйста - вызывай дальше и клепай ActiveX-компоненты. Нет - будь добр, пойми что и как, а потом уже суди, "что проще".
А чем не кирпич?
Отсутствием документации. Отсутствием исходника.
PS. В форуме встречал массу вопросов, как изменить значение того или иного ключа. Вот код и не надо никаких модулей.
Заклинило, что-ли