From 1441f5da3d78912754a8546bc6be922200e79613 Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Wed, 2 Jul 2025 23:04:46 +0000 Subject: [PATCH 1/8] Removed unnecessary quotation marks --- Source/Unit1.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Unit1.pas b/Source/Unit1.pas index 4d0010d..ade6217 100644 --- a/Source/Unit1.pas +++ b/Source/Unit1.pas @@ -824,7 +824,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; From 48f2003cc61c066580b45ef918eb86d409565e83 Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Wed, 2 Jul 2025 23:59:36 +0000 Subject: [PATCH 2/8] Drag And Drop is now togglable from the Settings Menu --- Source/CleanupRegistry.reg | Bin 556 -> 772 bytes Source/DisableDragAndDrop.reg | Bin 294 -> 0 bytes Source/EnableDragAndDrop.reg | Bin 294 -> 0 bytes Source/Languages/Arabic.ini | 3 ++ Source/Languages/Chinese (Simplified).ini | 3 ++ Source/Languages/Chinese (Traditional).ini | 3 ++ Source/Languages/English.ini | 3 ++ Source/Languages/French.ini | 3 ++ Source/Languages/German.ini | 3 ++ Source/Languages/Italian.ini | 3 ++ Source/Languages/Japanese.ini | 3 ++ Source/Languages/Korean.ini | 3 ++ Source/Languages/Polish.ini | 3 ++ Source/Languages/Portuguese.ini | 3 ++ Source/Languages/Russian.ini | 3 ++ Source/Languages/Spanish.ini | 3 ++ Source/Languages/Turkish.ini | 3 ++ Source/Unit1.pas | 43 ++++++++++++++++++--- Source/Unit2.dfm | 11 +++++- Source/Unit2.pas | 15 ++++++- 20 files changed, 103 insertions(+), 8 deletions(-) delete mode 100644 Source/DisableDragAndDrop.reg delete mode 100644 Source/EnableDragAndDrop.reg diff --git a/Source/CleanupRegistry.reg b/Source/CleanupRegistry.reg index d33e58e9139faf908910817431403506bf5265f5..ab894e15a2c2110263c00e09d09033bade788011 100644 GIT binary patch delta 188 zcmZ3((!#buhl!P!fr}w};(pC~e+D;(5QcCDM}{B8mPGcwm ziiHEk@)%Np{BodZ41+U6DNscbLn=_Tgdq$_7XigHf%17k*#ID&12!cSC<9U-%uorW xOMtvwhFAuW)k;9S@)!~slC*(JQyF|1LV*rYVz32TQV!H!1f;DP3{apU0{{T@BDVkl delta 7 OcmZo+Tf?$JhY0`)odOvE diff --git a/Source/DisableDragAndDrop.reg b/Source/DisableDragAndDrop.reg deleted file mode 100644 index d0eb0770ff0eda25f63066a7c952ed2c63e0d7a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmY+9%}T>i5QV>W!FMQm0MUgTp$iF0MQcl{4Pr|0Cze2)3rS1J%d4Na8|88t=A4-` z=X`(V)HHk$=;;`fQLz#0*wZqIT+7yW!G6q2zLl-*8~Y1RIrE(`ivNWvckVn>a?hNU zD{INjn#$esAX~7MyWx>sJd4Oo&3Cnf>VZ!$7P5cc6)GH@X!X#@|Mya`aBmw`YA3pQ mWr#^CcC4en#9Ixoyg6Cv?8*BH6EpU1x7N#;=Qq>wo$~|c;4@tS diff --git a/Source/EnableDragAndDrop.reg b/Source/EnableDragAndDrop.reg deleted file mode 100644 index 7f75e4670eda7b0566d71e79905fd6ad4b827ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmY+9%W48q5Jb;f@E^nv2yWa6E<_@VPt-&tBjRI}0iA&vMf`b_;|0NRxinqXU0wD2 zSdfsiC*wvzg()#dv4RUZcacxo#4fY1@GYOqCiba)oeyfhGNtf;=+bv*$(jLU+O(`| zhSs)RkCAM|Os>P6h4?feLp675XR2o$yco&8yNgt~I+5!kmH+Q0V&dK@s3cAl;mSQE ii8-?h{;J+e*|2po*4dZ$t2E7cb33;-LY`-)*ZTwJ-ZNYP 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 ade6217..aa3f8dc 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 EnableLUA(const Disable: boolean); { 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,17 +446,43 @@ function TMain.HandleParams: string; end; procedure TMain.DragAndDrop; +const + RegKey = '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(RegKey)) and (Reg.ReadInteger(RegKey) = 0) then begin DragAcceptFiles(Handle, true); + DragAndDropEnabled:=true; + end else + DragAndDropEnabled:=false; Reg.CloseKey; Reg.Free; end; +procedure TMain.EnableLUA(const Disable: boolean); +const + RegKey = '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 Disable then begin + Reg.WriteInteger(RegKey, 0); + DragAcceptFiles(Handle, true); + end else begin + Reg.WriteInteger(RegKey, 1); + DragAcceptFiles(Handle, false); + end; + Reg.CloseKey; + end; + Reg.Free; +end; + procedure TMain.ContextMenu(const Recreate, CompactMode: boolean); const RegKey = '\exefile\shell\' + AppID; @@ -524,6 +551,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 +591,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')); @@ -856,7 +887,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)); diff --git a/Source/Unit2.dfm b/Source/Unit2.dfm index cc0d19f..f0f7c6f 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 = 123 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 diff --git a/Source/Unit2.pas b/Source/Unit2.pas index 3d06311..72ef5c0 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,15 +32,23 @@ 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; + Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; + Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Setup.ini'); Ini.WriteBool('Main', 'CompactContextMenu', Main.CompactContextMenu); Ini.Free; Main.ContextMenu(true, Main.CompactContextMenu); + Main.EnableLUA(Main.DragAndDropEnabled); Close; end; @@ -50,8 +60,11 @@ procedure TSettings.CancelBtnClick(Sender: TObject); 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; From 08ad83938b3c45a4d5ddb68aca0636bd9d5f3316 Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Thu, 3 Jul 2025 00:05:08 +0000 Subject: [PATCH 3/8] Checkboxes now revert if the user decides to press 'Cancel' instead of 'Apply' --- Source/Unit2.pas | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Source/Unit2.pas b/Source/Unit2.pas index 72ef5c0..8f05262 100644 --- a/Source/Unit2.pas +++ b/Source/Unit2.pas @@ -42,12 +42,14 @@ procedure TSettings.ApplyBtnClick(Sender: TObject); var Ini: TIniFile; begin - Main.CompactContextMenu:=not AddUnblockContextMenuCB.Checked; + 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, Main.CompactContextMenu); + end; Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; - Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Setup.ini'); - Ini.WriteBool('Main', 'CompactContextMenu', Main.CompactContextMenu); - Ini.Free; - Main.ContextMenu(true, Main.CompactContextMenu); Main.EnableLUA(Main.DragAndDropEnabled); Close; end; @@ -55,6 +57,10 @@ procedure TSettings.ApplyBtnClick(Sender: TObject); procedure TSettings.CancelBtnClick(Sender: TObject); begin Close; + AddUnblockContextMenuCB.Checked:=not Main.CompactContextMenu; + EnableDragAndDropCB.OnClick:=nil; + EnableDragAndDropCB.Checked:=Main.DragAndDropEnabled; + EnableDragAndDropCB.OnClick:=DragAndDropShowWarning; end; procedure TSettings.FormCreate(Sender: TObject); From add1e26f00aab0eafc65bd0dacf4777b5b063a0e Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Thu, 3 Jul 2025 00:13:30 +0000 Subject: [PATCH 4/8] Aligned etting buttons to the right --- Source/Unit2.dfm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Unit2.dfm b/Source/Unit2.dfm index f0f7c6f..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 = 123 + ClientHeight = 115 ClientWidth = 285 Color = clBtnFace Font.Charset = DEFAULT_CHARSET @@ -43,7 +43,7 @@ object Settings: TSettings Align = alBottom TabOrder = 1 object ApplyBtn: TButton - Left = 6 + Left = 121 Top = 8 Width = 75 Height = 25 @@ -52,7 +52,7 @@ object Settings: TSettings OnClick = ApplyBtnClick end object CancelBtn: TButton - Left = 85 + Left = 202 Top = 8 Width = 75 Height = 25 From fd2c8241fa69ce58114ba7e466a129672d3f419b Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Thu, 3 Jul 2025 00:28:00 +0000 Subject: [PATCH 5/8] Improve settings functionality a bit more --- Source/Unit2.pas | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Source/Unit2.pas b/Source/Unit2.pas index 8f05262..5f671b8 100644 --- a/Source/Unit2.pas +++ b/Source/Unit2.pas @@ -49,18 +49,23 @@ procedure TSettings.ApplyBtnClick(Sender: TObject); Ini.Free; Main.ContextMenu(true, Main.CompactContextMenu); end; - Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; - Main.EnableLUA(Main.DragAndDropEnabled); + if Main.DragAndDropEnabled <> EnableDragAndDropCB.Checked then begin + Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; + Main.EnableLUA(Main.DragAndDropEnabled); + end; Close; end; procedure TSettings.CancelBtnClick(Sender: TObject); begin Close; - AddUnblockContextMenuCB.Checked:=not Main.CompactContextMenu; - EnableDragAndDropCB.OnClick:=nil; - EnableDragAndDropCB.Checked:=Main.DragAndDropEnabled; - EnableDragAndDropCB.OnClick:=DragAndDropShowWarning; + 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); From 4c7b52792022cfbb1213b45ee46ecd5090687433 Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Thu, 3 Jul 2025 00:33:02 +0000 Subject: [PATCH 6/8] Second param for ContextMenu() is not necessary --- Source/Unit1.pas | 8 ++++---- Source/Unit2.pas | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Unit1.pas b/Source/Unit1.pas index aa3f8dc..7ed7210 100644 --- a/Source/Unit1.pas +++ b/Source/Unit1.pas @@ -81,7 +81,7 @@ TMain = class(TForm) 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 EnableLUA(const Disable: boolean); { Public declarations } end; @@ -483,7 +483,7 @@ procedure TMain.EnableLUA(const Disable: boolean); Reg.Free; end; -procedure TMain.ContextMenu(const Recreate, CompactMode: boolean); +procedure TMain.ContextMenu(const Recreate: boolean); const RegKey = '\exefile\shell\' + AppID; var @@ -498,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"'); @@ -897,7 +897,7 @@ procedure TMain.SyncAppInfo; Reg.CloseKey; end; Reg.Free; - ContextMenu(IsDifferent, CompactContextMenu); + ContextMenu(IsDifferent); FileAssociation(IsDifferent); FileExtension(IsDifferent); end; diff --git a/Source/Unit2.pas b/Source/Unit2.pas index 5f671b8..1779157 100644 --- a/Source/Unit2.pas +++ b/Source/Unit2.pas @@ -47,7 +47,7 @@ procedure TSettings.ApplyBtnClick(Sender: TObject); Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Setup.ini'); Ini.WriteBool('Main', 'CompactContextMenu', Main.CompactContextMenu); Ini.Free; - Main.ContextMenu(true, Main.CompactContextMenu); + Main.ContextMenu(true); end; if Main.DragAndDropEnabled <> EnableDragAndDropCB.Checked then begin Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; From bc0c79ff77d3f65a81c2191c682c31fc157a8709 Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Fri, 4 Jul 2025 23:27:23 +0000 Subject: [PATCH 7/8] EnableLUA renamed to ToggleEnableLUA --- Source/Unit1.pas | 16 ++++++++-------- Source/Unit2.pas | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Source/Unit1.pas b/Source/Unit1.pas index 7ed7210..999e894 100644 --- a/Source/Unit1.pas +++ b/Source/Unit1.pas @@ -82,7 +82,7 @@ TMain = class(TForm) procedure ImportRules(const FilePath: string); procedure ExportRules(const FilePath: string); procedure ContextMenu(const Recreate: boolean); - procedure EnableLUA(const Disable: boolean); + procedure ToggleEnableLUA; { Public declarations } end; @@ -447,13 +447,13 @@ function TMain.HandleParams: string; procedure TMain.DragAndDrop; const - RegKey = 'EnableLUA'; + 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(RegKey)) and (Reg.ReadInteger(RegKey) = 0) then begin + 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 @@ -462,20 +462,20 @@ procedure TMain.DragAndDrop; Reg.Free; end; -procedure TMain.EnableLUA(const Disable: boolean); +procedure TMain.ToggleEnableLUA; const - RegKey = 'EnableLUA'; + 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 Disable then begin - Reg.WriteInteger(RegKey, 0); + if DragAndDropEnabled then begin + Reg.WriteInteger(RegValue, 0); DragAcceptFiles(Handle, true); end else begin - Reg.WriteInteger(RegKey, 1); + Reg.WriteInteger(RegValue, 1); DragAcceptFiles(Handle, false); end; Reg.CloseKey; diff --git a/Source/Unit2.pas b/Source/Unit2.pas index 1779157..972f340 100644 --- a/Source/Unit2.pas +++ b/Source/Unit2.pas @@ -51,7 +51,7 @@ procedure TSettings.ApplyBtnClick(Sender: TObject); end; if Main.DragAndDropEnabled <> EnableDragAndDropCB.Checked then begin Main.DragAndDropEnabled:=EnableDragAndDropCB.Checked; - Main.EnableLUA(Main.DragAndDropEnabled); + Main.ToggleEnableLUA; end; Close; end; From 1239defd28c96243fce320355ca5faea02e5b0f8 Mon Sep 17 00:00:00 2001 From: x-dragan-milosevic1993 Date: Tue, 8 Jul 2025 06:20:16 +0000 Subject: [PATCH 8/8] Reset SystemLang to English if *.ini file isn't found --- Source/Unit1.pas | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/Unit1.pas b/Source/Unit1.pas index 999e894..dff2153 100644 --- a/Source/Unit1.pas +++ b/Source/Unit1.pas @@ -538,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'));