Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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
?????
построчный перевод такой.


    ;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. :-)

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
Автор ответа:
 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
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
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #7 Добавлено: 02.06.07 00:36
И как это работает?

Ответить

Номер ответа: 8
Автор ответа:
 BUMM ®



Вопросов: 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
Автор ответа:
 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-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 02.06.07 16:00
TRegisty это класс из VCL, которая вобщем-то опенсорсная...

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #15
Добавлено: 02.06.07 17:47
BUMM
В общем все конечно, поделу, и я согласен, но позволь составлю оппозицию, дабы не перевешивало дельфи моего любимого VB. (Года 3 пишу на дельфи, но он все равно не VB)

- компиляция в "чистый native" код

Кто тебе сказал что VB5/6 этого не умеет?

компиляция обычных Win32 API dll

Через задницу, используя AddIn можно и в VB6
можно создать обычные dll.

прилинковка статических библиотек

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

наследование

Ну скажем так, VB5/6 вообще не объектно ориентированный :) Он COM ориентированный, причем с ограничениями, отсюда и внутренник ограничения, и отсутствие конструкторов в классе (Initialize/Terminate я не склонен считать чем-то серьезным), и невозможность передачи в параметрах ссылки на структуру данных в памяти (UDT), хотя в то же время указатель на объект можно передать легко.

возможность задать namespace на уровне модуля

Пространство имен у него конечно общее, иногда это приводит к конфликтам, согласен. Но при использовании можно писать: IMyLibrary.MyClassName.MyTypeName.MyEnumItem

определение и использование конвенций отличных от _stdcall

Для этого уже написано, и не только мной, множество модулей с ассемблерными вставками. Пусть они работают несколько медленней, чем прямой вызов, но все же позволяют организовать доступ и к cdecl функциям.
fastcall и пр. в расчет не беру, т.к. распространены мало и в Win32/64 не приняты.

нет зависимости от msvbvm## (которая убивает все надежды на ring0)

Человек меня просил не распространяться, но поверь, есть возможность ;)
Хотя писать драйвера на VB, где автоматом компилит SEH, и кучу мусора, все равно никто в трезвом уме и здравой памяти не станет :)

поддержка многопоточности

в 5-ке стандартные функции создания потоков глючили, лишь использование стандартных Win32 давало желаемый результат.

возможность компилировать код для Linux (кроссплатформенность)

Это ой как сомнительно, возможность разумеется есть, но она скорее теоретическая, иначе ее не назвать :)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам