下载到Guitar Pro 6工作目录,运行GPCore_To_GBK.exe就可以 修改搜索速度
下载工具
include \masm32\include\masm32rt.inc
comment * -----------------------------------------------------
GPCore.dll->49 53 4F 2D 38 38 35 39 2D 31
47 42 4B 00 00 00 00 00 00 00
ISO-8859-1->GBK ver 2.0
Use Quick Search engine
----------------------------------------------------- *
.data
fname db "GPCore.dll",0
fbakname db "GPCore.dll.bak",0
findStr db "ISO-8859-1",0
fixData db 47H,42H,4BH,00,00,00,00,00,00,00 ;10
findPOS dw 0
.code
start:
call main
exit
main proc
call openGPCore
ret
main endp
openGPCore proc
LOCAL hFile :DWORD
LOCAL hBakFile :DWORD
LOCAL dSize :DWORD
LOCAL hMem :DWORD
.if rv(exist,offset fname) != 0
mov hFile, fopen(offset fname)
.else
print "not find "
print offset fname
ret
.endif
mov dSize, fseek(hFile,0,FILE_END)
mov hMem, alloc(dSize)
mov eax , fseek(hFile,0,FILE_BEGIN)
mov eax , fread(hFile,hMem,dSize)
mov dword ptr [findPOS] , 0
;----find ISO-8859-1
mov ecx, dSize
push ecx
mov edx, hMem
push edx
mov eax, 10
push eax
mov ecx, offset findStr
push ecx
;pat patlen textt texttlen
call qs
;printf ("%d",dword ptr [findPOS])
.if dword ptr [findPOS] == 0
print "Not find "
print offset findStr,13,10
.else
;backup file to GPCore.dll.bak
mov hBakFile, fcreate( offset fbakname )
mov eax , fwrite( hBakFile, hMem, dSize)
fclose hBakFile
;fix to GBK
mov eax , fseek(hFile,dword ptr [findPOS],FILE_BEGIN)
mov eax , fwrite( hFile, offset fixData, 10)
print "Fix "
print offset fname
print " success.",13,10
.endif
fclose hFile
free hMem
ret
openGPCore endp
OUTPUT proc
mov eax,dword ptr [esp+4]
mov dword ptr [findPOS] , eax
ret
OUTPUT endp
preQsBc proc
push ebp
mov ebp,dword ptr [esp+10h]
push esi
mov esi,dword ptr [esp+10h]
push edi
mov ecx,100h
lea eax,[esi+1]
mov edi,ebp
rep stos dword ptr es:[edi]
xor eax,eax
test esi,esi
jle preQsBc1
mov edi,dword ptr [esp+10h]
mov ecx,esi
preQsBc2:
xor edx,edx
mov dl,byte ptr [eax+edi]
inc eax
mov dword ptr [ebp+edx*4],ecx
dec ecx
cmp eax,esi
jl preQsBc2
preQsBc1:
pop edi
pop esi
pop ebp
ret
preQsBc endp
qs proc
sub esp,404h
mov ecx,dword ptr [esp+408h]
push ebx
push ebp
mov ebp,dword ptr [esp+414h]
lea eax,[esp+0Ch]
push eax
push ebp
push ecx
call preQsBc
mov eax,dword ptr [esp+428h]
add esp,0Ch
xor ebx,ebx
sub eax,ebp
mov dword ptr [esp+8],eax
js qs1
mov edx,dword ptr [esp+418h]
push esi
push edi
qs3:
mov esi,dword ptr [esp+418h]
mov ecx,ebp
lea edi,[ebx+edx]
xor eax,eax
repe cmps byte ptr [esi],byte ptr es:[edi]
jne qs2
push ebx
call OUTPUT
mov edx,dword ptr [esp+424h]
add esp,4
qs2:
lea eax,[edx+ebp]
xor ecx,ecx
mov cl,byte ptr [eax+ebx]
mov eax,dword ptr [esp+10h]
add ebx,dword ptr [esp+ecx*4+14h]
cmp ebx,eax
jle qs3
pop edi
pop esi
qs1:
pop ebp
pop ebx
add esp,404h
ret
qs endp
end start
下载源码