Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

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

 

  Вопрос: Автозагрузка Добавлено: 16.03.07 20:24  

Автор вопроса:  20vek
Вопрос такого рода, есть главная программа, и есть вспомогательная, которая отслеживает
изменения в LOG файле. и если изменения есть, то должна просто при запуске Windows предупредить, если нет то END.
Варианты решения.
1. В инсталляторе файла главной программы создать ярлык для автозагрузки вспомогательной и одновременно в папке самой программы на то случай если из
автозагрузки удалят, а потом захотят вернуть, можно скопировать вставить.
2. Прописать в реестре с возможность удаления и восстановления. НО есть один
нюанс при удалении программы ветка останется. (или фиг с ним юзером)
3. Создавать ярлык программно, но просто жаль вспомогательную программку она всего
25 кб. Да и не знаю как, что нарыл в инете то Delfi, то не до конца объяснено.

Третий вариант конечно предпочтительный, но…
Что скажите, господа хорошие

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 16.03.07 20:42
Не понял, а чего не получается?

Ответить

Номер ответа: 2
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #2
Добавлено: 16.03.07 20:47
Прописать в реестре с возможность удаления и восстановления. НО есть один
нюанс при удалении программы ветка останется. (или фиг с ним юзером)

- Нормальный вариант, только я не понял почему после удаления отсанется ветка. Что мешает удалить ветку?

Ответить

Номер ответа: 3
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #3 Добавлено: 16.03.07 20:50
Все получается кроме третьего пункта.
И как же все та-ки лучше?
Третий пункт есть код, но не врубаюсь.
ДЛя общеобразования не помешало бы.

Ответить

Номер ответа: 4
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #4 Добавлено: 16.03.07 20:52
Пост2 - это будет сделанно програмно и значит в Unistal забито не будет

Ответить

Номер ответа: 5
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #5
Добавлено: 16.03.07 20:54
пусть твоя прога главная при запуске записивает в реестр автозагрузку вспогатильной.
Или пускай твоя вспогательная прога каждих пару секунд проверяет есть ли запись в автозагрузке для нее если нет тогда записиваем. Юзер не сможет удалить із автозагрузки ее.Ну разумеетса если не удалит і не вирубит комп з резетки сразу.
Я когда так вірь создавал(уже не создаю прозьба сразу не накидиватса: а ти вірусописатель хренов за таких как ти ми деньгі Kasperskomu башляем(Fever ето я Doc. Помниш свою статю "Про DOCa":) ))
Sorry 20vek за отклонения от теми
А в втором решений ти говоришь про какую ту ветку так если ти будеш записиватса у
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
так никто ету ветку удалять не будет целеком
Или ти хочеш закидивать свою прогу у Пуск\все програми\Автозагрузка\-ето фігня вопервих прийдеться узнавать к ней адрес(на каждом компе другая папка) вовторих создавть ярлик лучше регістер половина юзеров і не знает о его существовании.
Настрочил ?

Ответить

Номер ответа: 6
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #6 Добавлено: 16.03.07 21:03
пост 5
1.Програма для людей и я янехочу чтобы она что то
отслеживала по таймеру. ЕЕ задача если TRue then
предупредить Else end. И память не загружать.
2.Адрес и все такое это, элементарно.
А автозагрузка это какая ни на есть демократия.

Ответить

Номер ответа: 7
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #7
Добавлено: 16.03.07 21:08
Твое право.Ти создатель
Но я б такой демократии не давал.
.Програма для людей и я янехочу чтобы она что то
отслеживала по таймеру. ЕЕ задача если TRue then
предупредить Else end. И память не загружать.

Да но если ети люди случайно удалят автозагрузку
і твоя прога не сможет нормально работать?

Ответить

Номер ответа: 8
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #8 Добавлено: 16.03.07 21:11
Вспомогательная да, а главная будет и пункт в меню типа "поставить в автозагрузку?" появится.

Ответить

Номер ответа: 9
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #9
Добавлено: 16.03.07 21:14
А зачем тебе за LOG смотреть

Ответить

Номер ответа: 10
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #10 Добавлено: 16.03.07 21:16
А зачем тебе за LOG смотреть

Имениник там, хочу предупредить, где поужинать на халяву.

Ответить

Номер ответа: 11
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #11
Добавлено: 16.03.07 21:18
А ти не зможеш предупридить потому щто какой то ламер удалит автозагрузку.Все в твоих руках

Ответить

Номер ответа: 12
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #12 Добавлено: 16.03.07 21:23
А ти не зможеш предупридить потому щто какой то ламер удалит автозагрузку.Все в твоих руках

Его право.
Вообщем вижу ответы такие делай что знаешь, а другое ни ни.

Ответить

Номер ответа: 13
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #13
Добавлено: 16.03.07 21:25
Его право

ну а если вирь пошалит удалит автозагрузку іли прийдет брат малий і удалит і Хозяин компа не прийдет на какую нибудь встречу

Ответить

Номер ответа: 14
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #14 Добавлено: 16.03.07 21:34
Его компьютер и его проблемы, терпеть не могу сам
навязанных услуг. Лучшая программа которая работает с папки, это мое мнение.
Хозяин компа не прийдет на какую нибудь встречу

Анекдот;
Беларусская кулинарная книга <сто способов приготовления бульбы>
Русская 100 способов приготовления щей.
Еврейская 365 адресов где можно отобедать.
***************************
выводы сделаешь сам.

Ответить

Номер ответа: 15
Автор ответа:
 20vek



Вопросов: 10
Ответов: 71
 Профиль | | #15 Добавлено: 16.03.07 21:42
Это не Офф-топ ближе к телу.
Вот есть код и я его не понимаю, может просто,
кто-то допишет Command1_Click()и ярлык в папке авто загрузка.
Private Declare Function api_SHAddToRecentDocs Lib "shell32.dll" Alias _
"SHAddToRecentDocs" (ByVal dwFlags As Long, ByVal dwData As String) As Long
Private Declare Function api_SHGetSpecialFolderLocation Lib "shell32.dll" Alias _
"SHGetSpecialFolderLocation" (ByVal hwndOwner As Long, _
ByVal nFolder As Long, pidl As Long) As Long
Private Declare Function api_SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDList" (ByVal pidl As Long, ByVal sPath As String) As Long

Public Sub m_CreateShortcut(ScFolder As Variant, ScCaption As String, _
TargetPath As String, Optional ScParam As String, _
Optional StartFolder As String, Optional IcoNum As Integer, _
Optional IcoPath As String, Optional WindowMode As Integer)

'Константы для системных папок:
' 2 = Programs
' 7 = Startup
' 8 = RecentDocs
'16 = Desktop

'Полный путь к временному ярлыку, созданному в папке RecentDocs.
Dim Shortcut0 As String
Dim n0 As Integer 'текущая позиция считывания из файла Shortcut0.
Dim x0 As String * 1 'сюда считываются символы из файла Shortcut0.
Dim l0 As Long 'длина файла Shortcut0.
Dim Shortcut1 As String 'полный путь к создаваемому ярлыку.
Dim n1 As Integer 'позиция считывания в файле Shortcut1
Dim x1 As String * 1 'сюда считываются символы из файла Shortcut1.
Dim l1 As Long 'длина файла Shortcut1.

Dim T As Double
Dim p As Long
Dim i As Integer
Dim x As String
Dim y0 As String * 2

'проверяем параметр ScFolder - указывает целевую папку
If IsNumeric(ScFolder) Then
    ScFolder = p_GetSpecialFolder(CInt(ScFolder))
ElseIf Dir$(ScFolder, vbDirectory) = "" Then
    MsgBox "Указанная папка (" & ScFolder & ";) не существует!", _
    vbCritical, "Создание ярлыка"
Exit Sub
End If

'создаем временный ярлык в папке RecentDocs, используя путь к целевой папке.
If api_SHAddToRecentDocs(2, TargetPath) > 0 Then

'определяем полный путь к созданному временному ярлыку.
Shortcut0 = p_GetSpecialFolder(8) & "\" & p_File_Folder(TargetPath) & ".lnk"

'Ждем окончания процесса создания ярлыка.
T = Now()
Do Until (Dir$(Shortcut0) <> "";)
    If (Now() - T) > 0.00006 Then 'ждем 5 секунд
        If MsgBox("Создание ярлыка задерживается. Продолжить ожидание?", _
        vbQuestion + vbOKCancel, "Создание ярлыка";) <> vbOK Then
            Exit Sub
        Else
            T = Now()
        End If
    End If
Loop

'Открываем созданный файл врменного ярлыка для чтения.
n0 = FreeFile()
Open Shortcut0 For Binary Access Read As #n0
'ждем, пока файл будет корректно открыт.
Do Until LOF(n0) > 0
Loop
l0 = LOF(n0)

'открываем файл целевого ярлыка для записи
Shortcut1 = ScFolder & "\" & ScCaption & ".lnk"
n1 = FreeFile()
Open Shortcut1 For Binary Access Write As #n1

'Ищем последний байт, который нужно считать
p = (l0 - 4)
y0 = ""
Do Until (p <= 0) Or (y0 = vbNullChar & vbNullChar)
    Get #n0, p, y0
    p = p - 1
Loop
l1 = p + 2

'Копируем байты
For p = 1 To l1

    Get #n0, p, x0

    Select Case p
        Case 21 'путь к иконке, параметрам и командной строке ярлыка
            i = 3
            If StartFolder <> "" Then
                i = i + 16
            End If
            If ScParam <> "" Then
                i = i + 32
            End If
            If (IcoPath <> "";) Or (IcoNum > 0) Then
                i = i + 64
            End If
            x1 = Chr$(i)
        Case 57 'Индекс иконки
            x1 = Chr$(IcoNum)
        Case 61 'Оконный режим запуска
            x1 = Chr$(WindowMode)
        Case Else
            x1 = x0
    End Select

    Put #n1, p, x1

Next p

'Закрываем и удаляем файл временного ярлыка
Close #n0
Kill Shortcut0

'Добавляем иконку, параметры и командную строку в файл целевого ярлыка
x = ""
If StartFolder <> "" Then
    x = x & Chr$(Len(StartFolder)) & vbNullChar & StartFolder
End If
If ScParam <> "" Then
    x = x & Chr$(Len(ScParam)) & vbNullChar & ScParam
End If
If IcoPath = "" Then
    If IcoNum > 0 Then
        x = x & Chr$(Len(TargetPath)) & vbNullChar & TargetPath
    End If
Else
    x = x & Chr$(Len(IcoPath)) & vbNullChar & IcoPath
End If
x = x & String(4, vbNullChar)
Put #n1, l1 + 1, x

Close #n1

Else

    MsgBox "Ошибка создания ярлыка.", vbCritical, "Создание ярлыка"

End If

End Sub

Private Function p_GetSpecialFolder(CsIdl As Long) As String
'возвращаем полный путь к системной папке Windows.

Dim r As Long
Dim pidl As Long
Dim sPath As String

r = api_SHGetSpecialFolderLocation(Application.hWndAccessApp, CsIdl, pidl)

If r = 0 Then

sPath = Space$(260)
r = api_SHGetPathFromIDList(ByVal pidl, ByVal sPath)
If r Then
p_GetSpecialFolder = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
End If

End If

End Function

Private Function p_File_Folder(FullPath As String) As String
'возвращает короткое имя файла FullPath.

Dim i As Integer

p_File_Folder = FullPath
i = Len(FullPath)
Do Until i = 0
    If Mid$(FullPath, i, 1) = "\" Then
        p_File_Folder = Mid$(FullPath, i + 1)
        i = 0
    Else
        i = i - 1
    End If
Loop

End Function

Ответить

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

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



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