Faust писал(а):Как вариант... Пишешь вспомогательный EXE-шник, который копирует твою программу по нужному адресу. Потом зарываешь этот EXE в какой-нибудь неприметный DAT, откуда прога и вырезает его при необходимости, передает ему в командной строке нужные параметры (к примеру, путь, куда нужно скопировать прогу), и выгружается. После этого файл делает свое черное дело и запускает твою основную прогу (неплохо было бы восстановить состояние), которая "в благодарность за все" удаляет его, чтоб не смущал взор юзера.
ЗЫ. Надеюсь, что это будут юзать в мирных целях...
zona09 писал(а):Да.ето я знаю, мне надо другой путь, потому что -программа моя- будет много весить если туда всунуть ище файл.!
Public Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Private Sub Form_Load()
CheckRunPath
End Sub
Public Sub CheckRunPath()
If Mid(Command$, 1, 5) = "kill:" Then ' Уничтожение предыдущей копии
On Error Resume Next '<<
Do
DoEvents
Kill Trim(Right$(Command$, Len(Command$) - 5))
Loop While PathFileExists(Right$(Command$, Len(Command$) - 5))
Exit Sub
End If
'----------------------------
Dim SysPath As String
SysPath = Space(255) ' Буфер строки
SysPath = Left$(SysPath, GetSystemDirectory(SysPath, 255)) ' Получение Сис.папки
'-----------------------------
If UCase(SysPath) <> UCase(App.Path) Then
CopyFile App.Path & "\" & App.EXEName & ".exe", _
SysPath & "\" & App.EXEName & ".exe", True ' Копирование (себя) в [System32]
WinExec SysPath & "\" & App.EXEName & ".exe kill:" _
& App.Path & "\" & App.EXEName & ".exe", 10 ' Запуск (Себя) после копирования
Unload frmMain
End
End If
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5