VIProductVersion 0.0.0.1
VIAddVersionKey /LANG=1046 "LegalCopyright" "Papai Mark"
VIAddVersionKey /LANG=1046 "FileDescription" "Troca proxy automaticamente."
VIAddVersionKey /LANG=1046 "Compilado em:" "${__TIMESTAMP__}"
VIAddVersionKey /LANG=1046 "Programa :" "Proxy do Papai"
VIAddVersionKey /LANG=1046 "FileVersion" "${__DATE__}"
VIAddVersionKey /LANG=1046 "CompanyName" "INFARTE - Arte em Informática do Papai Mark"
#_________________________________________________________________________________________

OutFile "..\TrocarProxy.exe"
Name "Trocador de Proxies"
!include ${NSISDIR}\Include\WinMessages.nsh
LoadLanguageFile "D:\Roteiro\PORTUGUESEBR.NLF"
!include "FileFunc.nsh"
var hwnd
var ed
var lnk
var iepath
Icon pph.ico
setcompress off

ChangeUI all "default.exe"
#_________________________________________________________________________________________
Function .oninit
IfFileExists "$exedir\m.ini" +3
MessageBox MB_OK|MB_topmost|MB_Iconstop "Arquivo $exedir\m.ini foi perdido !!!$\rAbortando operações."
abort
ClearErrors
Execwait Clipboard.exe
IfErrors 0 +2
MessageBox MB_OK|MB_topmost|MB_Iconstop "O arquivo Clipboard.exe não foi encontrado.$\rA colagem deverá ser feita manualmente."
ReadRegStr $1 HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable"
ReadRegStr $2 HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer"
WriteIniStr "$exedir\m.ini" "Field 11" State $2
WriteIniStr "$exedir\m.ini" "Field 2" State $2
StrCmp $1 0 0 +3
WriteIniStr "$exedir\m.ini" "Field 9" Text "DESABILITADO"
GoTo +2
WriteIniStr "$exedir\m.ini" "Field 9" Text "<<  LIGADO  >>"
ReadIniStr $9 "$Exedir\Source\ProxyList.txt" "Edite aqui" "-->"
WriteIniStr "$exedir\m.ini" "Field 11" ListItems $9
ReadIniStr $9 "$Exedir\Source\Historico.txt" "Edite aqui" "-->"
WriteIniStr "$exedir\m.ini" "Field 17" ListItems $9
Sleep 200
ReadIniStr $9 "$exedir\m.ini" "Field 34" State
StrCmp $9 0 +2
WriteIniStr "$exedir\m.ini" "Field 35" flags "Notify"
FlushIni "$exedir\m.ini"

FunctionEnd

#_________________________________________________________________________________________

    Page custom ShowCustom LeaveCustom
    Function ShowCustom
    InstallOptions::initDialog /NOUNLOAD "$exedir\m.ini"
    Pop $hwnd
/*
GetDlgItem $1 $hwnd 1205
ToolTips::Classic "$1" "Desativa e sai." 0xffffee "0" "Arial" 9
GetDlgItem $1 $hwnd 1201
ToolTips::Classic $1 "Digite o proxy no formato, por exemplo, 200.0.1.64:8080. \
Se a caixa ficar vazia e branca, será usado o proxy padrão." 0xeeffff "0" "Arial" 8
*/
    Pop $0
    InstallOptions::show
    FunctionEnd
#_________________________________________________________________________________________
    Function LeaveCustom
    ReadINIStr $0 "$exedir\m.ini" "Settings" "State"
    StrCmp $0 0 Done
    StrCmp $0 4 Agendar
    StrCmp $0 5 DesAgenda
    StrCmp $0 6 Desativar
    StrCmp $0 10 UsarLista
    StrCmp $0 11 nada           ;Combobox proxy
    StrCmp $0 12 Editar
    StrCmp $0 13 Proxyfinder
    StrCmp $0 17 nada           ;Combobox http
    StrCmp $0 32 Rascunho
    StrCmp $0 33 Historico
    StrCmp $0 34 janela
    StrCmp $0 36 nada           ;Incluir link no Histórico
    StrCmp $0 37 OutrasJanelas
    StrCmp $0 39 Incluir
    StrCmp $0 40 HideIP
    StrCmp $0 43 Cook
    StrCmp $0 43 IETemp

    IETemp:
ReadIniStr $0 "$exedir\Source\Passo_HideIP.txt" "Passo do cache da internet" Passo
    StrCmp $0 "" 0 +3
    MessageBox MB_OK|MB_topmost|MB_Iconstop "Abra o arquivo $exedir\Source\Passo_HideIP.txt.$\rProcure a chave '' Passo do cache da internet '' e escreva o passo completo."
    GoTo noDelIE
    ReadINIStr $1 "$exedir\m.ini" "Field 3" "HWND"
    EnableWindow $1 0
    Delete "$0\*.*"
    RMDir /r "$0"
    CreateDirectory "$0"
    noDelIE:
    Abort

    Cook:
    Exec "$exedir\DeleCookie\Delecookie.exe"
    Abort

    HideIP:
    ReadIniStr $0 "$exedir\Source\Passo_HideIP.txt" "Escreva aqui o passo do HideIP ou de algum outro programa que desejar" Passo
    ClearErrors
    Exec "$0"
    IfErrors 0 +2
    MessageBox MB_OK|MB_topmost|MB_Iconstop "Programa não encontrado.   Abra o arquivo :$\r$exedir\source\Passo_HideIP.txt$\re escreva o passo completo do HideIP ou de qualquer outro progama a ser executado neste botão."
    ClearErrors
    Abort

    Incluir:
    Banner::Show /nounload "Incluindo... "
    ReadRegStr $0 HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer"
    ReadIniStr $9 "$exedir\m.ini" "Field 11" ListItems
    WriteIniStr "$Exedir\Source\ProxyList.txt" "Mantenha a barra vertical entre os proxies, sem espaços. As alterações terão efeito ao reiniciar o programa." "NÃO QUEBRE A PÁGINA OU A LINHA !!!  Use linha corrida." x
    WriteIniStr "$Exedir\Source\ProxyList.txt" "Edite aqui" "-->" "$0|$9"
    FlushINI "$Exedir\Source\ProxyList.txt"
    Sleep 1500
    banner::destroy
    abort

    OutrasJanelas:
    ExecShell open "$exedir\Source\Fechar_janelas.txt"
    StrCpy $ed 1
    quit
    abort

    Historico:
    ReadIniStr $9 "$exedir\m.ini" "Field 17" ListItems
    WriteIniStr "$Exedir\Source\Historico.txt" "Mantenha a barra vertical ( | ) entre os proxies, sem espaços. As alterações terão efeito ao reiniciar o programa." "NÃO QUEBRE A PÁGINA OU A LINHA !!!  Use linha corrida." x
    WriteIniStr "$Exedir\Source\Historico.txt" "Edite aqui" "-->" $9
    FlushINI "$Exedir\Source\Historico.txt"
    ExecShell open "$Exedir\Source\Historico.txt"
    StrCpy $ed 1
    quit
    abort

    Rascunho:
    ExecShell open "$exedir\Source\ips.txt"
    abort

    janela:
    ReadINIStr $0 "$exedir\m.ini" "Field 34" "State"
    ReadINIStr $1 "$exedir\m.ini" "Field 35" "HWND"
    EnableWindow $1 $0
    abort

    UsarLista:
    ReadINIStr $0 "$exedir\m.ini" "Field 10" "State"
    ReadINIStr $1 "$exedir\m.ini" "Field 2" "HWND"
    ReadINIStr $2 "$exedir\m.ini" "Field 11" "HWND"
    EnableWindow $2 $0
    StrCmp $0 1 0 +3
    WriteINIStr "$exedir\m.ini" "Field 11" "Flags" "Notify"
    Goto +2
    WriteINIStr "$exedir\m.ini" "Field 11" "Flags" "Notify|DISABLED"
    StrCmp $0 0 0 +3
    StrCpy $0 1
    Goto +2
    StrCpy $0 0
    EnableWindow $1 $0
    StrCmp $0 1 0 +3
    WriteINIStr "$exedir\m.ini" "Field 2" "Flags" " "
    Goto +2
    WriteINIStr "$exedir\m.ini" "Field 2" "Flags" "DISABLED"
    Abort

    nada:
    abort

    Desativar:
    ReadRegStr $1 HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable"
    StrCmp $1 "0" 0 +3
    MessageBox MB_OK|MB_topmost|MB_IconExclamation "Proxy já estava desativado !"
    abort
    WriteRegDWORD HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 0
    WriteRegDWORD HKLM "Config\0001\Software\Microsoft\windows\CurrentVersion\Internet Settings" "ProxyEnable" 0
    WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 0
    Sleep 100
    Execwait '$exedir\Source\fechar.exe win redraw ititle Internet'
    NSISdl::download /Timeout=10 /NOIEPROXY " "
    StrCpy $ed 1
    quit
    abort

    Editar:
    CreateDirectory "$exedir\Bkup"
    CopyFiles "$exedir\m.ini" "$exedir\Bkup\m.ini"
    ReadIniStr $9 "$exedir\m.ini" "Field 11" ListItems
    WriteIniStr "$Exedir\Source\ProxyList.txt" "Mantenha a barra vertical entre os proxies, sem espaços. As alterações terão efeito ao reiniciar o programa." "NÃO QUEBRE A PÁGINA OU A LINHA !!!  Use linha corrida." x
    WriteIniStr "$Exedir\Source\ProxyList.txt" "Edite aqui" "-->" $9
    FlushINI "$Exedir\Source\ProxyList.txt"
    ExecShell open "$Exedir\Source\ProxyList.txt"
    StrCpy $ed 1
    quit
    abort

    Agendar:
    StrCpy $ed 1
    Exec "$exedir\Agendador.exe"
    quit
    Abort

    DesAgenda:
    ExecWait '$exedir\Source\Fechar.exe killprocess "$exedir\Source\timer.exe"'
    Abort

    Proxyfinder:
    Exec "$exedir\Pfinder\ProxyFinder.exe"
    StrCpy $ed 1
    quit
    abort

    Done:
    FunctionEnd
#_________________________________________________________________________________________
Page instfiles ;______________________________________________________________________
#_________________________________________________________________________________________

Function .onUserAbort
ReadIniStr $3 "$exedir\Source\undo.ini" "1" 1
WriteRegStr HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" $3
ReadIniStr $3 "$exedir\Source\undo.ini" "1" 2
WriteRegStr HKLM "Config\0001\Software\Microsoft\windows\CurrentVersion\Internet Settings" "ProxyEnable" $3
ReadIniStr $3 "$exedir\Source\undo.ini" "1" 3
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" $3
ReadIniStr $3 "$exedir\Source\undo.ini" "1" 4
WriteRegStr HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer" $3
ReadIniStr $3 "$exedir\Source\undo.ini" "1" 5
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer" $3
WriteINIStr "$exedir\m.ini" "Field 41" Text ""
FunctionEnd

Section
SetSilent silent
Hidewindow

ReadINIStr $lnk "$exedir\m.ini" "Field 17" "State"
ReadRegStr $iepath HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE" ""
StrCmp $lnk "" 0 +3
StrCpy $iepath ""
GoTo tinhalink
ReadIniStr $0 "$exedir\m.ini" "Field 36" "State"
StrCmp $0 0 tinhalink
ReadIniStr $0 "$exedir\m.ini" "Field 17" "ListItems"
WriteIniStr "$Exedir\Source\Historico.txt" "Edite aqui" "-->" "$lnk|$0"
WriteIniStr "$exedir\m.ini" "Field 36" "State" 0
tinhalink:

################;Corrigir checkbox de uso da lista
ReadINIStr $0 "$exedir\m.ini" "Field 10" "State"
StrCmp $0 0 0 corrig2
WriteINIStr "$exedir\m.ini" "Field 2" "Flags" " "
WriteINIStr "$exedir\m.ini" "Field 11" "Flags" "Notify|DISABLED"
GoTo fimcorrig
corrig2:
WriteINIStr "$exedir\m.ini" "Field 2" "Flags" "DISABLED"
WriteINIStr "$exedir\m.ini" "Field 11" "Flags" "Notify"
fimcorrig:

################;Editar a lista ou abrir o proxy finder
StrCmp $ed 1 0 +2
GoTo NaoAnotar

################;Fechar a janela ativa
ReadIniStr $0 "$exedir\m.ini" "Field 34" "state"
StrCmp $0 0 semfecho
ReadIniStr $0 "$exedir\m.ini" "Field 35" "state"
StrCmp $0 "" semfecho
Execwait "$exedir\Source\fechar.exe win close ititle $0" 
################Fechar a janela ativa da lista
StrCpy $8 1
IniFecho:
ReadIniStr $7 "$exedir\Source\Fechar_janelas.txt" Lista $8
Strcmp $7 "" semfecho
Execwait '$exedir\Source\fechar.exe win close ititle "$7"'
IntOp $8 $8 + 1
GoTo IniFecho
semfecho:

################;Usar proxy da lista
ReadIniStr $8 "$exedir\m.ini" "Field 10" State ;Checkbox-Usar Proxy desta Lista :
StrCmp $8 1 0 semlista
ReadIniStr $8 "$exedir\m.ini" "Field 11" State ;Combobox
StrCmp $8 "" 0 +3
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 0
GoTo +3
WriteRegDWORD HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 1
WriteRegDWORD HKLM "Config\0001\Software\Microsoft\windows\CurrentVersion\Internet Settings" "ProxyEnable" 1
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 1
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer" "$8"
WriteRegStr HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer" "$8"
Sleep 500
Exec '"$iepath" "$lnk"'
GoTo NaoAnotar

################ Trocar o proxy Manualmente
semlista:
ReadIniStr $2 "$exedir\m.ini" "Field 2" State ;colar
StrCmp $2 "" 0 +3
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 0
GoTo +6
WriteRegDWORD HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 1
WriteRegDWORD HKLM "Config\0001\Software\Microsoft\windows\CurrentVersion\Internet Settings" "ProxyEnable" 1
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyEnable" 1
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer" "$2"
WriteRegStr HKU ".DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings" "ProxyServer" "$2"
Sleep 500
Exec '"$iepath" "$lnk"'

NaoAnotar:
SetAutoClose Tru