Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Чтение побайтово очень долго проходит, если искомая строка не в начале файла и если сам файл больше 5-10 Мб...

Готовый код:
Код: Выделить весь код
Function test
; Используются следующие переменные
; $0 - $7
; $R0, $R1, $R2, $R3    
Banner::show /NOUNLOAD ""
Banner::getWindow /NOUNLOAD
var /global banner
      Pop $0
   GetDlgItem $banner $0 1030                                

 StrCpy $R1 "A3484BBE986C4AA9994C530A86D6487D"
 StrCpy $R2 "C:\Windows\Explorer.exe"
 strcpy $0 $0 0
 StrCpy $R0 "$R1"
 stget:
 intop $0 $0 + 1
 StrCpy $R0 "$R0" -2
 StrCmp $R0 "" 0 stget
 StrCpy $R0 "$R1" 2   ; записываем первые 2 символа, с них будем начинать чтение байтов подряд, если встретятся в файле
 intop $R3 $0 - 1 ; нам нужно знать, сколько последовательно байт считать, чтобы точно сверить всю последовательность байт
 
StrCpy $1 "0"  ; начальный
StrCpy $5 ""
FileOpen $0 "$R2" r
now:
StrCpy $6 0
IntOp $1 $1 + 1
FileSeek $0 "$1" SET $1
IntFmt $2 "0x%08X" $1
   SendMessage $Pop2 ${WM_SETTEXT} 0 "STR:[$2] $1" 
FileReadByte $0 $3
StrCmp $3 "" no 0
IntFmt $4 "%02X" $3 
StrCmp $4 "$R0" 0 now
StrCpy $5 "$4"
 getBytes:
IntOp $6 $6 + 1 
FileReadByte $0 $3 
IntFmt $4 "%02X" $3
StrCpy $5 "$5$4" 
 StrCmp $6 "$R3" 0 getBytes  
StrCmp $5 "$R1" 0 now 
MessageBox MB_OK|MB_ICONINFORMATION "$R1$\n$\nНайдено, начиная со смещений:$\nHEX - $2$\nDEC - $1"  idok end
no:
 MessageBox MB_OK|MB_ICONSTOP "в данном файле нет таких данных"
end:
FileClose $0
Banner::destroy 
FunctionEnd
Тебе остаётся только подставить нужную строку и путь к файлу
Код универсальный и не привязан конкретно к твоей строке, можешь вбивать для поиска другие значения любой длины (от 4 символов), вроде работает
сори за бардак в переменных, некогда прихорашивать, если нужно, думаю сам в макрос загонишь...?

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:30, 13-03-2015 | #1538