Вопрос: Проблема с реестром. | Добавлено: 01.06.07 21:56 |
Автор вопроса: ![]() |
Подскажите, пожалуйста.
Есть фрагмент кода на Delphi, его надо перевести на Basic. Абсолютно без понятия как. var reg: TRegistry; begin reg := TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHI NE; reg.LazyWrite := false; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); reg.WriteString('mscv32', Application.ExeName); reg.CloseKey; reg.free; Программа должна стартовать автоматически при загрузке системы. |
Ответы | Всего ответов: 18 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #1 | Добавлено: 01.06.07 22:27 |
построчный перевод такой.
Dim HKEY_LOCAL_MACHINE As Long HKEY_LOCAL_MACHINE = &H80000002 Dim reg As TRegisry Set reg = New TRegisry reg.RootKey = HKEY_LOCAL_MACHINE reg.LazyWrite = False Call reg.OpenKey("Software\Microsoft\Windows\CurrentVersion\Run", False) Call reg.WriteString("mscv32", App.EXEName) reg.CloseKey Set reg = Nothing Надеюсь, есть ссылка на TRegistry. ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #2 | Добавлено: 01.06.07 23:45 |
нет конечно![]() наверняка это встроенный модуль в этом паскале. паскаль. брр, аж в дрожь бросает при упоминании. закройте скорее тему ;/ да и слово-то какое кривое. ни русское ни английское. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 482 |
Профиль | Цитата | #3 | Добавлено: 02.06.07 00:00 |
?????
построчный перевод такой.
![]() HKEY_LOCAL_MACHINE = &H80000002 ![]() Set reg = New TRegisry reg.RootKey = HKEY_LOCAL_MACHINE reg.LazyWrite = False Call reg.OpenKey("Software\Microsoft\Windows\CurrentVersion\Run", False) Call reg.WriteString("mscv32", App.EXEName) reg.CloseKey Set reg = Nothing Надеюсь, есть ссылка на TRegistry. ![]() TRegistry - это юнит для работы с регистром в Делфи, а не .dll вот решение на ВБ.НЕТ Dim reg As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
reg.SetValue("mscv32", Application.ExecutablePath) reg.Close() |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #4 | Добавлено: 02.06.07 00:04 |
BUMM не прочуствовал юмора. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 482 |
Профиль | Цитата | #5 | Добавлено: 02.06.07 00:15 |
нет конечно
![]() наверняка это встроенный модуль в этом паскале. паскаль. брр, аж в дрожь бросает при упоминании. закройте скорее тему ;/ да и слово-то какое кривое. ни русское ни английское. Если тебе этот язык не нравится, это не значит что он кривой или глючный. на нем написали х. тучу прог в те времена, когда Васик даже языком не называли. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 295 |
Профиль | Цитата | #6 | Добавлено: 02.06.07 00:36 |
Dim reg As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
reg.SetValue("mscv32", Application.ExecutablePath) reg.Close() Подскажите пожалуйста, а в каком месте нужно прописать этот код, что бы после инсталяции программа запускалась при WinStartUp. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 295 |
Профиль | Цитата | #7 | Добавлено: 02.06.07 00:36 |
И как это работает? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 482 |
Профиль | Цитата | #8 | Добавлено: 02.06.07 00:59 |
Этот код нужно запустиь только 1 раз.
Например после первого запуска программы Добавь следующий код в первой(главной) форме программы Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If My.Application.Deployment.IsFirstRun Then Dim reg As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True) reg.SetValue("mscv32", Application.ExecutablePath) reg.Close() End If End Sub |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 295 |
Профиль | Цитата | #9 | Добавлено: 02.06.07 01:13 |
Огромное спасибо!!!
Меня, как начинающего, всегда мучал этот вопрос. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #10 | Добавлено: 02.06.07 03:50 |
на нем написали х. тучу прог в те времена, когда Васик даже языком не называли.
кстати, а я ведь просек юмор.. Типа.. А я писал на дотнете х. тучу прог, в те далёкие времена, когда бейсик только появился и его языком не называли ![]() От и я помню, 1943.. сижу в окопе, пули свистят над головой... |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #11 | Добавлено: 02.06.07 14:41 |
Если тебе этот язык не нравится, это не значит что он кривой или глючный. на нем написали х. тучу прог в те времена, когда Васик даже языком не называли. Во-первых, прямо я твой язык не обозвал, а косвенный намек не считается)
Во-вторых, Васик поимел паскаль еще в 20 веке, имеет и будет иметь. к тому же васик вышел раньше паскаля. В-третьих, никто не говорил что TRegisty - это DLL, а "встроенный модуль" - и подавно. В-четвертых расскажи-ка мне какие такие клевые проги были написаны на паскале? Если что-то и было неВасиковское, то С++, но никак не паскаль, который и годится только для изучения в школе классами эдак 7-8ми, т.к. далее уже идет VB6. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 02.06.07 16:00 |
TRegisty это класс из VCL, которая вобщем-то опенсорсная... |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 02.06.07 16:02 |
дельфи кстати стандартными средставми так же как и бэйсик фигово работает с потоками ![]() Но ради справедливости скажу, что виндовые работают на ура ![]() PS прог стоящих на дельфи - по пальцам пересчитать и то с багами, что The Bat! что PHP Expert Editor, что HM Soft NSIS Editor... Перечисленные выше, хотя бы не падают с эксепшенами в VCL, а остальные даже и до обработки ошибок не соизволяют опуститцо... |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 482 |
Профиль | Цитата | #14 | Добавлено: 02.06.07 16:22 |
To AgentFire:
Тебе в простых примерах рассказать чем VB6(и предыдущие версии VB) хуже Делфи3-7? Вот вещи которые есть в делфи и нет в VB6: - inline asm - компиляция обычных Win32 API dll - компиляция в "чистый native" код - в параметрах настройка команд линкера - прилинковка статических библиотек - наследование - поддержка макросов - возможность задать namespace на уровне модуля - определение и использование конвенций отличных от _stdcall - поддержки команд для компилятора (аля #pragma), Option [%] в данном случае не идет в сравнение - нет зависимости от msvbvm## (которая убивает все надежды на ring0) - поддержка многопоточности - возможность компилировать код для Linux (кроссплатформенность) |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 02.06.07 17:47 |
BUMM
В общем все конечно, поделу, и я согласен, но позволь составлю оппозицию, дабы не перевешивало дельфи моего любимого VB. (Года 3 пишу на дельфи, но он все равно не VB) - компиляция в "чистый native" код
Кто тебе сказал что VB5/6 этого не умеет? компиляция обычных Win32 API dll
Через задницу, используя AddIn можно и в VB6 можно создать обычные dll. прилинковка статических библиотек
Тоже можно, но вручную использованием заглушек в виде модулей с декларацией тех же самых функций что в статик линк либрари. наследование
Ну скажем так, VB5/6 вообще не объектно ориентированный ![]() возможность задать namespace на уровне модуля
Пространство имен у него конечно общее, иногда это приводит к конфликтам, согласен. Но при использовании можно писать: IMyLibrary.MyClassName.MyTypeName.MyEnumItem определение и использование конвенций отличных от _stdcall
Для этого уже написано, и не только мной, множество модулей с ассемблерными вставками. Пусть они работают несколько медленней, чем прямой вызов, но все же позволяют организовать доступ и к cdecl функциям. fastcall и пр. в расчет не беру, т.к. распространены мало и в Win32/64 не приняты. нет зависимости от msvbvm## (которая убивает все надежды на ring0)
Человек меня просил не распространяться, но поверь, есть возможность ![]() Хотя писать драйвера на VB, где автоматом компилит SEH, и кучу мусора, все равно никто в трезвом уме и здравой памяти не станет ![]() поддержка многопоточности
в 5-ке стандартные функции создания потоков глючили, лишь использование стандартных Win32 давало желаемый результат. возможность компилировать код для Linux (кроссплатформенность)
Это ой как сомнительно, возможность разумеется есть, но она скорее теоретическая, иначе ее не назвать ![]() |
|