Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как записать данные в exe ресурс??? Добавлено: 15.07.07 19:18  

Автор вопроса:  mannaz
Братья по разуму помогите! Как заделать так чтоб можно была редактировать ресурсы в откомпилированной exe! Например у меня есть exe в нём есть ресурсы Со строками! Как мне изменить значения строк! Ну например строка 101=”ПАПА” А я хочу поменять чтоб была так 101=” мама “! Можно ли это?

Ответить

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

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 15.07.07 19:31
есть API.. на готовые фции

' <&#204;&#206;&#196;&#211;&#203;&#220; &#196;&#203;&#223; &#207;&#208;&#206;&#195;&#208;&#192;&#204;&#204;&#205;&#206;&#195;&#206; &#215;&#210;&#197;&#205;&#200;&#223;/&#199;&#192;&#207;&#200;&#209;&#200; &#208;&#197;&#209;&#211;&#208;&#209;&#206;&#194;         >|
'                                                          |
' = = = = = = = M A D E   B Y   H A C K E R = = = = = =    |
'         icq: 334479038, mail: no_detect@mail.ru          |
'==========================================================|
Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function FindResourceEx Lib "kernel32" Alias "FindResourceExA" (ByVal hModule As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function LockResource Lib "kernel32" (ByVal hResData As Long) As Long
Private Declare Function SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function LoadResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Sub WriteRES(sFile As String, sData As String, sType As String, sName As String)
    Dim h As Long
    h = BeginUpdateResource(sFile, 0)
    Call UpdateResource(h, sType, sName, 1049, ByVal sData, Len(sData)) '1049 - &#255;&#231;&#251;&#234;
    Call EndUpdateResource(h, 0)
End Sub

Public Function ReadRES(sFile As String, sType As String, sName As String) As String
    Dim txt As String
    Dim hgRes As Long
    hLib = LoadLibrary(sFile)
    hRes = FindResourceEx(hLib, ByVal sType, ByVal sName, 1049)
    hLRes = LoadResource(hLib, hRes)
    hgRes = LockResource(hLRes)
    lenRes = SizeofResource(hLib, hRes)
    txt = Space(lenRes)
    CopyMemory ByVal txt, ByVal hgRes, lenRes
    FreeLibrary hLib
    ReadRES = txt
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Крест



Вопросов: 4
Ответов: 37
 Профиль | | #2 Добавлено: 15.07.07 21:44
Форум - VBA

Вечная проблема начинающих. :)

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 15.07.07 21:51
По просьбе трудящихся:

Записать:
Call WriteRES ("C:\Windows\Notepad.exe", "lalalalala", "1049", "mystr1";)


Прочитать:
Msgbox ReadRES ("C:\Windows\Notepad.exe", "1049", "mystr1";)

P.S. При записи exe'шник не должен быть запущен. Читать можно и с запущенного.

Ответить

Номер ответа: 4
Автор ответа:
 Крест



Вопросов: 4
Ответов: 37
 Профиль | | #4 Добавлено: 15.07.07 22:52
Dim Path As String
Dim Last As String
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
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
Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function FindResourceEx Lib "kernel32" Alias "FindResourceExA" (ByVal hModule As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function LockResource Lib "kernel32" (ByVal hResData As Long) As Long
Private Declare Function SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function LoadResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Dim myrom As String
Public Sub WriteRES(sFile As String, sData As String, sType As String, sName As String)
    Dim h As Long
    h = BeginUpdateResource(sFile, 0)
    Call UpdateResource(h, sType, sName, 1049, ByVal sData, Len(sData)) '1049 - &#255;&#231;&#251;&#234;
    Call EndUpdateResource(h, 0)
End Sub

Public Function ReadRES(sFile As String, sType As String, sName As String) As String
    Dim txt As String
    Dim hgRes As Long
    hLib = LoadLibrary(sFile)
    hRes = FindResourceEx(hLib, ByVal sType, ByVal sName, 1049)
    hLRes = LoadResource(hLib, hRes)
    hgRes = LockResource(hLRes)
    lenRes = SizeofResource(hLib, hRes)
    txt = Space(lenRes)
    CopyMemory ByVal txt, ByVal hgRes, lenRes
    FreeLibrary hLib
    ReadRES = txt
End Function
Private Sub Command1_Click()
    Dim txt As String
      Call WriteRES("c:\regedit.exe", "docdcd", "TEXT", "2";)
             txt$ = ReadRES("c:\regedit.exe", "TEXT", "2";)
             MsgBox txt
End Sub
Private Sub Command2_Click()

Open "c:\windows\regedit.exe" For Binary As #1
myrom = Space(LOF(1))
Get #1, , myrom
Close #1
Call WriteRES("c:\regedit.exe", myrom, "TEXT", "2";)
  txt$ = ReadRES("c:\regedit.exe", "TEXT", "2";)
  MsgBox Len(txt)
  Open "d:\doc.exe" For Output As #1
Print #1, txt
Close #1
End Sub

вот тут все работает.

Ответить

Номер ответа: 5
Автор ответа:
 mannaz



Вопросов: 1
Ответов: 4
 Профиль | | #5 Добавлено: 17.07.07 14:31
Лажа это всё! Оно не подходит мне нужно чтоб считывала команда LoadResString а она не работает! Если кто знает то киньте!

Ответить

Номер ответа: 6
Автор ответа:
 mannaz



Вопросов: 1
Ответов: 4
 Профиль | | #6 Добавлено: 17.07.07 14:32
Лажа это всё! Оно не подходит мне нужно чтоб считывала команда LoadResString а она не работает! Если кто знает то киньте!

Ответить

Номер ответа: 7
Автор ответа:
 Крест



Вопросов: 4
Ответов: 37
 Профиль | | #7 Добавлено: 17.07.07 18:23
Где лажа?Просто разберись нормально.

Ответить

Номер ответа: 8
Автор ответа:
 mannaz



Вопросов: 1
Ответов: 4
 Профиль | | #8 Добавлено: 19.07.07 14:18
А ты сам попробуй воспользоваться LoadResString а потом скажешь как прокатила! А твой винапи не всех будет! Винапи я то запишу а вот как считать! Меня винапи не устаревает!

Ответить

Номер ответа: 9
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #9
Добавлено: 19.07.07 14:48
Меня винапи не устаревает!

Тогда тебе остается переходить на nix'ы, т.к. твоя LoadResString - это оболочка тех же Api. Разберись для начала с тем, что тебе дали. Спроси народ, что не понятно. А делать такие заявления надо обосновано, кто тебя знает, как ты тестировал пример?

Ответить

Номер ответа: 10
Автор ответа:
 mannaz



Вопросов: 1
Ответов: 4
 Профиль | | #10 Добавлено: 20.07.07 04:37
Я создаю два проекта! В адном пишу чтоб он запасовал в другой а тот в который записывалась пишу так text1.text=LoadResString(100) она пишет что не может найти! Мне проста надо чтоб в готовый exe записывались разные параметры чтоб мог каждый подстраивать для себя но мне нужно чтоб пахала на всех версия винды! даже на висте хотя на висте не идут куча приложений для XP! ведешь в чём проблема! А мне нада зделать чтоб везде работала! А в друг той функции винапи не будет для чтения и все прога не будет похать! Если можешь помочь то спасиба! Извени за мои слова! Я был не прав! Что заделал такие заявления и не подумавши!

Ответить

Номер ответа: 11
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #11 Добавлено: 20.07.07 21:23
mannaz, не кричи, приятнее когда на тон ниже.. а то одни знаки восклицательные...

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

Ответить

Страница: 1 |

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



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