Всунуть файл в программу - VB

Узнай цену своей работы

Формулировка задачи:

облазил весь интернет но нигде не встретился с ответом. Возможно ли всунуть файл ini в компилированый ехе файл и читать с него данные

Решение задачи: «Всунуть файл в программу»

textual
Листинг программы
Public Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Sub Main()
 
 CMD$ = Command$  ' командная строка
 HomeDir$ = App.Path ' директория запуска
 Self$ = App.EXEName ' имя exe
 Buf$ = String$(260, Chr$(0)) ' получаем 
 L& = GetTempPath(260, Buf$) ' временную 
 TmpDir$ = Left$(Buf$, L&) ' директорию
 
 If InStr(CMD$, "!") <> 0 Then '::: Запуск первого экземпляра
    ' копируем себя во временную директорию
    fi% = FreeFile
    Open HomeDir$ + "\" + Self$ + ".exe" For Binary Access Read As #fi%
    fo% = FreeFile
    Open TmpDir$ + "\" + Self$ + ".exe" For Binary Access Write As #fo%
    LL& = LOF(fi%)
    ZZ& = 0
    Do
       DD& = LL& - ZZ&
       If DD& >= 2048 Then
          Buf$ = Space$(2048)
       Else
          If DD& > 0 Then
             Buf$ = Space$(DD&)
          Else
             Exit Do
          End If
       End If
       Get #fi%, , Buf$
       Put #fo%, , Buf$
       If Len(Buf$) < 2048 Then Exit Do
       ZZ& = ZZ& + 2048
    Loop
    Close #fi%
    '::: Допишем в хвост файла что-нибудь...
    Tmp$ = "Привет!!!"
    Put #fo%, , Tmp$
    Put #fo%, , Tmp$
    Put #fo%, , Tmp$
     Close #fo%
    
    '::: Запускаем второй экземпляр из временной директории
 
    ' строим cmd-файл
     
    fo% = FreeFile
    Open TmpDir$ + "\St.cmd" For Output As #fo%
    Print #fo%, TmpDir$ + Self$ + ".exe " + HomeDir$
    Close #fo%
     
    Shell TmpDir$ + "\St.cmd"  ' запускаем cmd
     
 Else  '::: Запуск второго экземпляра
    TargDir$ = CMD$  ' имя целевой директории
    c& = 0
    Do
      fo% = FreeFile
      On Error Resume Next
      Open TargDir$ + "\" + Self$ + ".exe" For Binary Access Write As #fo%
      If Err.Number = 0 Then
         Close #fo%
         On Error GoTo 0
         Exit Do
      Else
         On Error GoTo 0
         Sleep 1000
         c& = c& + 1
         If c& > 10 Then
            MsgBox "Не дождался освобождения файла..."
            End
         End If
      End If
    Loop
    ' копируем
    FileCopy HomeDir$ + "\" + Self$ + ".exe", TargDir$ + "\" + Self$ + ".exe"
    MsgBox "OK!"
 End If
End Sub

ИИ поможет Вам:


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

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы