Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Wkompilowanie textu w *.exe - ODPOWIEDŹ
mikmas
From Łódź Stadt




Typ: neutral
Postów: 772
Zarejestrowany: Apr 2003
Wkompilowanie textu w *.exe - ODPOWIEDŹ

Gdzieś widziałem post, w którym gość pytał się jak to zrobić. No więc se teraz usiadłem, włączyłem VB i notatnika i zacząłem experymentować.

Włącz VB, nowy projekt i wpisz najlepiej w Form_Load:

me.caption=loadresstring(101)

Wejdź w "VB Resource Editor", a następnie kliknij na "Edit String Tables...". Stwórz nowy wpis np. "Mikmas master" (musi być bez polskich liter). Zapisz i zrób z tego exeka. Teraz otwórz drugi projekt, wstaw moduł i wpisz:

Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long

Function BigOpen(Path As String) As String
    Dim Inp As Long
    Inp = FreeFile
    BigOpen = String(GetInfoF(Path), Chr(0))
    Open Path For Binary As Inp
    Get Inp, , BigOpen
    Close #1
End Function

Function GetInfoF(FilePath As String) As Long
    Dim Pointer As Long, sizeofthefile As Long
    Pointer = lOpen(FilePath, OF_READ)
    sizeofthefile = GetFileSize(Pointer, lpFSHigh)
    GetInfoF = sizeofthefile
    lclose Pointer
End Function

Sub Ingerent(Sciezka As String, Text As String, ZmienNa As String)
    Dim Modify As String, Temp As String, DB As long
    If Len(Text) < Len(ZmienNa) Then MsgBox "Text do zamiany musi być większy niż text na jaki ma zostać zmieniony", vbCritical: Exit Sub
    Modify = BigOpen(Sciezka)
    Temp = Modify
    DB = InStr(1, Temp, Separate(Text), vbTextCompare) - 1
    If DB = -1 Then MsgBox "Nie ma takiego textu w tym exeku", vbCritical: Exit Sub
    Modify = Left(Modify, DB) & Separate(ZmienNa & String(Len(Text) - Len(ZmienNa), " ")
    Modify = Modify & Right(Temp, Len(Temp) - Len(Modify))
    Kill Sciezka
    Open Sciezka For Binary As #1
    Put #1, , Modify
    Close #1
    MsgBox "Text zmieniony", vbInformation
End Sub

Function Separate(What As String) As String
    Dim I As Byte
    For I = 1 To Len(What)
        Separate = Separate & Mid(What, I, 1) & Chr(0)
    Next
End Function


Użycie:


Ingerent [ścieżka dostępu do pliku *.exe],[text, jaki wpisałeś w resource editorze (w moim przypadku - Mikmas master) - wielkosc liter nie jest ważna],[Na co zmienić (BEZ POLSKICH LITER!)]

Ten sposób jest przydatny, jak chcemy, żeby jakieś informacje zostały na trwałe w exeku. Dzięki temu sposobowi można np. zmienić ustawienia naszego programu, od których jest programowo zależny z poziomu innego programu.

[Post edytowany dnia 25-02-2005 03:56 przez mikmas]


_____________________________________________
4C;65;70;69;65;6A;20;62;79;9C;20;73;69;EA;20;
62;61;72;64;7A;69;65;6A;20;73;6B;6F;6E;63;65;
6E;74;72;6F;77;61;B3;20;6E;61;20;6F;64;70;6F;
77;69;65;64;7A;69;2C;20;61;20;6E;69;65;20;6E;
61;20;72;6F;7A;73;7A;79;66;72;6F;77;79;77;61;
6E;69;75;20;3A;50

25-02-2005 03:38
Pokaż profil mikmas  Wyślij email do mikmas   Odwiedź stronę mikmas       3632553
Wszystkich odpowiedzi: 0 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1