diff --git a/Source/CleanupRegistry.reg b/Source/CleanupRegistry.reg index d33e58e..ab894e1 100644 Binary files a/Source/CleanupRegistry.reg and b/Source/CleanupRegistry.reg differ diff --git a/Source/DisableDragAndDrop.reg b/Source/DisableDragAndDrop.reg deleted file mode 100644 index d0eb077..0000000 Binary files a/Source/DisableDragAndDrop.reg and /dev/null differ diff --git a/Source/EnableDragAndDrop.reg b/Source/EnableDragAndDrop.reg deleted file mode 100644 index 7f75e46..0000000 Binary files a/Source/EnableDragAndDrop.reg and /dev/null differ diff --git a/Source/Languages/Arabic.ini b/Source/Languages/Arabic.ini index 9d262da..b8d02cc 100644 --- a/Source/Languages/Arabic.ini +++ b/Source/Languages/Arabic.ini @@ -6,6 +6,7 @@ SETTINGS= EXIT=خروج HELP=مساعدة ABOUT=حول... +WARNING= COMMAND_LINE_OPTIONS=خيارات سطر الأوامر COMMAND_LINE_OPTIONS_TEXT=حظر الإنترنت:\n-b "App.exe" أو --block "App.exe"\n\nإلغاء الحظر:\n-u "App.exe" أو --unblock "App.exe"\n\nاستيراد القواعد:\n-i "Rules.fer" أو --import "Rules.fer"\n\nتصدير القواعد:\n-e "Rules.fer" أو --export "Rules.fer"\n\nالوضع الصامت:\n-s أو --silent APP_NAME=الاسم @@ -34,5 +35,7 @@ LAST_UPDATE=آخر تحديث: CONTEXT_MENU=قواعد جدار الحماية BLOCK_ACCESS=حظر الوصول إلى الإنترنت UNBLOCK_ACCESS=السماح بالوصول إلى الإنترنت +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=تطبيق CANCEL=إلغاء \ No newline at end of file diff --git a/Source/Languages/Chinese (Simplified).ini b/Source/Languages/Chinese (Simplified).ini index 585e3b5..af305c5 100644 --- a/Source/Languages/Chinese (Simplified).ini +++ b/Source/Languages/Chinese (Simplified).ini @@ -6,6 +6,7 @@ SETTINGS=设置 EXIT=退出 HELP=帮助 ABOUT=关于... +WARNING= COMMAND_LINE_OPTIONS=命令行选项 COMMAND_LINE_OPTIONS_TEXT=阻止网络:\n-b "App.exe" 或 --block "App.exe"\n\n解除阻止网络:\n-u "App.exe" 或 --unblock "App.exe"\n\n导入规则:\n-i "Rules.fer" 或 --import "Rules.fer"\n\n导出规则:\n-e "Rules.fer" 或 --export "Rules.fer"\n\n静默模式:\n-s 或 --silent APP_NAME=名称 @@ -35,5 +36,7 @@ CONTEXT_MENU=防火墙规则 BLOCK_ACCESS=阻止访问互联网 UNBLOCK_ACCESS=允许访问互联网 UNBLOCK_ACCESS_CONTEXT_MENU=在右键菜单中解除网络访问阻止 +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=应用 CANCEL=取消 \ No newline at end of file diff --git a/Source/Languages/Chinese (Traditional).ini b/Source/Languages/Chinese (Traditional).ini index 9c545bf..5d6d754 100644 --- a/Source/Languages/Chinese (Traditional).ini +++ b/Source/Languages/Chinese (Traditional).ini @@ -6,6 +6,7 @@ SETTINGS=設定 EXIT=退出 HELP=幫助 ABOUT=關於... +WARNING= COMMAND_LINE_OPTIONS=命令列選項 COMMAND_LINE_OPTIONS_TEXT=封鎖網路:\n-b "App.exe" 或 --block "App.exe"\n\n解除封鎖網路:\n-u "App.exe" 或 --unblock "App.exe"\n\n匯入規則:\n-i "Rules.fer" 或 --import "Rules.fer"\n\n匯出規則:\n-e "Rules.fer" 或 --export "Rules.fer"\n\n靜音模式:\n-s 或 --silent APP_NAME=名稱 @@ -35,5 +36,7 @@ CONTEXT_MENU=防火牆規則 BLOCK_ACCESS=阻止訪問互聯網 UNBLOCK_ACCESS=允許訪問互聯網 UNBLOCK_ACCESS_CONTEXT_MENU=在右鍵選單解除網路存取封鎖 +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=套用 CANCEL=取消 \ No newline at end of file diff --git a/Source/Languages/English.ini b/Source/Languages/English.ini index e3f7b2e..31d1ac7 100644 --- a/Source/Languages/English.ini +++ b/Source/Languages/English.ini @@ -6,6 +6,7 @@ SETTINGS=Settings EXIT=Exit HELP=Help ABOUT=About... +WARNING=Warning COMMAND_LINE_OPTIONS=Command Line Options COMMAND_LINE_OPTIONS_TEXT=Block internet:\n-b "App.exe" or --block "App.exe"\n\nUnblock internet:\n-u "App.exe" or --unblock "App.exe"\n\nImport rules:\n-i "Rules.fer" or --import "Rules.fer"\n\nExport rules:\n-e "Rules.fer" or --export "Rules.fer"\n\nSilent mode:\n-s or --silent APP_NAME=Name @@ -35,5 +36,7 @@ CONTEXT_MENU=Firewall rules BLOCK_ACCESS=Block internet access UNBLOCK_ACCESS=Unblock internet access UNBLOCK_ACCESS_CONTEXT_MENU=Unblock internet access in context menu +ENABLE_DRAG_AND_DROP=Enable support for drag and drop +DRAG_AND_DROP_WARNING=This option can have negative effects when it comes to security as it completely disables UAC prompts. Please proceed with caution! APPLY=Apply CANCEL=Cancel \ No newline at end of file diff --git a/Source/Languages/French.ini b/Source/Languages/French.ini index 39b940e..e1a688f 100644 --- a/Source/Languages/French.ini +++ b/Source/Languages/French.ini @@ -6,6 +6,7 @@ SETTINGS=Paramètres EXIT=Quitter HELP=Aide ABOUT=À propos... +WARNING= COMMAND_LINE_OPTIONS=Options de ligne de commande COMMAND_LINE_OPTIONS_TEXT=Bloquer Internet :\n-b "App.exe" ou --block "App.exe"\n\nDébloquer Internet :\n-u "App.exe" ou --unblock "App.exe"\n\nImporter les règles :\n-i "Rules.fer" ou --import "Rules.fer"\n\nExporter les règles :\n-e "Rules.fer" ou --export "Rules.fer"\n\nMode silencieux :\n-s ou --silent APP_NAME=Nom @@ -35,5 +36,7 @@ CONTEXT_MENU=Règles du pare-feu BLOCK_ACCESS=Bloquer l'accès à Internet UNBLOCK_ACCESS=Autoriser l'accès à Internet UNBLOCK_ACCESS_CONTEXT_MENU=Débloquer l’accès Internet dans le menu contextuel +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Appliquer CANCEL=Annuler \ No newline at end of file diff --git a/Source/Languages/German.ini b/Source/Languages/German.ini index f2d2d72..6d75d62 100644 --- a/Source/Languages/German.ini +++ b/Source/Languages/German.ini @@ -6,6 +6,7 @@ SETTINGS=Einstellungen EXIT=Beenden HELP=Hilfe ABOUT=Über... +WARNING= COMMAND_LINE_OPTIONS=Befehlszeilenoptionen COMMAND_LINE_OPTIONS_TEXT=Internet blockieren:\n-b "App.exe" oder --block "App.exe"\n\nInternet entsperren:\n-u "App.exe" oder --unblock "App.exe"\n\nRegeln importieren:\n-i "Rules.fer" oder --import "Rules.fer"\n\nRegeln exportieren:\n-e "Rules.fer" oder --export "Rules.fer"\n\nStiller Modus:\n-s oder --silent APP_NAME=Name @@ -35,5 +36,7 @@ CONTEXT_MENU=Firewall-Regeln BLOCK_ACCESS=Internetzugang blockieren UNBLOCK_ACCESS=Internetzugang erlauben UNBLOCK_ACCESS_CONTEXT_MENU=Internetzugang im Kontextmenü entsperren +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Übernehmen CANCEL=Abbrechen \ No newline at end of file diff --git a/Source/Languages/Italian.ini b/Source/Languages/Italian.ini index 474b92a..bf6627e 100644 --- a/Source/Languages/Italian.ini +++ b/Source/Languages/Italian.ini @@ -6,6 +6,7 @@ SETTINGS=Impostazioni EXIT=Esci HELP=Aiuto ABOUT=Info programma... +WARNING= COMMAND_LINE_OPTIONS=Opzioni da riga di comando COMMAND_LINE_OPTIONS_TEXT=Blocca internet:\n-b "App.exe" o --block "App.exe"\n\nSblocca internet:\n-u "App.exe" o --unblock "App.exe"\n\nImporta regole:\n-i "Rules.fer" o --import "Rules.fer"\n\nEsporta regole:\n-e "Rules.fer" o --export "Rules.fer"\n\nModalità silenziosa:\n-s o --silent APP_NAME=Nome @@ -35,5 +36,7 @@ CONTEXT_MENU=Regole firewall BLOCK_ACCESS=Blocca accesso ad internet UNBLOCK_ACCESS=Sblocca accesso ad internet UNBLOCK_ACCESS_CONTEXT_MENU=Sblocca accesso a internet nel menu contestuale +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Applica CANCEL=Annulla \ No newline at end of file diff --git a/Source/Languages/Japanese.ini b/Source/Languages/Japanese.ini index 77b2bc4..018ea6e 100644 --- a/Source/Languages/Japanese.ini +++ b/Source/Languages/Japanese.ini @@ -6,6 +6,7 @@ SETTINGS=設定 EXIT=終了 HELP=ヘルプ ABOUT=バージョン情報... +WARNING= COMMAND_LINE_OPTIONS=コマンドラインオプション COMMAND_LINE_OPTIONS_TEXT=インターネットをブロック:\n-b "App.exe" または --block "App.exe"\n\nインターネットのブロックを解除:\n-u "App.exe" または --unblock "App.exe"\n\nルールをインポート:\n-i "Rules.fer" または --import "Rules.fer"\n\nルールをエクスポート:\n-e "Rules.fer" または --export "Rules.fer"\n\nサイレントモード:\n-s または --silent APP_NAME=名前 @@ -35,5 +36,7 @@ CONTEXT_MENU=ファイアウォールのルール BLOCK_ACCESS=インターネットアクセスをブロック UNBLOCK_ACCESS=インターネットアクセスを許可 UNBLOCK_ACCESS_CONTEXT_MENU=コンテキストメニューでインターネットアクセスのブロックを解除 +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=適用 CANCEL=キャンセル \ No newline at end of file diff --git a/Source/Languages/Korean.ini b/Source/Languages/Korean.ini index de581fa..3d4b3ab 100644 --- a/Source/Languages/Korean.ini +++ b/Source/Languages/Korean.ini @@ -6,6 +6,7 @@ SETTINGS=설정 EXIT=종료 HELP=도움말 ABOUT=정보... +WARNING= COMMAND_LINE_OPTIONS=명령줄 옵션 COMMAND_LINE_OPTIONS_TEXT=인터넷 차단:\n-b "App.exe" 또는 --block "App.exe"\n\n인터넷 차단 해제:\n-u "App.exe" 또는 --unblock "App.exe"\n\n규칙 가져오기:\n-i "Rules.fer" 또는 --import "Rules.fer"\n\n규칙 내보내기:\n-e "Rules.fer" 또는 --export "Rules.fer"\n\n무음 모드:\n-s 또는 --silent APP_NAME=이름 @@ -35,5 +36,7 @@ CONTEXT_MENU=방화벽 규칙 BLOCK_ACCESS=인터넷 접속 차단 UNBLOCK_ACCESS=인터넷 접속 허용 UNBLOCK_ACCESS_CONTEXT_MENU=컨텍스트 메뉴에서 인터넷 액세스 차단 해제 +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=적용 CANCEL=취소 \ No newline at end of file diff --git a/Source/Languages/Polish.ini b/Source/Languages/Polish.ini index 62d0018..f420547 100644 --- a/Source/Languages/Polish.ini +++ b/Source/Languages/Polish.ini @@ -6,6 +6,7 @@ SETTINGS=Ustawienia EXIT=Wyjście HELP=Pomoc ABOUT=O programie... +WARNING= COMMAND_LINE_OPTIONS=Opcje wiersza poleceń COMMAND_LINE_OPTIONS_TEXT=Zablokuj internet:\n-b "App.exe" lub --block "App.exe"\n\nOdblokuj internet:\n-u "App.exe" lub --unblock "App.exe"\n\nImportuj reguły:\n-i "Rules.fer" lub --import "Rules.fer"\n\nEksportuj reguły:\n-e "Rules.fer" lub --export "Rules.fer"\n\nTryb cichy:\n-s lub --silent APP_NAME=Nazwa @@ -35,5 +36,7 @@ CONTEXT_MENU=Zasady Firewalla BLOCK_ACCESS=Zablokuj dostęp do internetu UNBLOCK_ACCESS=Odblokuj dostęp do internetu UNBLOCK_ACCESS_CONTEXT_MENU=Odblokuj dostęp do internetu w menu kontekstowym +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Zastosuj CANCEL=Anuluj \ No newline at end of file diff --git a/Source/Languages/Portuguese.ini b/Source/Languages/Portuguese.ini index fe99640..fd38383 100644 --- a/Source/Languages/Portuguese.ini +++ b/Source/Languages/Portuguese.ini @@ -6,6 +6,7 @@ SETTINGS=Configurações EXIT=Sair HELP=Ajuda ABOUT=Sobre... +WARNING= COMMAND_LINE_OPTIONS=Opções de linha de comando COMMAND_LINE_OPTIONS_TEXT=Bloquear internet:\n-b "App.exe" ou --block "App.exe"\n\nDesbloquear internet:\n-u "App.exe" ou --unblock "App.exe"\n\nImportar regras:\n-i "Rules.fer" ou --import "Rules.fer"\n\nExportar regras:\n-e "Rules.fer" ou --export "Rules.fer"\n\nModo silencioso:\n-s ou --silent APP_NAME=Nome @@ -35,5 +36,7 @@ CONTEXT_MENU=Regras do firewall BLOCK_ACCESS=Bloquear acesso à internet UNBLOCK_ACCESS=Desbloquear acesso à internet UNBLOCK_ACCESS_CONTEXT_MENU=Desbloquear acesso à internet no menu de contexto +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Aplicar CANCEL=Cancelar \ No newline at end of file diff --git a/Source/Languages/Russian.ini b/Source/Languages/Russian.ini index 16e93fb..a36353b 100644 --- a/Source/Languages/Russian.ini +++ b/Source/Languages/Russian.ini @@ -6,6 +6,7 @@ SETTINGS=Настройки EXIT=Выход HELP=Справка ABOUT=О программе... +WARNING= COMMAND_LINE_OPTIONS=Ключи запуска COMMAND_LINE_OPTIONS_TEXT=Заблокировать интернет:\n-b "App.exe" или --block "App.exe"\n\nРазблокировать интернет:\n-u "App.exe" или --unblock "App.exe"\n\nИмпорт правил:\n-i "Rules.fer" или --import "Rules.fer"\n\nЭкспорт правил:\n-e "Rules.fer" или --export "Rules.fer"\n\nТихий режим:\n-s или --silent APP_NAME=Название @@ -35,5 +36,7 @@ CONTEXT_MENU=Правила Брандмауэра BLOCK_ACCESS=Заблокировать доступ в интернет UNBLOCK_ACCESS=Разблокировать доступ в интернет UNBLOCK_ACCESS_CONTEXT_MENU=Разблокировать доступ в интернет в контекстном меню +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Применить CANCEL=Отмена \ No newline at end of file diff --git a/Source/Languages/Spanish.ini b/Source/Languages/Spanish.ini index 9ebd03a..619e5d6 100644 --- a/Source/Languages/Spanish.ini +++ b/Source/Languages/Spanish.ini @@ -6,6 +6,7 @@ SETTINGS=Configuración EXIT=Salir HELP=Ayuda ABOUT=Acerca de... +WARNING= COMMAND_LINE_OPTIONS=Opciones de línea de comandos COMMAND_LINE_OPTIONS_TEXT=Bloquear internet:\n-b "App.exe" o --block "App.exe"\n\nDesbloquear internet:\n-u "App.exe" o --unblock "App.exe"\n\nImportar reglas:\n-i "Rules.fer" o --import "Rules.fer"\n\nExportar reglas:\n-e "Rules.fer" o --export "Rules.fer"\n\nModo silencioso:\n-s o --silent APP_NAME=Nombre @@ -35,5 +36,7 @@ CONTEXT_MENU=Reglas del cortafuegos BLOCK_ACCESS=Bloquear acceso a Internet UNBLOCK_ACCESS=Permitir acceso a Internet UNBLOCK_ACCESS_CONTEXT_MENU=Desbloquear acceso a internet en el menú contextual +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Aplicar CANCEL=Cancelar \ No newline at end of file diff --git a/Source/Languages/Turkish.ini b/Source/Languages/Turkish.ini index e0a2200..725d42b 100644 --- a/Source/Languages/Turkish.ini +++ b/Source/Languages/Turkish.ini @@ -6,6 +6,7 @@ SETTINGS=Ayarlar EXIT=Çıkış HELP=Yardım ABOUT=Hakkında... +WARNING= COMMAND_LINE_OPTIONS=Komut Satırı Seçenekleri COMMAND_LINE_OPTIONS_TEXT=İnterneti engelle:\n-b "App.exe" veya --block "App.exe"\n\nİnternet engelini kaldır:\n-u "App.exe" veya --unblock "App.exe"\n\nKuralları içe aktar:\n-i "Rules.fer" veya --import "Rules.fer"\n\nKuralları dışa aktar:\n-e "Rules.fer" veya --export "Rules.fer"\n\nSessiz mod:\n-s veya --silent APP_NAME=Isim @@ -35,5 +36,7 @@ CONTEXT_MENU=Güvenlik duvarı kuralları BLOCK_ACCESS=İnternet erişimini engelle UNBLOCK_ACCESS=İnternet erişimini serbest bırak UNBLOCK_ACCESS_CONTEXT_MENU=Bağlam menüsünde internet erişimini engellemeyi kaldır +ENABLE_DRAG_AND_DROP= +DRAG_AND_DROP_WARNING= APPLY=Uygula CANCEL=İptal \ No newline at end of file diff --git a/Source/Unit1.pas b/Source/Unit1.pas index 4d0010d..dff2153 100644 --- a/Source/Unit1.pas +++ b/Source/Unit1.pas @@ -78,10 +78,11 @@ TMain = class(TForm) procedure FileExtension(const Recreate: boolean); { Private declarations } public - CompactContextMenu: boolean; + CompactContextMenu, DragAndDropEnabled: boolean; procedure ImportRules(const FilePath: string); procedure ExportRules(const FilePath: string); - procedure ContextMenu(const Recreate, CompactMode: boolean); + procedure ContextMenu(const Recreate: boolean); + procedure ToggleEnableLUA; { Public declarations } end; @@ -97,10 +98,10 @@ TMain = class(TForm) ID_ABOUT, ID_LAST_UPDATE: string; - ID_RULE_SUCCESSFULLY_CREATED, ID_RULE_ALREADY_EXISTS, ID_RULE_SUCCESSFULLY_REMOVED, ID_RULE_NOT_FOUND, ID_APP_NOT_FOUND, ID_CHOOSE_RULE, + ID_RULE_SUCCESSFULLY_CREATED, ID_RULE_ALREADY_EXISTS, ID_RULE_SUCCESSFULLY_REMOVED, ID_RULE_NOT_FOUND, ID_APP_NOT_FOUND, ID_CHOOSE_RULE, ID_WARNING, ID_RULES_SUCCESSFULLY_CREATED, ID_FAILED_CREATE_RULES, ID_RULES_SUCCESSFULLY_REMOVED, ID_FAILED_REMOVE_RULES, ID_REMOVED_RULES_FOR_NONEXISTENT_APPS, - ID_RULES_FOR_NONEXISTENT_APPS_NOT_FOUND, ID_RULES_SUCCESSFULLY_IMPORTED, ID_RULES_SUCCESSFULLY_EXPORTED, ID_CONTEXT_MENU, ID_BLOCK_ACCESS, - ID_UNBLOCK_ACCESS, ID_UNBLOCK_ACCESS_CONTEXT_MENU, ID_APPLY, ID_CANCEL, ID_COMMAND_LINE_OPTIONS, ID_COMMAND_LINE_OPTIONS_TEXT: string; + ID_RULES_FOR_NONEXISTENT_APPS_NOT_FOUND, ID_RULES_SUCCESSFULLY_IMPORTED, ID_RULES_SUCCESSFULLY_EXPORTED, ID_CONTEXT_MENU, ID_BLOCK_ACCESS, ID_UNBLOCK_ACCESS, + ID_UNBLOCK_ACCESS_CONTEXT_MENU, ID_ENABLE_DRAG_AND_DROP, ID_DRAG_AND_DROP_WARNING, ID_APPLY, ID_CANCEL, ID_COMMAND_LINE_OPTIONS, ID_COMMAND_LINE_OPTIONS_TEXT: string; const AppName = 'Firewall Easy'; @@ -445,18 +446,44 @@ function TMain.HandleParams: string; end; procedure TMain.DragAndDrop; +const + RegValue = 'EnableLUA'; var Reg: TRegistry; begin Reg:=TRegistry.Create(KEY_READ); Reg.RootKey:=HKEY_LOCAL_MACHINE; - if (Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System')) and (Reg.ValueExists('EnableLUA')) and (Reg.ReadInteger('EnableLUA') = 0) then + if (Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System')) and (Reg.ValueExists(RegValue)) and (Reg.ReadInteger(RegValue) = 0) then begin DragAcceptFiles(Handle, true); + DragAndDropEnabled:=true; + end else + DragAndDropEnabled:=false; Reg.CloseKey; Reg.Free; end; -procedure TMain.ContextMenu(const Recreate, CompactMode: boolean); +procedure TMain.ToggleEnableLUA; +const + RegValue = 'EnableLUA'; +var + Reg: TRegistry; +begin + Reg:=TRegistry.Create; + Reg.RootKey:=HKEY_LOCAL_MACHINE; + if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', true) then begin + if DragAndDropEnabled then begin + Reg.WriteInteger(RegValue, 0); + DragAcceptFiles(Handle, true); + end else begin + Reg.WriteInteger(RegValue, 1); + DragAcceptFiles(Handle, false); + end; + Reg.CloseKey; + end; + Reg.Free; +end; + +procedure TMain.ContextMenu(const Recreate: boolean); const RegKey = '\exefile\shell\' + AppID; var @@ -471,7 +498,7 @@ procedure TMain.ContextMenu(const Recreate, CompactMode: boolean); ExePath:=ParamStr(0); Reg.WriteString('Icon', ExePath + ',0'); - if CompactMode then begin + if CompactContextMenu then begin Reg.WriteString('MUIVerb', ID_BLOCK_ACCESS); Reg.OpenKey(RegKey + '\Command', true); Reg.WriteString('', '"' + ExePath + '" --block "%1"'); @@ -511,8 +538,10 @@ procedure TMain.FormCreate(Sender: TObject); SystemLang:='Portuguese'; LangFileName:=SystemLang + '.ini'; - if not FileExists(ExtractFilePath(ParamStr(0)) + 'Languages\' + LangFileName) then - LangFileName:='English.Ini'; + if not FileExists(ExtractFilePath(ParamStr(0)) + 'Languages\' + LangFileName) then begin + SystemLang:='English'; + LangFileName:=SystemLang + '.ini'; + end; Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Languages\' + LangFileName); FileBtn.Caption:=UTF8ToAnsi(Ini.ReadString('Main', 'FILE', 'File')); @@ -524,6 +553,7 @@ procedure TMain.FormCreate(Sender: TObject); HelpBtn.Caption:=UTF8ToAnsi(Ini.ReadString('Main', 'HELP', 'Help')); ID_ABOUT:=UTF8ToAnsi(Ini.ReadString('Main', 'ABOUT', 'About...')); AboutBtn.Caption:=ID_ABOUT; + ID_WARNING:=UTF8ToAnsi(Ini.ReadString('Main', 'WARNING', 'Warning')); ID_COMMAND_LINE_OPTIONS:=UTF8ToAnsi(Ini.ReadString('Main', 'COMMAND_LINE_OPTIONS', 'Command Line Options')); CMDOptions.Caption:=ID_COMMAND_LINE_OPTIONS; @@ -563,6 +593,9 @@ procedure TMain.FormCreate(Sender: TObject); ID_UNBLOCK_ACCESS:=UTF8ToAnsi(Ini.ReadString('Main', 'UNBLOCK_ACCESS', 'Unblock internet access')); ID_UNBLOCK_ACCESS_CONTEXT_MENU:=UTF8ToAnsi(Ini.ReadString('Main', 'UNBLOCK_ACCESS_CONTEXT_MENU', 'Unblock internet access in context menu')); + ID_ENABLE_DRAG_AND_DROP:=UTF8ToAnsi(Ini.ReadString('Main', 'ENABLE_DRAG_AND_DROP', 'Enable support for drag and drop')); + ID_DRAG_AND_DROP_WARNING:=UTF8ToAnsi(Ini.ReadString('Main', 'DRAG_AND_DROP_WARNING', 'This option can have negative effects when it comes to security as it completely disables UAC prompts. Please proceed with caution!')); + ID_APPLY:=UTF8ToAnsi(Ini.ReadString('Main', 'APPLY', 'Apply')); ID_CANCEL:=UTF8ToAnsi(Ini.ReadString('Main', 'CANCEL', 'Cancel')); @@ -824,7 +857,7 @@ procedure TMain.FileAssociation(const Recreate: boolean); if (Reg.OpenKeyReadOnly(RegKey) = false) and Reg.OpenKey(RegKey, true) then begin Reg.WriteString('', AppName + ' Rules File'); Reg.OpenKey(RegKey + '\DefaultIcon', true); - Reg.WriteString('', '"' + ParamStr(0) + '",3'); + Reg.WriteString('', ParamStr(0) + ',3'); Reg.OpenKey(RegKey + '\Shell\Open\Command', true); Reg.WriteString('', '"' + ParamStr(0) + '" --import "%1"'); end; @@ -856,7 +889,7 @@ procedure TMain.SyncAppInfo; IsDifferent:=true; Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; - if Reg.OpenKey('\Software\r57zone\' + AppID, true) then begin + if Reg.OpenKey('\SOFTWARE\r57zone\' + AppID, true) then begin IsDifferent:=(Reg.ReadString('Path') <> ParamStr(0)) or (Reg.ReadString('Version') <> AppVersion) or (Reg.ReadString('Language') <> SystemLang); if IsDifferent then begin Reg.WriteString('Path', ParamStr(0)); @@ -866,7 +899,7 @@ procedure TMain.SyncAppInfo; Reg.CloseKey; end; Reg.Free; - ContextMenu(IsDifferent, CompactContextMenu); + ContextMenu(IsDifferent); FileAssociation(IsDifferent); FileExtension(IsDifferent); end; diff --git a/Source/Unit2.dfm b/Source/Unit2.dfm index cc0d19f..e4556c7 100644 --- a/Source/Unit2.dfm +++ b/Source/Unit2.dfm @@ -4,7 +4,7 @@ object Settings: TSettings BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080 - ClientHeight = 90 + ClientHeight = 115 ClientWidth = 285 Color = clBtnFace Font.Charset = DEFAULT_CHARSET @@ -26,6 +26,15 @@ object Settings: TSettings TabOrder = 0 WordWrap = True end + object EnableDragAndDropCB: TCheckBox + Left = 8 + Top = 33 + Width = 265 + Height = 33 + Caption = '' + TabOrder = 0 + WordWrap = True + end object Panel: TPanel Left = 0 Top = 49 @@ -34,7 +43,7 @@ object Settings: TSettings Align = alBottom TabOrder = 1 object ApplyBtn: TButton - Left = 6 + Left = 121 Top = 8 Width = 75 Height = 25 @@ -43,7 +52,7 @@ object Settings: TSettings OnClick = ApplyBtnClick end object CancelBtn: TButton - Left = 85 + Left = 202 Top = 8 Width = 75 Height = 25 diff --git a/Source/Unit2.pas b/Source/Unit2.pas index 3d06311..972f340 100644 --- a/Source/Unit2.pas +++ b/Source/Unit2.pas @@ -9,9 +9,11 @@ interface type TSettings = class(TForm) AddUnblockContextMenuCB: TCheckBox; + EnableDragAndDropCB: TCheckBox; Panel: TPanel; ApplyBtn: TButton; CancelBtn: TButton; + procedure DragAndDropShowWarning(Sender: TObject); procedure ApplyBtnClick(Sender: TObject); procedure CancelBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -30,28 +32,50 @@ implementation {$R *.dfm} +procedure TSettings.DragAndDropShowWarning(Sender: TOBject); +begin + if EnableDragAndDropCB.Checked then + Application.MessageBox(PChar(ID_DRAG_AND_DROP_WARNING), PChar(ID_WARNING), MB_ICONWARNING); +end; + procedure TSettings.ApplyBtnClick(Sender: TObject); var Ini: TIniFile; begin - Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Setup.ini'); - Main.CompactContextMenu:=not AddUnblockContextMenuCB.Checked; - Ini.WriteBool('Main', 'CompactContextMenu', Main.CompactContextMenu); - Ini.Free; - Main.ContextMenu(true, Main.CompactContextMenu); + if Main.CompactContextMenu = AddUnblockContextMenuCB.Checked then begin + Main.CompactContextMenu:=not AddUnblockContextMenuCB.Checked; + Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Setup.ini'); + Ini.WriteBool('Main', 'CompactContextMenu', Main.CompactContextMenu); + Ini.Free; + Main.ContextMenu(true); + end; + if Main.DragAndDropEnabled <> EnableDragAndDropCB.Checked then begin + Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; + Main.ToggleEnableLUA; + end; Close; end; procedure TSettings.CancelBtnClick(Sender: TObject); begin Close; + if Main.CompactContextMenu = AddUnblockContextMenuCB.Checked then + AddUnblockContextMenuCB.Checked:=not Main.CompactContextMenu; + if Main.DragAndDropEnabled <> EnableDragAndDropCB.Checked then begin + EnableDragAndDropCB.OnClick:=nil; + EnableDragAndDropCB.Checked:=Main.DragAndDropEnabled; + EnableDragAndDropCB.OnClick:=DragAndDropShowWarning; + end; end; procedure TSettings.FormCreate(Sender: TObject); begin AddUnblockContextMenuCB.Checked:=not Main.CompactContextMenu; + EnableDragAndDropCB.Checked:=Main.DragAndDropEnabled; + EnableDragAndDropCB.OnClick:=DragAndDropShowWarning; Caption:=Main.SettingsBtn.Caption; AddUnblockContextMenuCB.Caption:=ID_UNBLOCK_ACCESS_CONTEXT_MENU; + EnableDragAndDropCB.Caption:=ID_ENABLE_DRAG_AND_DROP; ApplyBtn.Caption:=ID_APPLY; CancelBtn.Caption:=ID_CANCEL; end;