Страница: 1 | 2 |
Вопрос: Проблема с реестром.
Добавлено: 01.06.07 21:56
Автор вопроса: mechanical_man
Подскажите, пожалуйста.
Есть фрагмент кода на 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
Автор ответа:
EUGY
Вопросов: 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
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #2
Добавлено: 01.06.07 23:45
нет конечно
наверняка это встроенный модуль в этом паскале. паскаль. брр, аж в дрожь бросает при упоминании. закройте скорее тему ;/ да и слово-то какое кривое. ни русское ни английское.
Номер ответа: 3
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #3
Добавлено: 02.06.07 00:00
?????
 im HKEY_LOCAL_MACHINE As Long
HKEY_LOCAL_MACHINE = &H80000002
 im 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.
TRegistry - это юнит для работы с регистром в Делфи, а не .dll
вот решение на ВБ.НЕТ
reg.SetValue("mscv32", Application.ExecutablePath)
reg.Close()
Номер ответа: 4
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #4
Добавлено: 02.06.07 00:04
BUMM не прочуствовал юмора.
Номер ответа: 5
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #5
Добавлено: 02.06.07 00:15
наверняка это встроенный модуль в этом паскале. паскаль. брр, аж в дрожь бросает при упоминании. закройте скорее тему ;/ да и слово-то какое кривое. ни русское ни английское.
Если тебе этот язык не нравится, это не значит что он кривой или глючный. на нем написали х. тучу прог в те времена, когда Васик даже языком не называли.
Номер ответа: 6
Автор ответа:
BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #6
Добавлено: 02.06.07 00:36
reg.SetValue("mscv32", Application.ExecutablePath)
reg.Close()
Подскажите пожалуйста, а в каком месте нужно прописать этот код, что бы после инсталяции программа запускалась при WinStartUp.
Номер ответа: 7
Автор ответа:
BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #7
Добавлено: 02.06.07 00:36
И как это работает?
Номер ответа: 8
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #8
Добавлено: 02.06.07 00:59
Этот код нужно запустиь только 1 раз.
Например после первого запуска программы
Добавь следующий код в первой(главной) форме программы
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
Автор ответа:
BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #9
Добавлено: 02.06.07 01:13
Огромное спасибо!!!
Меня, как начинающего, всегда мучал этот вопрос.
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 02.06.07 03:50
кстати, а я ведь просек юмор..
Типа.. А я писал на дотнете х. тучу прог, в те далёкие времена, когда бейсик только появился и его языком не называли )))
От и я помню, 1943.. сижу в окопе, пули свистят над головой...
Номер ответа: 11
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #11
Добавлено: 02.06.07 14:41
Во-вторых, Васик поимел паскаль еще в 20 веке, имеет и будет иметь. к тому же васик вышел раньше паскаля.
В-третьих, никто не говорил что TRegisty - это DLL, а "встроенный модуль" - и подавно.
В-четвертых расскажи-ка мне какие такие клевые проги были написаны на паскале? Если что-то и было неВасиковское, то С++, но никак не паскаль, который и годится только для изучения в школе классами эдак 7-8ми, т.к. далее уже идет VB6.
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 02.06.07 16:00
TRegisty это класс из VCL, которая вобщем-то опенсорсная...
Номер ответа: 13
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #13
Добавлено: 02.06.07 16:02
дельфи кстати стандартными средставми так же как и бэйсик фигово работает с потоками максимум 10 и то не стабильно, если стандартными средствами обжект паскаля.
Но ради справедливости скажу, что виндовые работают на ура
PS
прог стоящих на дельфи - по пальцам пересчитать и то с багами, что The Bat! что PHP Expert Editor, что HM Soft NSIS Editor...
Перечисленные выше, хотя бы не падают с эксепшенами в VCL, а остальные даже и до обработки ошибок не соизволяют опуститцо...
Номер ответа: 14
Автор ответа:
BUMM ®
Вопросов: 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
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #15
Добавлено: 02.06.07 17:47
BUMM
В общем все конечно, поделу, и я согласен, но позволь составлю оппозицию, дабы не перевешивало дельфи моего любимого VB. (Года 3 пишу на дельфи, но он все равно не VB)
Кто тебе сказал что VB5/6 этого не умеет?
Через задницу, используя AddIn можно и в VB6
можно создать обычные dll.
Тоже можно, но вручную использованием заглушек в виде модулей с декларацией тех же самых функций что в статик линк либрари.
Ну скажем так, VB5/6 вообще не объектно ориентированный Он COM ориентированный, причем с ограничениями, отсюда и внутренник ограничения, и отсутствие конструкторов в классе (Initialize/Terminate я не склонен считать чем-то серьезным), и невозможность передачи в параметрах ссылки на структуру данных в памяти (UDT), хотя в то же время указатель на объект можно передать легко.
Пространство имен у него конечно общее, иногда это приводит к конфликтам, согласен. Но при использовании можно писать: IMyLibrary.MyClassName.MyTypeName.MyEnumItem
Для этого уже написано, и не только мной, множество модулей с ассемблерными вставками. Пусть они работают несколько медленней, чем прямой вызов, но все же позволяют организовать доступ и к cdecl функциям.
fastcall и пр. в расчет не беру, т.к. распространены мало и в Win32/64 не приняты.
Человек меня просил не распространяться, но поверь, есть возможность
Хотя писать драйвера на VB, где автоматом компилит SEH, и кучу мусора, все равно никто в трезвом уме и здравой памяти не станет
в 5-ке стандартные функции создания потоков глючили, лишь использование стандартных Win32 давало желаемый результат.
Это ой как сомнительно, возможность разумеется есть, но она скорее теоретическая, иначе ее не назвать