Repository: srwi/EverythingToolbar Branch: develop Commit: dabaca656728 Files: 265 Total size: 2.2 MB Directory structure: gitextract_f0fongak/ ├── .config/ │ └── dotnet-tools.json ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ └── workflows/ │ ├── build.yml │ ├── csharpier.yml │ ├── release.yml │ └── winget-release.yml ├── .gitignore ├── Directory.Build.props ├── EverythingSDK/ │ ├── EverythingSDK.vcxproj │ ├── EverythingSDK.vcxproj.filters │ ├── include/ │ │ ├── Everything.h │ │ └── Everything_IPC.h │ └── src/ │ ├── Everything.c │ └── Everything64.def ├── EverythingToolbar/ │ ├── Behaviors/ │ │ ├── FlowDirectionAwareness.cs │ │ ├── ThemeAwareness.cs │ │ └── WpfUiBehavior.cs │ ├── Controls/ │ │ ├── AcrylicWindow.cs │ │ ├── FilterSelector.xaml │ │ ├── FilterSelector.xaml.cs │ │ ├── FluentMessageBox.cs │ │ ├── GenericBanner.xaml │ │ ├── GenericBanner.xaml.cs │ │ ├── SearchBox.xaml │ │ ├── SearchBox.xaml.cs │ │ ├── SearchButton.xaml │ │ ├── SearchButton.xaml.cs │ │ ├── SearchResultPreviewPane.xaml │ │ ├── SearchResultPreviewPane.xaml.cs │ │ ├── SearchResultsView.xaml │ │ ├── SearchResultsView.xaml.cs │ │ ├── SettingItem.xaml │ │ ├── SettingItem.xaml.cs │ │ ├── SettingsControl.xaml │ │ ├── SettingsControl.xaml.cs │ │ ├── UpdateBanner.xaml │ │ ├── UpdateBanner.xaml.cs │ │ ├── UpdateSuccessfulBanner.xaml │ │ └── UpdateSuccessfulBanner.xaml.cs │ ├── Converters/ │ │ ├── BoolToVisibilityConverter.cs │ │ ├── HighlightedTextConverter.cs │ │ ├── NotConverter.cs │ │ ├── NullToVisibilityConverter.cs │ │ ├── PreviewPaneToggleIconConverter.cs │ │ ├── SearchResultsCountConverter.cs │ │ ├── SkipItemsConverter.cs │ │ ├── TakeItemsConverter.cs │ │ └── WindowsVersionToVisibilityConverter.cs │ ├── Data/ │ │ ├── Filter.cs │ │ ├── FocusBehavior.cs │ │ ├── Rule.cs │ │ └── SearchResult.cs │ ├── EverythingToolbar.csproj │ ├── Helpers/ │ │ ├── CultureHelper.cs │ │ ├── DefaultFilterLoader.cs │ │ ├── EventDispatcher.cs │ │ ├── EverythingFilterLoader.cs │ │ ├── FilterLoader.cs │ │ ├── HistoryManager.cs │ │ ├── IconProvider.cs │ │ ├── NativeMethods.cs │ │ ├── RegistryWatcher.cs │ │ ├── ShellContextMenu.cs │ │ ├── ShellUtils.cs │ │ ├── ShortcutManager.cs │ │ ├── StartMenuIntegration.cs │ │ ├── TaskbarStateManager.cs │ │ ├── ToolbarLogger.cs │ │ └── Utils.cs │ ├── Images/ │ │ └── WinUIGallery/ │ │ └── LICENSE │ ├── ItemTemplates/ │ │ ├── Compact.xaml │ │ ├── CompactDetailed.xaml │ │ ├── Normal.xaml │ │ └── NormalDetailed.xaml │ ├── Properties/ │ │ ├── Resources.Designer.cs │ │ ├── Resources.af.Designer.cs │ │ ├── Resources.af.resx │ │ ├── Resources.ar.Designer.cs │ │ ├── Resources.ar.resx │ │ ├── Resources.ca.Designer.cs │ │ ├── Resources.ca.resx │ │ ├── Resources.cs.Designer.cs │ │ ├── Resources.cs.resx │ │ ├── Resources.da.Designer.cs │ │ ├── Resources.da.resx │ │ ├── Resources.de.Designer.cs │ │ ├── Resources.de.resx │ │ ├── Resources.el.Designer.cs │ │ ├── Resources.el.resx │ │ ├── Resources.es.Designer.cs │ │ ├── Resources.es.resx │ │ ├── Resources.fa.resx │ │ ├── Resources.fi.Designer.cs │ │ ├── Resources.fi.resx │ │ ├── Resources.fr.Designer.cs │ │ ├── Resources.fr.resx │ │ ├── Resources.he.Designer.cs │ │ ├── Resources.he.resx │ │ ├── Resources.hu.Designer.cs │ │ ├── Resources.hu.resx │ │ ├── Resources.it.Designer.cs │ │ ├── Resources.it.resx │ │ ├── Resources.ja.Designer.cs │ │ ├── Resources.ja.resx │ │ ├── Resources.ko-KR.Designer.cs │ │ ├── Resources.ko-KR.resx │ │ ├── Resources.nl.Designer.cs │ │ ├── Resources.nl.resx │ │ ├── Resources.no.Designer.cs │ │ ├── Resources.no.resx │ │ ├── Resources.pl.Designer.cs │ │ ├── Resources.pl.resx │ │ ├── Resources.pt-BR.Designer.cs │ │ ├── Resources.pt-BR.resx │ │ ├── Resources.pt.resx │ │ ├── Resources.resx │ │ ├── Resources.ro.Designer.cs │ │ ├── Resources.ro.resx │ │ ├── Resources.ru.Designer.cs │ │ ├── Resources.ru.resx │ │ ├── Resources.sr.Designer.cs │ │ ├── Resources.sr.resx │ │ ├── Resources.sv.Designer.cs │ │ ├── Resources.sv.resx │ │ ├── Resources.tr.Designer.cs │ │ ├── Resources.tr.resx │ │ ├── Resources.ug.resx │ │ ├── Resources.uk.Designer.cs │ │ ├── Resources.uk.resx │ │ ├── Resources.uz.resx │ │ ├── Resources.vi.Designer.cs │ │ ├── Resources.vi.resx │ │ ├── Resources.zh-Hans.Designer.cs │ │ ├── Resources.zh-Hans.resx │ │ ├── Resources.zh.resx │ │ └── app.manifest │ ├── Search/ │ │ ├── IItemsProvider.cs │ │ ├── SearchResultProvider.cs │ │ ├── SearchState.cs │ │ ├── SynchronizationContextTaskScheduler.cs │ │ └── VirtualizingCollection.cs │ ├── SearchWindow.xaml │ ├── SearchWindow.xaml.cs │ ├── Settings/ │ │ ├── About.xaml │ │ ├── About.xaml.cs │ │ ├── Advanced.xaml │ │ ├── Advanced.xaml.cs │ │ ├── CustomActions.xaml │ │ ├── CustomActions.xaml.cs │ │ ├── Filters.xaml │ │ ├── Filters.xaml.cs │ │ ├── Search.xaml │ │ ├── Search.xaml.cs │ │ ├── SettingsWindow.xaml │ │ ├── SettingsWindow.xaml.cs │ │ ├── Shortcuts.xaml │ │ ├── Shortcuts.xaml.cs │ │ ├── UserInterface.xaml │ │ └── UserInterface.xaml.cs │ ├── Styles/ │ │ ├── ContextMenu.xaml │ │ ├── PillComboBox.xaml │ │ ├── PillTabControl.xaml │ │ ├── PreviewActionButton.xaml │ │ ├── QuickSettingsToggle.xaml │ │ ├── Scrollbar.xaml │ │ ├── TabBarButton.xaml │ │ ├── TabComboBox.xaml │ │ ├── TabControl.xaml │ │ ├── TextBox.xaml │ │ └── UpdateBannerButton.xaml │ ├── Themes/ │ │ ├── Win10/ │ │ │ ├── Controls/ │ │ │ │ ├── ContextMenu.xaml │ │ │ │ ├── FilterSelector.xaml │ │ │ │ ├── ListViewItem.xaml │ │ │ │ ├── QuickSettingsToggle.xaml │ │ │ │ ├── Scrollbar.xaml │ │ │ │ ├── SearchBox.xaml │ │ │ │ ├── SearchResultPreviewPane.xaml │ │ │ │ ├── SearchWindow.xaml │ │ │ │ ├── TabBarButton.xaml │ │ │ │ ├── TextBox.xaml │ │ │ │ └── UpdateBanner.xaml │ │ │ ├── DARK.xaml │ │ │ └── LIGHT.xaml │ │ └── Win11/ │ │ ├── Controls/ │ │ │ ├── ContextMenu.xaml │ │ │ ├── FilterSelector.xaml │ │ │ ├── ListViewItem.xaml │ │ │ ├── QuickSettingsToggle.xaml │ │ │ ├── Scrollbar.xaml │ │ │ ├── SearchBox.xaml │ │ │ ├── SearchResultPreviewPane.xaml │ │ │ ├── SearchWindow.xaml │ │ │ ├── TabBarButton.xaml │ │ │ ├── TextBox.xaml │ │ │ └── UpdateBanner.xaml │ │ ├── DARK.xaml │ │ └── LIGHT.xaml │ └── ToolbarSettings.cs ├── EverythingToolbar.Deskband/ │ ├── CSDeskBand.cs │ ├── Converters/ │ │ └── SearchControlVisibilityConverter.cs │ ├── EverythingToolbar.Deskband.csproj │ ├── Server.cs │ ├── ToolbarControl.xaml │ ├── ToolbarControl.xaml.cs │ └── WindowPlacement.cs ├── EverythingToolbar.Launcher/ │ ├── EverythingToolbar.Launcher.csproj │ ├── Launcher.cs │ ├── Properties/ │ │ ├── Resources.Designer.cs │ │ ├── Resources.af.resx │ │ ├── Resources.ar.resx │ │ ├── Resources.ca.resx │ │ ├── Resources.cs.resx │ │ ├── Resources.da.resx │ │ ├── Resources.de.resx │ │ ├── Resources.el.resx │ │ ├── Resources.es.resx │ │ ├── Resources.fa.resx │ │ ├── Resources.fi.resx │ │ ├── Resources.fr.resx │ │ ├── Resources.he.resx │ │ ├── Resources.hu.resx │ │ ├── Resources.it.resx │ │ ├── Resources.ja.resx │ │ ├── Resources.ko-KR.resx │ │ ├── Resources.nl.resx │ │ ├── Resources.no.resx │ │ ├── Resources.pl.resx │ │ ├── Resources.pt-BR.resx │ │ ├── Resources.pt.resx │ │ ├── Resources.resx │ │ ├── Resources.ro.resx │ │ ├── Resources.ru.resx │ │ ├── Resources.sr.resx │ │ ├── Resources.sv.resx │ │ ├── Resources.tr.resx │ │ ├── Resources.ug.resx │ │ ├── Resources.uk.resx │ │ ├── Resources.uz.resx │ │ ├── Resources.vi.resx │ │ ├── Resources.zh-Hans.resx │ │ ├── Resources.zh.resx │ │ └── app.manifest │ ├── SetupAssistant.xaml │ ├── SetupAssistant.xaml.cs │ ├── Utils.cs │ └── WindowPlacement.cs ├── EverythingToolbar.sln ├── FAQ.md ├── Installer/ │ ├── DotNetInstaller.iss │ ├── InnoDependencyInstaller/ │ │ ├── CodeDependencies.iss │ │ └── LICENSE.md │ ├── Installer-arm64.iss │ ├── Installer-x64.iss │ ├── SharedInstaller.iss │ └── WixUninstaller.iss ├── LICENSE ├── README.md ├── README.zh-CN.md ├── crowdin.yml └── tools/ ├── clean_solution.cmd ├── install_deskband.cmd └── uninstall_deskband.cmd ================================================ FILE CONTENTS ================================================ ================================================ FILE: .config/dotnet-tools.json ================================================ { "version": 1, "isRoot": true, "tools": { "csharpier": { "version": "1.0.3", "commands": [ "csharpier" ], "rollForward": false } } } ================================================ FILE: .editorconfig ================================================ # Remove the line below if you want to inherit .editorconfig settings from higher directories root = true # C# files [*.cs] #### Core EditorConfig Options #### # Indentation and spacing indent_size = 4 indent_style = space tab_width = 4 max_line_length = 120 # New line preferences end_of_line = crlf insert_final_newline = false #### .NET Coding Conventions #### # Organize usings dotnet_separate_import_directive_groups = false dotnet_sort_system_directives_first = false file_header_template = unset # this. and Me. preferences dotnet_style_qualification_for_event = false dotnet_style_qualification_for_field = false dotnet_style_qualification_for_method = false dotnet_style_qualification_for_property = false # Language keywords vs BCL types preferences dotnet_style_predefined_type_for_locals_parameters_members = true dotnet_style_predefined_type_for_member_access = true # Parentheses preferences dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity dotnet_style_parentheses_in_other_binary_operators = always_for_clarity dotnet_style_parentheses_in_other_operators = never_if_unnecessary dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity # Modifier preferences dotnet_style_require_accessibility_modifiers = for_non_interface_members # Expression-level preferences dotnet_style_coalesce_expression = true dotnet_style_collection_initializer = true dotnet_style_explicit_tuple_names = true dotnet_style_namespace_match_folder = true dotnet_style_null_propagation = true dotnet_style_object_initializer = true dotnet_style_operator_placement_when_wrapping = beginning_of_line dotnet_style_prefer_auto_properties = true dotnet_style_prefer_collection_expression = when_types_loosely_match dotnet_style_prefer_compound_assignment = true dotnet_style_prefer_conditional_expression_over_assignment = true dotnet_style_prefer_conditional_expression_over_return = true dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed dotnet_style_prefer_inferred_anonymous_type_member_names = true dotnet_style_prefer_inferred_tuple_names = true dotnet_style_prefer_is_null_check_over_reference_equality_method = true dotnet_style_prefer_simplified_boolean_expressions = true dotnet_style_prefer_simplified_interpolation = true # Field preferences dotnet_style_readonly_field = true # Parameter preferences dotnet_code_quality_unused_parameters = all:silent # Suppression preferences dotnet_remove_unnecessary_suppression_exclusions = none # New line preferences dotnet_style_allow_multiple_blank_lines_experimental = true dotnet_style_allow_statement_immediately_after_block_experimental = true #### C# Coding Conventions #### # var preferences csharp_style_var_elsewhere = false csharp_style_var_for_built_in_types = false csharp_style_var_when_type_is_apparent = false # Expression-bodied members csharp_style_expression_bodied_accessors = true csharp_style_expression_bodied_constructors = false csharp_style_expression_bodied_indexers = true csharp_style_expression_bodied_lambdas = true csharp_style_expression_bodied_local_functions = false csharp_style_expression_bodied_methods = false csharp_style_expression_bodied_operators = false csharp_style_expression_bodied_properties = true # Pattern matching preferences csharp_style_pattern_matching_over_as_with_null_check = true csharp_style_pattern_matching_over_is_with_cast_check = true csharp_style_prefer_extended_property_pattern = true csharp_style_prefer_not_pattern = true csharp_style_prefer_pattern_matching = true csharp_style_prefer_switch_expression = true # Null-checking preferences csharp_style_conditional_delegate_call = true # Modifier preferences csharp_prefer_static_local_function = true csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async csharp_style_prefer_readonly_struct = true csharp_style_prefer_readonly_struct_member = true # Code-block preferences csharp_prefer_braces = true csharp_prefer_simple_using_statement = true csharp_style_namespace_declarations = block_scoped csharp_style_prefer_method_group_conversion = true csharp_style_prefer_primary_constructors = true csharp_style_prefer_top_level_statements = true # Expression-level preferences csharp_prefer_simple_default_expression = true csharp_style_deconstructed_variable_declaration = true csharp_style_implicit_object_creation_when_type_is_apparent = true csharp_style_inlined_variable_declaration = true csharp_style_prefer_index_operator = true csharp_style_prefer_local_over_anonymous_function = true csharp_style_prefer_null_check_over_type_check = true csharp_style_prefer_range_operator = true csharp_style_prefer_tuple_swap = true csharp_style_prefer_utf8_string_literals = true csharp_style_throw_expression = true csharp_style_unused_value_assignment_preference = discard_variable csharp_style_unused_value_expression_statement_preference = discard_variable # 'using' directive preferences csharp_using_directive_placement = outside_namespace # New line preferences csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true csharp_style_allow_embedded_statements_on_same_line_experimental = true #### C# Formatting Rules #### # New line preferences csharp_new_line_before_catch = true csharp_new_line_before_else = true csharp_new_line_before_finally = true csharp_new_line_before_members_in_anonymous_types = true csharp_new_line_before_members_in_object_initializers = true csharp_new_line_before_open_brace = all csharp_new_line_between_query_expression_clauses = true # Indentation preferences csharp_indent_block_contents = true csharp_indent_braces = false csharp_indent_case_contents = true csharp_indent_case_contents_when_block = true csharp_indent_labels = one_less_than_current csharp_indent_switch_labels = true # Space preferences csharp_space_after_cast = false csharp_space_after_colon_in_inheritance_clause = true csharp_space_after_comma = true csharp_space_after_dot = false csharp_space_after_keywords_in_control_flow_statements = true csharp_space_after_semicolon_in_for_statement = true csharp_space_around_binary_operators = before_and_after csharp_space_around_declaration_statements = false csharp_space_before_colon_in_inheritance_clause = true csharp_space_before_comma = false csharp_space_before_dot = false csharp_space_before_open_square_brackets = false csharp_space_before_semicolon_in_for_statement = false csharp_space_between_empty_square_brackets = false csharp_space_between_method_call_empty_parameter_list_parentheses = false csharp_space_between_method_call_name_and_opening_parenthesis = false csharp_space_between_method_call_parameter_list_parentheses = false csharp_space_between_method_declaration_empty_parameter_list_parentheses = false csharp_space_between_method_declaration_name_and_open_parenthesis = false csharp_space_between_method_declaration_parameter_list_parentheses = false csharp_space_between_parentheses = false csharp_space_between_square_brackets = false # Wrapping preferences csharp_preserve_single_line_blocks = true csharp_preserve_single_line_statements = true #### Naming styles #### # Naming rules dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion dotnet_naming_rule.types_should_be_pascal_case.symbols = types dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case # Symbol specifications dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.types.required_modifiers = dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected dotnet_naming_symbols.non_field_members.required_modifiers = # Naming styles dotnet_naming_style.pascal_case.required_prefix = dotnet_naming_style.pascal_case.required_suffix = dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_naming_style.begins_with_i.required_prefix = I dotnet_naming_style.begins_with_i.required_suffix = dotnet_naming_style.begins_with_i.word_separator = dotnet_naming_style.begins_with_i.capitalization = pascal_case ================================================ FILE: .github/FUNDING.yml ================================================ ko_fi: stephanrwi custom: ['https://paypal.me/rumswinkel'] ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: Bug report description: Create a bug report body: - type: checkboxes attributes: label: Preflight Checklist description: Please ensure you've completed all of the following. options: - label: I have fully read the [README](https://github.com/srwi/EverythingToolbar/blob/develop/README.md) and it did not solve the problem. required: true - label: I have read the [FAQ](https://github.com/srwi/EverythingToolbar/blob/develop/FAQ.md) and it did not solve the problem. required: true - label: I have searched all [open and closed issues](https://github.com/srwi/EverythingToolbar/issues?q=) for the same bug report without success. required: true - id: version type: input attributes: label: EverythingToolbar Version description: What version of EverythingToolbar are you using? placeholder: "e.g. 2.0.0" validations: required: true - type: dropdown id: variant attributes: label: Variant description: What variant of EverythingToolbar are you using? [What are the different variants?](https://github.com/srwi/EverythingToolbar/blob/develop/FAQ.md#-what-is-the-difference-between-the-deskband-and-launcher-variants-of-everythingtoolbar) options: - Not applicable / Don't know - Search icon / Launcher - Deskband validations: required: true - id: et_version type: input attributes: label: Everything Version description: What version of Everything are you using? placeholder: "e.g. 1.4.1.1024 (x64)" validations: required: true - id: windows_version type: input attributes: label: Windows Version description: What Windows version are you using? Click Start button > Settings > System > About. placeholder: "e.g. Windows 11 24H2" validations: required: true - type: textarea attributes: label: Steps to reproduce description: Describe exactly how to reproduce the behaviour. placeholder: | 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error validations: required: true - type: textarea attributes: label: Expected Behavior description: A clear and concise description of what you expected to happen. validations: required: true - type: textarea attributes: label: Actual Behavior description: A clear description of what actually happens. validations: required: true - type: textarea attributes: label: Screenshots description: If applicable, add screenshots to help explain your problem. You can simply drag and drop any image file into the editor to add it to the report. - type: textarea attributes: label: Log output description: To copy the log file output press Win+R, run `%TEMP%\EverythingToolbar.log` and paste the file content below. Please provide the log file even if you think it does not contain relevant information. validations: required: true - type: textarea attributes: label: Additional Information description: Are there any other details that may be relevant to the issue like unusual system configurations or third party software that may be involved? - type: checkboxes id: ensure_effort attributes: label: Final Checklist description: Before submitting, please confirm the following to help provide better support. options: - label: I have provided detailed, clear information in all required fields above and put genuine effort into this bug report. required: true ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Check the FAQ url: https://github.com/srwi/EverythingToolbar/blob/develop/FAQ.md about: Check frequently asked questions and troubleshooting guides ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yml ================================================ name: Feature request description: Suggest an idea for this project body: - type: checkboxes attributes: label: Preflight Checklist description: Please ensure you've completed all of the following. options: - label: I have read the [FAQ](https://github.com/srwi/EverythingToolbar/blob/develop/FAQ.md) and it did not solve the problem. required: true - label: I have searched all [open and closed issues](https://github.com/srwi/EverythingToolbar/issues?q=) for the same feature request without success. required: true - type: textarea attributes: label: Problem Description description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] validations: required: true - type: textarea attributes: label: Proposed Solution description: A clear and concise description of what you want to happen. validations: required: true - type: textarea attributes: label: Additional Information description: Add any other context or screenshots about the feature request here. ================================================ FILE: .github/workflows/build.yml ================================================ name: Build solution on: [push, pull_request, workflow_dispatch] jobs: build: runs-on: ${{ matrix.runner }} strategy: matrix: include: - runner: windows-2025 arch: x64 installer: Installer-x64.iss - runner: windows-11-arm arch: arm64 installer: Installer-arm64.iss steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - name: Install NuGet uses: nuget/setup-nuget@v1 - name: Restore NuGet dependencies run: nuget restore - name: Build all run: MSBuild $Env:GITHUB_WORKSPACE /p:Configuration=Release /p:Platform=${{ matrix.arch }} /p:SignAssembly=false /p:DelaySign=false - name: Install Inno Setup run: choco install innosetup -y --version 6.5.4 --allow-downgrade - name: Build installer run: iscc "Installer\${{ matrix.installer }}" - name: Upload installer artifact if: github.event_name == 'workflow_dispatch' uses: actions/upload-artifact@v4 with: name: EverythingToolbar-Installer-${{ matrix.arch }} path: Installer/Output/*.exe ================================================ FILE: .github/workflows/csharpier.yml ================================================ name: CSharpier check on: [push, pull_request] jobs: check_formatting: runs-on: windows-2025 name: Check Formatting steps: - uses: actions/checkout@v2 - run: | dotnet tool restore dotnet csharpier check . ================================================ FILE: .github/workflows/release.yml ================================================ name: Publish release on: push: tags: - '*' jobs: build-release: runs-on: ${{ matrix.runner }} strategy: matrix: include: - runner: windows-2025 arch: x64 installer: Installer-x64.iss - runner: windows-11-arm arch: arm64 installer: Installer-arm64.iss steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - name: Install NuGet uses: nuget/setup-nuget@v1 - name: Restore NuGet dependencies run: nuget restore - name: Decode certificate shell: bash run: echo ${{ secrets.PFX_CERTIFICATE_FILE }} | base64 --decode > ./EverythingToolbar.snk - name: Build all run: MSBuild $Env:GITHUB_WORKSPACE /p:Configuration=Release /p:Platform=${{ matrix.arch }} - name: Install Inno Setup run: choco install innosetup -y --version 6.5.4 --allow-downgrade - name: Build installer run: iscc /F"EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}" "Installer\${{ matrix.installer }}" - name: Generate SHA-256 checksum shell: bash run: sha256sum Installer/output/EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}.exe > Installer/output/EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}.sha256 - name: Upload artifact uses: actions/upload-artifact@v4 with: name: EverythingToolbar ${{ github.ref_name }} ${{ matrix.arch }} path: | Installer/output/EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}.exe Installer/output/EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}.sha256 - name: Create release draft env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release create "${{ github.ref_name }}" ` "Installer/output/EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}.exe" ` "Installer/output/EverythingToolbar-${{ github.ref_name }}-${{ matrix.arch }}.sha256" ` --draft ` --title "${{ github.ref_name }}" ================================================ FILE: .github/workflows/winget-release.yml ================================================ name: Publish to WinGet on: release: types: [released] workflow_dispatch: inputs: version_tag: description: 'Tag to run winget-releaser for' required: true jobs: winget: name: Publish to WinGet # winget-releaser is cross-platform, we use ubuntu cause it uses less resources than windows runs-on: ubuntu-latest steps: # LAUNCHER - name: Update Launcher # we peg winget-releaser to v2 for stability uses: vedantmgoyal9/winget-releaser@v2 with: identifier: srwi.EverythingToolbar.Launcher token: ${{ secrets.WINGET_PAT }} # regex assumes there's only one file ending with x64.exe and arm64.exe in each release # if this changes in the future, modify the regex accordingly, in both launcher and deskband! installers-regex: '-x64\.exe$|-arm64\.exe$' # if there was a version_tag supplied (manual run) use that, otherwise determine it automatically release-tag: ${{ inputs.version_tag || github.event.release.tag_name }} # DESKBAND - name: Update Deskband uses: vedantmgoyal9/winget-releaser@v2 with: identifier: srwi.EverythingToolbar.Deskband token: ${{ secrets.WINGET_PAT }} installers-regex: '-x64\.exe$|-arm64\.exe$' release-tag: ${{ inputs.version_tag || github.event.release.tag_name }} ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # DNX project.lock.json project.fragment.lock.json artifacts/ *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted #*.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config # NuGet v3's project.json files produces more ignoreable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.snk *.publishsettings node_modules/ orleans.codegen.cs # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # JetBrains Rider .idea/ *.sln.iml # CodeRush .cr/ # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc HeatGeneratedFileList.wxs ================================================ FILE: Directory.Build.props ================================================ 2.3.0.0 2.3.0.0 false true true ================================================ FILE: EverythingSDK/EverythingSDK.vcxproj ================================================ Debug x64 Release x64 Debug ARM64 Release ARM64 17.0 {BF806AC1-5839-4DAA-90F2-9D6F2B65C0FD} EverythingSDK Win32Proj EverythingSDK 10.0 x64 DynamicLibrary v143 false Unicode DynamicLibrary v143 Unicode DynamicLibrary v143 false Unicode DynamicLibrary v143 Unicode <_ProjectFileVersion>17.0.32819.101 $(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ Everything64 $(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ Everything64 $(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ Everything64 $(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ Everything64 X64 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level3 ProgramDatabase $(OutDir)Everything.lib $(OutDir)Everything64.dll X64 MaxSpeed AnySuitable true Speed false false WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true Default MultiThreaded true Fast Level3 CompileAsC $(OutDir)Everything64.dll $(ProjectDir)src\Everything64.def MachineX64 ARM64 Disabled WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level3 ProgramDatabase $(OutDir)Everything.lib $(OutDir)Everything64.dll ARM64 MaxSpeed AnySuitable true Speed false false WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true Default MultiThreaded true Fast Level3 CompileAsC $(OutDir)Everything64.dll $(ProjectDir)src\Everything64.def MachineARM64 ================================================ FILE: EverythingSDK/EverythingSDK.vcxproj.filters ================================================  {9dbb0c28-41a5-4249-8a02-5bf84bc8e3f5} cpp;c;cxx;def;odl;idl;hpj;bat;asm src ================================================ FILE: EverythingSDK/include/Everything.h ================================================ // // Copyright (C) 2016 David Carpenter // // Permission is hereby granted, free of charge, // to any person obtaining a copy of this software // and associated documentation files (the "Software"), // to deal in the Software without restriction, // including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // #ifndef _EVERYTHING_DLL_ #define _EVERYTHING_DLL_ #ifndef _INC_WINDOWS #include #endif #ifdef __cplusplus extern "C" { #endif #define EVERYTHING_OK 0 // no error detected #define EVERYTHING_ERROR_MEMORY 1 // out of memory. #define EVERYTHING_ERROR_IPC 2 // Everything search client is not running #define EVERYTHING_ERROR_REGISTERCLASSEX 3 // unable to register window class. #define EVERYTHING_ERROR_CREATEWINDOW 4 // unable to create listening window #define EVERYTHING_ERROR_CREATETHREAD 5 // unable to create listening thread #define EVERYTHING_ERROR_INVALIDINDEX 6 // invalid index #define EVERYTHING_ERROR_INVALIDCALL 7 // invalid call #define EVERYTHING_ERROR_INVALIDREQUEST 8 // invalid request data, request data first. #define EVERYTHING_ERROR_INVALIDPARAMETER 9 // bad parameter. #define EVERYTHING_SORT_NAME_ASCENDING 1 #define EVERYTHING_SORT_NAME_DESCENDING 2 #define EVERYTHING_SORT_PATH_ASCENDING 3 #define EVERYTHING_SORT_PATH_DESCENDING 4 #define EVERYTHING_SORT_SIZE_ASCENDING 5 #define EVERYTHING_SORT_SIZE_DESCENDING 6 #define EVERYTHING_SORT_EXTENSION_ASCENDING 7 #define EVERYTHING_SORT_EXTENSION_DESCENDING 8 #define EVERYTHING_SORT_TYPE_NAME_ASCENDING 9 #define EVERYTHING_SORT_TYPE_NAME_DESCENDING 10 #define EVERYTHING_SORT_DATE_CREATED_ASCENDING 11 #define EVERYTHING_SORT_DATE_CREATED_DESCENDING 12 #define EVERYTHING_SORT_DATE_MODIFIED_ASCENDING 13 #define EVERYTHING_SORT_DATE_MODIFIED_DESCENDING 14 #define EVERYTHING_SORT_ATTRIBUTES_ASCENDING 15 #define EVERYTHING_SORT_ATTRIBUTES_DESCENDING 16 #define EVERYTHING_SORT_FILE_LIST_FILENAME_ASCENDING 17 #define EVERYTHING_SORT_FILE_LIST_FILENAME_DESCENDING 18 #define EVERYTHING_SORT_RUN_COUNT_ASCENDING 19 #define EVERYTHING_SORT_RUN_COUNT_DESCENDING 20 #define EVERYTHING_SORT_DATE_RECENTLY_CHANGED_ASCENDING 21 #define EVERYTHING_SORT_DATE_RECENTLY_CHANGED_DESCENDING 22 #define EVERYTHING_SORT_DATE_ACCESSED_ASCENDING 23 #define EVERYTHING_SORT_DATE_ACCESSED_DESCENDING 24 #define EVERYTHING_SORT_DATE_RUN_ASCENDING 25 #define EVERYTHING_SORT_DATE_RUN_DESCENDING 26 #define EVERYTHING_REQUEST_FILE_NAME 0x00000001 #define EVERYTHING_REQUEST_PATH 0x00000002 #define EVERYTHING_REQUEST_FULL_PATH_AND_FILE_NAME 0x00000004 #define EVERYTHING_REQUEST_EXTENSION 0x00000008 #define EVERYTHING_REQUEST_SIZE 0x00000010 #define EVERYTHING_REQUEST_DATE_CREATED 0x00000020 #define EVERYTHING_REQUEST_DATE_MODIFIED 0x00000040 #define EVERYTHING_REQUEST_DATE_ACCESSED 0x00000080 #define EVERYTHING_REQUEST_ATTRIBUTES 0x00000100 #define EVERYTHING_REQUEST_FILE_LIST_FILE_NAME 0x00000200 #define EVERYTHING_REQUEST_RUN_COUNT 0x00000400 #define EVERYTHING_REQUEST_DATE_RUN 0x00000800 #define EVERYTHING_REQUEST_DATE_RECENTLY_CHANGED 0x00001000 #define EVERYTHING_REQUEST_HIGHLIGHTED_FILE_NAME 0x00002000 #define EVERYTHING_REQUEST_HIGHLIGHTED_PATH 0x00004000 #define EVERYTHING_REQUEST_HIGHLIGHTED_FULL_PATH_AND_FILE_NAME 0x00008000 #define EVERYTHING_TARGET_MACHINE_X86 1 #define EVERYTHING_TARGET_MACHINE_X64 2 #define EVERYTHING_TARGET_MACHINE_ARM 3 #ifndef EVERYTHINGAPI #define EVERYTHINGAPI __stdcall #endif #ifndef EVERYTHINGUSERAPI #define EVERYTHINGUSERAPI __declspec(dllimport) #endif // write search state EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetSearchW(LPCWSTR lpString); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetSearchA(LPCSTR lpString); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetMatchPath(BOOL bEnable); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetMatchCase(BOOL bEnable); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetMatchWholeWord(BOOL bEnable); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetRegex(BOOL bEnable); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetMax(DWORD dwMax); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetOffset(DWORD dwOffset); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetReplyWindow(HWND hWnd); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetReplyID(DWORD dwId); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetSort(DWORD dwSort); // Everything 1.4.1 EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetRequestFlags(DWORD dwRequestFlags); // Everything 1.4.1 // read search state EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetMatchPath(void); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetMatchCase(void); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetMatchWholeWord(void); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetRegex(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetMax(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetOffset(void); EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetSearchA(void); EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetSearchW(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetLastError(void); EVERYTHINGUSERAPI HWND EVERYTHINGAPI Everything_GetReplyWindow(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetReplyID(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetSort(void); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetRequestFlags(void); // Everything 1.4.1 // execute query EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_QueryA(BOOL bWait); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_QueryW(BOOL bWait); // query reply EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsQueryReply(UINT message,WPARAM wParam,LPARAM lParam,DWORD dwId); // write result state EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SortResultsByPath(void); // read result state EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetNumFileResults(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetNumFolderResults(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetNumResults(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetTotFileResults(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetTotFolderResults(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetTotResults(void); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsVolumeResult(DWORD dwIndex); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsFolderResult(DWORD dwIndex); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsFileResult(DWORD dwIndex); EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultFileNameW(DWORD dwIndex); EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultFileNameA(DWORD dwIndex); EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultPathW(DWORD dwIndex); EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultPathA(DWORD dwIndex); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultFullPathNameA(DWORD dwIndex,LPSTR buf,DWORD bufsize); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultFullPathNameW(DWORD dwIndex,LPWSTR wbuf,DWORD wbuf_size_in_wchars); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultListSort(void); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultListRequestFlags(void); // Everything 1.4.1 EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultExtensionW(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultExtensionA(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetResultSize(DWORD dwIndex,LARGE_INTEGER *lpSize); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetResultDateCreated(DWORD dwIndex,FILETIME *lpDateCreated); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetResultDateModified(DWORD dwIndex,FILETIME *lpDateModified); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetResultDateAccessed(DWORD dwIndex,FILETIME *lpDateAccessed); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultAttributes(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultFileListFileNameW(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultFileListFileNameA(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultRunCount(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetResultDateRun(DWORD dwIndex,FILETIME *lpDateRun); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_GetResultDateRecentlyChanged(DWORD dwIndex,FILETIME *lpDateRecentlyChanged); EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultHighlightedFileNameW(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultHighlightedFileNameA(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultHighlightedPathW(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultHighlightedPathA(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCWSTR EVERYTHINGAPI Everything_GetResultHighlightedFullPathAndFileNameW(DWORD dwIndex); // Everything 1.4.1 EVERYTHINGUSERAPI LPCSTR EVERYTHINGAPI Everything_GetResultHighlightedFullPathAndFileNameA(DWORD dwIndex); // Everything 1.4.1 // reset state and free any allocated memory EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_Reset(void); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_CleanUp(void); EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetInstanceName(LPCWSTR name); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetMajorVersion(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetMinorVersion(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetRevision(void); EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetBuildNumber(void); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_Exit(void); EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsDBLoaded(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsAdmin(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_IsAppData(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_RebuildDB(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_UpdateAllFolderIndexes(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_SaveDB(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_SaveRunHistory(void); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_DeleteRunHistory(void); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetTargetMachine(void); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetRunCountFromFileNameW(LPCWSTR lpFileName); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetRunCountFromFileNameA(LPCSTR lpFileName); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_SetRunCountFromFileNameW(LPCWSTR lpFileName,DWORD dwRunCount); // Everything 1.4.1 EVERYTHINGUSERAPI BOOL EVERYTHINGAPI Everything_SetRunCountFromFileNameA(LPCSTR lpFileName,DWORD dwRunCount); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_IncRunCountFromFileNameW(LPCWSTR lpFileName); // Everything 1.4.1 EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_IncRunCountFromFileNameA(LPCSTR lpFileName); // Everything 1.4.1 #ifdef UNICODE #define Everything_SetSearch Everything_SetSearchW #define Everything_GetSearch Everything_GetSearchW #define Everything_Query Everything_QueryW #define Everything_Query2 Everything_Query2W #define Everything_GetResultFileName Everything_GetResultFileNameW #define Everything_GetResultPath Everything_GetResultPathW #define Everything_GetResultFullPathName Everything_GetResultFullPathNameW #define Everything_GetResultExtension Everything_GetResultExtensionW #define Everything_GetResultFileListFileName Everything_GetResultFileListFileNameW #define Everything_GetResultHighlightedFileName Everything_GetResultHighlightedFileNameW #define Everything_GetResultHighlightedPath Everything_GetResultHighlightedPathW #define Everything_GetResultHighlightedFullPathAndFileName Everything_GetResultHighlightedFullPathAndFileNameW #define Everything_GetRunCountFromFileName Everything_GetRunCountFromFileNameW #define Everything_SetRunCountFromFileName Everything_SetRunCountFromFileNameW #define Everything_IncRunCountFromFileName Everything_IncRunCountFromFileNameW #else #define Everything_SetSearch Everything_SetSearchA #define Everything_GetSearch Everything_GetSearchA #define Everything_Query Everything_QueryA #define Everything_Query2 Everything_Query2A #define Everything_GetResultFileName Everything_GetResultFileNameA #define Everything_GetResultPath Everything_GetResultPathA #define Everything_GetResultFullPathName Everything_GetResultFullPathNameA #define Everything_GetResultExtension Everything_GetResultExtensionA #define Everything_GetResultFileListFileName Everything_GetResultFileListFileNameA #define Everything_GetResultHighlightedFileName Everything_GetResultHighlightedFileNameA #define Everything_GetResultHighlightedPath Everything_GetResultHighlightedPathA #define Everything_GetResultHighlightedFullPathAndFileName Everything_GetResultHighlightedFullPathAndFileNameA #define Everything_GetRunCountFromFileName Everything_GetRunCountFromFileNameA #define Everything_SetRunCountFromFileName Everything_SetRunCountFromFileNameA #define Everything_IncRunCountFromFileName Everything_IncRunCountFromFileNameA #endif #ifdef __cplusplus } #endif #endif ================================================ FILE: EverythingSDK/include/Everything_IPC.h ================================================ // Everything IPC #ifndef _EVERYTHING_IPC_H_ #define _EVERYTHING_IPC_H_ // C #ifdef __cplusplus extern "C" { #endif #define EVERYTHING_WM_IPC (WM_USER) #define EVERYTHING_IPC_TARGET_MACHINE_X86 1 #define EVERYTHING_IPC_TARGET_MACHINE_X64 2 #define EVERYTHING_IPC_TARGET_MACHINE_ARM 3 #define EVERYTHING_IPC_TARGET_MACHINE_ARM64 4 // built in filters #define EVERYTHING_IPC_FILTER_EVERYTHING 0 #define EVERYTHING_IPC_FILTER_AUDIO 1 #define EVERYTHING_IPC_FILTER_COMPRESSED 2 #define EVERYTHING_IPC_FILTER_DOCUMENT 3 #define EVERYTHING_IPC_FILTER_EXECUTABLE 4 #define EVERYTHING_IPC_FILTER_FOLDER 5 #define EVERYTHING_IPC_FILTER_PICTURE 6 #define EVERYTHING_IPC_FILTER_VIDEO 7 #define EVERYTHING_IPC_FILTER_CUSTOM 8 // EVERYTHING_WM_IPC (send to the Everything taskbar notification window) // the Everything taskbar notification window is always created when Everything is running. (even when the taskbar notification icon is hidden) // HWND everything_taskbar_notification_hwnd = FindWindow(EVERYTHING_IPC_WNDCLASS,0); // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_*,lParam) // version format: major.minor.revision.build // example: 1.4.1.877 #define EVERYTHING_IPC_GET_MAJOR_VERSION 0 // int major_version = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_MAJOR_VERSION,0); #define EVERYTHING_IPC_GET_MINOR_VERSION 1 // int minor_version = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_MINOR_VERSION,0); #define EVERYTHING_IPC_GET_REVISION 2 // int revision = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_REVISION,0); #define EVERYTHING_IPC_GET_BUILD_NUMBER 3 // int build = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_BUILD,0); #define EVERYTHING_IPC_EXIT 4 // returns 1 if the program closes. #define EVERYTHING_IPC_GET_TARGET_MACHINE 5 // int target_machine = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_TARGET_MACHINE,0); returns 0 if not supported. returns a EVERYTHING_IPC_TARGET_MACHINE_* value. requires Everything 1.4.1 // uninstall options #define EVERYTHING_IPC_DELETE_START_MENU_SHORTCUTS 100 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_START_MENU_SHORTCUTS,0); #define EVERYTHING_IPC_DELETE_QUICK_LAUNCH_SHORTCUT 101 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_QUICK_LAUNCH_SHORTCUT,0); #define EVERYTHING_IPC_DELETE_DESKTOP_SHORTCUT 102 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_DESKTOP_SHORTCUT,0); #define EVERYTHING_IPC_DELETE_FOLDER_CONTEXT_MENU 103 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_FOLDER_CONTEXT_MENU,0); #define EVERYTHING_IPC_DELETE_RUN_ON_SYSTEM_STARTUP 104 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_RUN_ON_SYSTEM_STARTUP,0); #define EVERYTHING_IPC_DELETE_URL_PROTOCOL 105 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_URL_PROTOCOL,0); // install options #define EVERYTHING_IPC_CREATE_START_MENU_SHORTCUTS 200 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_CREATE_START_MENU_SHORTCUTS,0); #define EVERYTHING_IPC_CREATE_QUICK_LAUNCH_SHORTCUT 201 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_CREATE_QUICK_LAUNCH_SHORTCUT,0); #define EVERYTHING_IPC_CREATE_DESKTOP_SHORTCUT 202 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_CREATE_DESKTOP_SHORTCUT,0); #define EVERYTHING_IPC_CREATE_FOLDER_CONTEXT_MENU 203 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_CREATE_FOLDER_CONTEXT_MENU,0); #define EVERYTHING_IPC_CREATE_RUN_ON_SYSTEM_STARTUP 204 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_CREATE_RUN_ON_SYSTEM_STARTUP,0); #define EVERYTHING_IPC_CREATE_URL_PROTOCOL 205 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_CREATE_URL_PROTOCOL,0); // get option status; 0 = no, 1 = yes, 2 = indeterminate (partially installed) #define EVERYTHING_IPC_IS_START_MENU_SHORTCUTS 300 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_START_MENU_SHORTCUTS,0); #define EVERYTHING_IPC_IS_QUICK_LAUNCH_SHORTCUT 301 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_QUICK_LAUNCH_SHORTCUT,0); #define EVERYTHING_IPC_IS_DESKTOP_SHORTCUT 302 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_DESKTOP_SHORTCUT,0); #define EVERYTHING_IPC_IS_FOLDER_CONTEXT_MENU 303 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_FOLDER_CONTEXT_MENU,0); #define EVERYTHING_IPC_IS_RUN_ON_SYSTEM_STARTUP 304 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_RUN_ON_SYSTEM_STARTUP,0); #define EVERYTHING_IPC_IS_URL_PROTOCOL 305 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_URL_PROTOCOL,0); #define EVERYTHING_IPC_IS_SERVICE 306 // int ret = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_SERVICE,0); // indexing #define EVERYTHING_IPC_IS_NTFS_DRIVE_INDEXED 400 // int is_indexed = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_NTFS_DRIVE_INDEXED,drive_index); drive_index: 0-25 = 0=A:, 1=B:, 2=C:... // requires Everything 1.4: #define EVERYTHING_IPC_IS_DB_LOADED 401 // int is_db_loaded = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_DB_LOADED,0); #define EVERYTHING_IPC_IS_DB_BUSY 402 // int is_db_busy = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_DB_BUSY,0); // db is busy, issueing another action will cancel the current one (if possible). #define EVERYTHING_IPC_IS_ADMIN 403 // int is_admin = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_ADMIN,0); #define EVERYTHING_IPC_IS_APPDATA 404 // int is_appdata = (int)SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_APPDATA,0); #define EVERYTHING_IPC_REBUILD_DB 405 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_REBUILD,0); // forces all indexes to be rescanned. #define EVERYTHING_IPC_UPDATE_ALL_FOLDER_INDEXES 406 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_UPDATE_ALL_FOLDER_INDEXES,0); // rescan all folder indexes. #define EVERYTHING_IPC_SAVE_DB 407 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_SAVE_DB,0); // save the db to disk. #define EVERYTHING_IPC_SAVE_RUN_HISTORY 408 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_SAVE_RUN_HISTORY,0); // save run history to disk. #define EVERYTHING_IPC_DELETE_RUN_HISTORY 409 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_DELETE_RUN_HISTORY,0); // deletes all run history from memory and disk. #define EVERYTHING_IPC_IS_FAST_SORT 410 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_FAST_SORT,EVERYTHING_IPC_SORT_*); // is the sort information indexed? #define EVERYTHING_IPC_IS_FILE_INFO_INDEXED 411 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_FILE_INFO_INDEXED,EVERYTHING_IPC_FILE_INFO_*); // is the file/folder info indexed? // Everything 1.5 #define EVERYTHING_IPC_QUEUE_REBUILD_DB 412 // SendMessage(everything_taskbar_notification_hwnd,EVERYTHING_WM_IPC,EVERYTHING_IPC_QUEUE_REBUILD_DB,0); // forces all indexes to be rescanned when the db is ready. // send the following to an existing Everything search window (requires Everything 1.4.1) // SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_*,0); #define EVERYTHING_IPC_IS_MATCH_CASE 500 // int is_match_case = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_MATCH_CASE,0); #define EVERYTHING_IPC_IS_MATCH_WHOLE_WORD 501 // int is_match_whole_words = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_MATCH_WHOLE_WORD,0); #define EVERYTHING_IPC_IS_MATCH_PATH 502 // int is_match_path = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_MATCH_PATH,0); #define EVERYTHING_IPC_IS_MATCH_DIACRITICS 503 // int is_match_diacritics = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_MATCH_DIACRITICS,0); #define EVERYTHING_IPC_IS_REGEX 504 // int is_regex = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_REGEX,0); #define EVERYTHING_IPC_IS_FILTERS 505 // int is_filters = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_FILTERS,0); #define EVERYTHING_IPC_IS_PREVIEW 506 // int is_preview = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_PREVIEW,0); #define EVERYTHING_IPC_IS_STATUS_BAR 507 // int is_status_bar = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_STATUS_BAR,0); #define EVERYTHING_IPC_IS_DETAILS 508 // int is_details = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_DETAILS,0); #define EVERYTHING_IPC_GET_THUMBNAIL_SIZE 509 // int thumbnail_size = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_GET_THUMBNAIL_SIZE,0); 0 = details #define EVERYTHING_IPC_GET_SORT 510 // int sort = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_GET_SORT,0); sort can be one of EVERYTHING_IPC_SORT_* types. #define EVERYTHING_IPC_GET_ON_TOP 511 // int on_top = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_ON_TOP,0); 0=never, 1=always, 2=while searching. #define EVERYTHING_IPC_GET_FILTER 512 // int filter = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_FILTER,0); filter can be one of EVERYTHING_IPC_FILTER_* types. #define EVERYTHING_IPC_GET_FILTER_INDEX 513 // int filter_index = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_GET_FILTER_INDEX,0); // Everything 1.5 #define EVERYTHING_IPC_IS_MATCH_PREFIX 514 // int is_match_prefix = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_MATCH_PREFIX,0); #define EVERYTHING_IPC_IS_MATCH_SUFFIX 515 // int is_match_suffix = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_MATCH_SUFFIX,0); #define EVERYTHING_IPC_IS_IGNORE_PUNCTUATION 516 // int is_ignore_punctuation = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_IGNORE_PUNCTUATION,0); #define EVERYTHING_IPC_IS_IGNORE_WHITESPACE 517 // int is_ignore_whitespace = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_IGNORE_WHITESPACE,0); #define EVERYTHING_IPC_IS_SEARCH_AS_YOU_TYPE 518 // int is_search_as_you_type = (int)SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),EVERYTHING_WM_IPC,EVERYTHING_IPC_IS_SEARCH_AS_YOU_TYPE,0); // command IDs to send to an Everything search window. // SendMessage(FindWindow(EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS,0),WM_COMMAND,MAKEWPARAM(EVERYTHING_IPC_ID_*,0),0); // main menus #define EVERYTHING_IPC_ID_FILE_MENU 10001 #define EVERYTHING_IPC_ID_EDIT_MENU 10002 #define EVERYTHING_IPC_ID_SEARCH_MENU 10003 #define EVERYTHING_IPC_ID_TOOLS_MENU 10004 #define EVERYTHING_IPC_ID_HELP_MENU 10005 #define EVERYTHING_IPC_ID_TOOLBAR 10006 #define EVERYTHING_IPC_ID_SEARCH_EDIT 10007 #define EVERYTHING_IPC_ID_FILTER 10008 #define EVERYTHING_IPC_ID_RESULTS_HEADER 10009 #define EVERYTHING_IPC_ID_STATUS 10010 #define EVERYTHING_IPC_ID_VIEW_ZOOM_MENU 10012 #define EVERYTHING_IPC_ID_VIEW_MENU 10013 #define EVERYTHING_IPC_ID_VIEW_WINDOW_SIZE_MENU 10019 #define EVERYTHING_IPC_ID_RESULT_LIST 10020 #define EVERYTHING_IPC_ID_BOOKMARKS_MENU 10021 #define EVERYTHING_IPC_ID_VIEW_SORT_BY_MENU 10022 #define EVERYTHING_IPC_ID_VIEW_GOTO_MENU 10024 #define EVERYTHING_IPC_ID_VIEW_ONTOP_MENU 10025 #define EVERYTHING_IPC_ID_PREVIEW 10026 // TRAY #define EVERYTHING_IPC_ID_TRAY_NEW_SEARCH_WINDOW 40001 #define EVERYTHING_IPC_ID_TRAY_CONNECT_TO_ETP_SERVER 40004 #define EVERYTHING_IPC_ID_TRAY_OPTIONS 40005 #define EVERYTHING_IPC_ID_TRAY_EXIT 40006 #define EVERYTHING_IPC_ID_TRAY_SHOW_SEARCH_WINDOW 40007 #define EVERYTHING_IPC_ID_TRAY_TOGGLE_SEARCH_WINDOW 40008 // FILE #define EVERYTHING_IPC_ID_FILE_NEW_WINDOW 40010 #define EVERYTHING_IPC_ID_FILE_CLOSE 40011 #define EVERYTHING_IPC_ID_FILE_EXPORT 40012 #define EVERYTHING_IPC_ID_FILE_EXIT 40013 #define EVERYTHING_IPC_ID_FILE_OPEN_FILELIST 40014 #define EVERYTHING_IPC_ID_FILE_CLOSE_FILELIST 40015 // EDIT #define EVERYTHING_IPC_ID_EDIT_CUT 40020 #define EVERYTHING_IPC_ID_EDIT_COPY 40021 #define EVERYTHING_IPC_ID_EDIT_PASTE 40022 #define EVERYTHING_IPC_ID_EDIT_SELECT_ALL 40023 #define EVERYTHING_IPC_ID_EDIT_INVERT_SELECTION 40029 // VIEW #define EVERYTHING_IPC_ID_VIEW_ZOOM_IN 40030 #define EVERYTHING_IPC_ID_VIEW_ZOOM_OUT 40031 #define EVERYTHING_IPC_ID_VIEW_ZOOM_RESET 40032 #define EVERYTHING_IPC_ID_VIEW_TOGGLE_FULLSCREEN 40034 #define EVERYTHING_IPC_ID_VIEW_AUTO_FIT 40044 #define EVERYTHING_IPC_ID_VIEW_AUTO_SIZE_1 40045 #define EVERYTHING_IPC_ID_VIEW_AUTO_SIZE_2 40046 #define EVERYTHING_IPC_ID_VIEW_AUTO_SIZE_3 40047 #define EVERYTHING_IPC_ID_VIEW_REFRESH 40036 #define EVERYTHING_IPC_ID_VIEW_FILTERS 40035 #define EVERYTHING_IPC_ID_VIEW_SORT_BY_ASCENDING 40037 #define EVERYTHING_IPC_ID_VIEW_SORT_BY_DESCENDING 40038 #define EVERYTHING_IPC_ID_VIEW_STATUS_BAR 40039 #define EVERYTHING_IPC_ID_VIEW_GOTO_BACK 40040 #define EVERYTHING_IPC_ID_VIEW_GOTO_FORWARD 40041 #define EVERYTHING_IPC_ID_VIEW_ONTOP_NEVER 40042 #define EVERYTHING_IPC_ID_VIEW_ONTOP_ALWAYS 40043 #define EVERYTHING_IPC_ID_VIEW_ONTOP_WHILE_SEARCHING 40048 #define EVERYTHING_IPC_ID_VIEW_GOTO_HOME 40049 #define EVERYTHING_IPC_ID_VIEW_TOGGLE_LTR_RTL 40050 #define EVERYTHING_IPC_ID_VIEW_DETAILS 40051 #define EVERYTHING_IPC_ID_VIEW_MEDIUM_ICONS 40052 #define EVERYTHING_IPC_ID_VIEW_LARGE_ICONS 40053 #define EVERYTHING_IPC_ID_VIEW_EXTRA_LARGE_ICONS 40054 #define EVERYTHING_IPC_ID_VIEW_PREVIEW 40055 #define EVERYTHING_IPC_ID_VIEW_GOTO_SHOW_ALL_HISTORY 40056 #define EVERYTHING_IPC_ID_VIEW_INCREASE_THUMBNAIL_SIZE 40057 #define EVERYTHING_IPC_ID_VIEW_DECREASE_THUMBNAIL_SIZE 40058 #define EVERYTHING_IPC_ID_VIEW_SHOW_FILTERS 40096 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_HIDE_FILTERS 40097 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_SHOW_PREVIEW 40098 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_HIDE_PREVIEW 40099 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_SHOW_STATUS_BAR 40100 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_HIDE_STATUS_BAR 40101 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_DETAILS_NO_TOGGLE 40102 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_MEDIUM_ICONS_NO_TOGGLE 40103 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_LARGE_ICONS_NO_TOGGLE 40104 // Everything 1.4.1 #define EVERYTHING_IPC_ID_VIEW_EXTRA_LARGE_ICONS_NO_TOGGLE 40105 // Everything 1.4.1 // SEARCH #define EVERYTHING_IPC_ID_SEARCH_TOGGLE_MATCH_CASE 40060 #define EVERYTHING_IPC_ID_SEARCH_TOGGLE_MATCH_WHOLE_WORD 40061 #define EVERYTHING_IPC_ID_SEARCH_TOGGLE_MATCH_PATH 40062 #define EVERYTHING_IPC_ID_SEARCH_TOGGLE_REGEX 40063 #define EVERYTHING_IPC_ID_SEARCH_TOGGLE_MATCH_DIACRITICS 40066 #define EVERYTHING_IPC_ID_SEARCH_FILTER_ADD 40067 #define EVERYTHING_IPC_ID_SEARCH_FILTER_ORGANIZE 40068 #define EVERYTHING_IPC_ID_SEARCH_ADVANCED_SEARCH 40069 #define EVERYTHING_IPC_ID_SEARCH_ENABLE_MATCH_CASE 40106 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_ENABLE_MATCH_WHOLE_WORD 40107 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_ENABLE_MATCH_PATH 40108 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_ENABLE_REGEX 40109 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_ENABLE_MATCH_DIACRITICS 40110 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_DISABLE_MATCH_CASE 40111 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_DISABLE_MATCH_WHOLE_WORD 40112 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_DISABLE_MATCH_PATH 40113 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_DISABLE_REGEX 40114 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_DISABLE_MATCH_DIACRITICS 40115 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_EVERYTHING 40116 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_AUDIO 40117 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_COMPRESSED 40118 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_DOCUMENT 40119 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_EXECUTABLE 40120 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_FOLDER 40121 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_PICTURE 40122 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_VIDEO 40123 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_AUDIO_NO_TOGGLE 40124 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_COMPRESSED_NO_TOGGLE 40125 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_DOCUMENT_NO_TOGGLE 40126 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_EXECUTABLE_NO_TOGGLE 40127 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_FOLDER_NO_TOGGLE 40128 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_PICTURE_NO_TOGGLE 40129 // Everything 1.4.1 #define EVERYTHING_IPC_ID_SEARCH_FILTER_VIDEO_NO_TOGGLE 40130 // Everything 1.4.1 // TOOLS #define EVERYTHING_IPC_ID_TOOLS_CONNECT_TO_ETP_SERVER 40072 #define EVERYTHING_IPC_ID_TOOLS_DISCONNECT_FROM_ETP_SERVER 40073 #define EVERYTHING_IPC_ID_TOOLS_OPTIONS 40074 #define EVERYTHING_IPC_ID_TOOLS_CONSOLE 40075 #define EVERYTHING_IPC_ID_TOOLS_EDITOR 40076 // HELP #define EVERYTHING_IPC_ID_HELP_VIEW_HELP_TOPICS 40080 #define EVERYTHING_IPC_ID_HELP_OPEN_EVERYTHING_WEBSITE 40081 #define EVERYTHING_IPC_ID_HELP_CHECK_FOR_UPDATES 40082 #define EVERYTHING_IPC_ID_HELP_ABOUT_EVERYTHING 40083 #define EVERYTHING_IPC_ID_HELP_SEARCH_SYNTAX 40084 #define EVERYTHING_IPC_ID_HELP_COMMAND_LINE_OPTIONS 40085 #define EVERYTHING_IPC_ID_HELP_REGEX_SYNTAX 40086 #define EVERYTHING_IPC_ID_HELP_DONATE 40087 // bookmarks #define EVERYTHING_IPC_ID_BOOKMARK_ADD 40090 #define EVERYTHING_IPC_ID_BOOKMARK_ORGANIZE 40091 #define EVERYTHING_IPC_ID_BOOKMARK_START 44000 #define EVERYTHING_IPC_ID_BOOKMARK_END 45000 // exclusive #define EVERYTHING_IPC_ID_FILTER_START 45000 #define EVERYTHING_IPC_ID_FILTER_END 46000 // exclusive #define EVERYTHING_IPC_ID_VIEW_GOTO_START 46000 #define EVERYTHING_IPC_ID_VIEW_GOTO_END 47000 // exclusive // files #define EVERYTHING_IPC_ID_FILE_OPEN 41000 #define EVERYTHING_IPC_ID_FILE_OPEN_NEW 41048 #define EVERYTHING_IPC_ID_FILE_OPEN_WITH 41049 #define EVERYTHING_IPC_ID_FILE_EDIT 41050 #define EVERYTHING_IPC_ID_FILE_PLAY 41051 #define EVERYTHING_IPC_ID_FILE_PRINT 41052 #define EVERYTHING_IPC_ID_FILE_PREVIEW 41053 #define EVERYTHING_IPC_ID_FILE_PRINT_TO 41054 #define EVERYTHING_IPC_ID_FILE_RUN_AS 41055 #define EVERYTHING_IPC_ID_FILE_OPEN_WITH_DEFAULT_VERB 41056 #define EVERYTHING_IPC_ID_FILE_OPEN_AND_CLOSE 41057 #define EVERYTHING_IPC_ID_FILE_EXPLORE_PATH 41002 #define EVERYTHING_IPC_ID_FILE_OPEN_PATH 41003 #define EVERYTHING_IPC_ID_FILE_DELETE 41004 #define EVERYTHING_IPC_ID_FILE_PERMANENTLY_DELETE 41005 #define EVERYTHING_IPC_ID_FILE_RENAME 41006 #define EVERYTHING_IPC_ID_FILE_COPY_FULL_PATH_AND_NAME 41007 #define EVERYTHING_IPC_ID_FILE_COPY_PATH 41008 #define EVERYTHING_IPC_ID_FILE_PROPERTIES 41009 #define EVERYTHING_IPC_ID_FILE_READ_EXTENDED_INFORMATION 41064 #define EVERYTHING_IPC_ID_FILE_CREATE_SHORTCUT 41065 #define EVERYTHING_IPC_ID_FILE_SET_RUN_COUNT 41068 #define EVERYTHING_IPC_ID_FILE_COPY_NAME 41011 #define EVERYTHING_IPC_ID_FILE_OPEN_AND_DO_NOT_CLOSE 41076 // result list #define EVERYTHING_IPC_ID_RESULT_LIST_EXPLORE 41001 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS 41010 #define EVERYTHING_IPC_ID_RESULT_LIST_AUTOFIT_COLUMNS 41012 #define EVERYTHING_IPC_ID_RESULT_LIST_DOWN 41018 #define EVERYTHING_IPC_ID_RESULT_LIST_UP 41019 #define EVERYTHING_IPC_ID_RESULT_LIST_PAGE_UP 41020 #define EVERYTHING_IPC_ID_RESULT_LIST_PAGE_DOWN 41021 #define EVERYTHING_IPC_ID_RESULT_LIST_START 41022 #define EVERYTHING_IPC_ID_RESULT_LIST_END 41023 #define EVERYTHING_IPC_ID_RESULT_LIST_DOWN_EXTEND 41024 #define EVERYTHING_IPC_ID_RESULT_LIST_UP_EXTEND 41025 #define EVERYTHING_IPC_ID_RESULT_LIST_PAGE_UP_EXTEND 41026 #define EVERYTHING_IPC_ID_RESULT_LIST_PAGE_DOWN_EXTEND 41027 #define EVERYTHING_IPC_ID_RESULT_LIST_START_EXTEND 41028 #define EVERYTHING_IPC_ID_RESULT_LIST_END_EXTEND 41029 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_DOWN 41030 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_UP 41031 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_PAGE_UP 41032 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_PAGE_DOWN 41033 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_START 41034 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_END 41035 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_LEFT 41036 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_RIGHT 41037 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_PAGE_LEFT 41038 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_PAGE_RIGHT 41039 #define EVERYTHING_IPC_ID_RESULT_LIST_SELECT_FOCUS 41040 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_FOCUS_SELECTION 41041 #define EVERYTHING_IPC_ID_RESULT_LIST_CONTEXT_MENU 41046 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_DOWN_EXTEND 41058 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_UP_EXTEND 41059 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_PAGE_UP_EXTEND 41060 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_PAGE_DOWN_EXTEND 41061 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_START_EXTEND 41062 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_END_EXTEND 41063 #define EVERYTHING_IPC_ID_RESULT_LIST_AUTOFIT 41066 #define EVERYTHING_IPC_ID_RESULT_LIST_COPY_CSV 41067 #define EVERYTHING_IPC_ID_RESULT_LIST_LEFT_EXTEND 41070 #define EVERYTHING_IPC_ID_RESULT_LIST_RIGHT_EXTEND 41071 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_LEFT_EXTEND 41072 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_RIGHT_EXTEND 41073 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_MOST_RUN 41074 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_LAST_RUN 41075 #define EVERYTHING_IPC_ID_RESULT_LIST_LEFT 41079 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_RIGHT 41080 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_LEFT 41081 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_FOCUS_RIGHT 41082 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_LEFT_SCROLL_ONLY 41083 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_RIGHT_SCROLL_ONLY 41084 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_PAGE_LEFT_SCROLL_ONLY 41085 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_SCROLL_PAGE_RIGHT_SCROLL_ONLY 41086 // Everything 1.4.1 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_NAME 41300 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_PATH 41301 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_SIZE 41302 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_EXTENSION 41303 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_TYPE 41304 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_DATE_MODIFIED 41305 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_DATE_CREATED 41306 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_ATTRIBUTES 41307 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_FILE_LIST_FILENAME 41308 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_RUN_COUNT 41309 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_DATE_RECENTLY_CHANGED 41310 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_DATE_ACCESSED 41311 #define EVERYTHING_IPC_ID_RESULT_LIST_SORT_BY_DATE_RUN 41312 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_NAME_COLUMN 41400 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_PATH_COLUMN 41401 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_SIZE_COLUMN 41402 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_EXTENSION_COLUMN 41403 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_TYPE_COLUMN 41404 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_DATE_MODIFIED_COLUMN 41405 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_DATE_CREATED_COLUMN 41406 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_ATTRIBUTES_COLUMN 41407 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_FILE_LIST_FILENAME_COLUMN 41408 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_RUN_COUNT_COLUMN 41409 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_DATE_RECENTLY_CHANGED_COLUMN 41410 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_DATE_ACCESSED_COLUMN 41411 #define EVERYTHING_IPC_ID_RESULT_LIST_TOGGLE_DATE_RUN_COLUMN 41412 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_NAME_COLUMN_TO_FIT 41600 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_PATH_COLUMN_TO_FIT 41601 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_SIZE_COLUMN_TO_FIT 41602 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_EXTENSION_COLUMN_TO_FIT 41603 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_TYPE_COLUMN_TO_FIT 41604 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_DATE_MODIFIED_COLUMN_TO_FIT 41605 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_DATE_CREATED_COLUMN_TO_FIT 41606 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_ATTRIBUTES_COLUMN_TO_FIT 41607 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_FILE_LIST_FILENAME_COLUMN_TO_FIT 41608 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_RUN_COUNT_COLUMN_TO_FIT 41609 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_DATE_RECENTLY_CHANGED_COLUMN_TO_FIT 41610 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_DATE_ACCESSED_COLUMN_TO_FIT 41611 #define EVERYTHING_IPC_ID_RESULT_LIST_SIZE_DATE_RUN_COLUMN_TO_FIT 41612 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB01 41500 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB02 41501 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB03 41502 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB04 41503 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB05 41504 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB06 41505 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB07 41506 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB08 41507 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB09 41508 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB10 41509 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB11 41510 #define EVERYTHING_IPC_ID_FILE_CUSTOM_VERB12 41511 // search #define EVERYTHING_IPC_ID_SEARCH_EDIT_FOCUS 42000 #define EVERYTHING_IPC_ID_SEARCH_EDIT_WORD_DELETE_TO_START 42019 #define EVERYTHING_IPC_ID_SEARCH_EDIT_AUTO_COMPLETE 42020 #define EVERYTHING_IPC_ID_SEARCH_EDIT_SHOW_SEARCH_HISTORY 42021 #define EVERYTHING_IPC_ID_SEARCH_EDIT_SHOW_ALL_SEARCH_HISTORY 42022 #define EVERYTHING_IPC_ID_TRAY_EDITOR 41700 #define EVERYTHING_IPC_ID_TRAY_OPEN_FILELIST 41701 #define EVERYTHING_IPC_ID_INDEX_UPDATE_ALL_FOLDERS_NOW 41800 #define EVERYTHING_IPC_ID_INDEX_FORCE_REBUILD 41801 // find the everything IPC window #define EVERYTHING_IPC_WNDCLASSW L"EVERYTHING_TASKBAR_NOTIFICATION" #define EVERYTHING_IPC_WNDCLASSA "EVERYTHING_TASKBAR_NOTIFICATION" // an Everything search window #define EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASSW L"EVERYTHING" #define EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASSA "EVERYTHING" // this global window message is sent to all top level windows when everything starts. #define EVERYTHING_IPC_CREATEDW L"EVERYTHING_IPC_CREATED" #define EVERYTHING_IPC_CREATEDA "EVERYTHING_IPC_CREATED" // search flags for querys #define EVERYTHING_IPC_MATCHCASE 0x00000001 // match case #define EVERYTHING_IPC_MATCHWHOLEWORD 0x00000002 // match whole word #define EVERYTHING_IPC_MATCHPATH 0x00000004 // include paths in search #define EVERYTHING_IPC_REGEX 0x00000008 // enable regex #define EVERYTHING_IPC_MATCHACCENTS 0x00000010 // match diacritic marks #define EVERYTHING_IPC_MATCHDIACRITICS 0x00000010 // match diacritic marks #define EVERYTHING_IPC_MATCHPREFIX 0x00000020 // match prefix (Everything 1.5) #define EVERYTHING_IPC_MATCHSUFFIX 0x00000040 // match suffix (Everything 1.5) #define EVERYTHING_IPC_IGNOREPUNCTUATION 0x00000080 // ignore punctuation (Everything 1.5) #define EVERYTHING_IPC_IGNOREWHITESPACE 0x00000100 // ignore white-space (Everything 1.5) // item flags #define EVERYTHING_IPC_FOLDER 0x00000001 // The item is a folder. (it's a file if not set) #define EVERYTHING_IPC_DRIVE 0x00000002 // the file or folder is a drive/root. #define EVERYTHING_IPC_ROOT 0x00000002 // the file or folder is a root. typedef struct EVERYTHING_IPC_COMMAND_LINE { DWORD show_command; // MUST be one of the SW_* ShowWindow() commands // null terminated variable sized command line text in UTF-8. BYTE command_line_text[1]; }EVERYTHING_IPC_COMMAND_LINE; // the WM_COPYDATA message for a query. #define EVERYTHING_IPC_COPYDATA_COMMAND_LINE_UTF8 0 // Send a EVERYTHING_IPC_COMMAND_LINE structure. #define EVERYTHING_IPC_COPYDATAQUERYA 1 #define EVERYTHING_IPC_COPYDATAQUERYW 2 // all results #define EVERYTHING_IPC_ALLRESULTS 0xFFFFFFFF // all results // macro to get the filename of an item #define EVERYTHING_IPC_ITEMFILENAMEA(list,item) (CHAR *)((CHAR *)(list) + ((EVERYTHING_IPC_ITEMA *)(item))->filename_offset) #define EVERYTHING_IPC_ITEMFILENAMEW(list,item) (WCHAR *)((CHAR *)(list) + ((EVERYTHING_IPC_ITEMW *)(item))->filename_offset) // macro to get the path of an item #define EVERYTHING_IPC_ITEMPATHA(list,item) (CHAR *)((CHAR *)(list) + ((EVERYTHING_IPC_ITEMA *)(item))->path_offset) #define EVERYTHING_IPC_ITEMPATHW(list,item) (WCHAR *)((CHAR *)(list) + ((EVERYTHING_IPC_ITEMW *)(item))->path_offset) #pragma pack (push,1) // // Varible sized query struct sent to everything. // // sent in the form of a WM_COPYDATA message with EVERYTHING_IPC_COPYDATAQUERY as the // dwData member in the COPYDATASTRUCT struct. // set the lpData member of the COPYDATASTRUCT struct to point to your EVERYTHING_IPC_QUERY struct. // set the cbData member of the COPYDATASTRUCT struct to the size of the // EVERYTHING_IPC_QUERY struct minus the size of a TCHAR plus the length of the search string in bytes plus // one TCHAR for the null terminator. // // NOTE: to determine the size of this structure use // ASCII: sizeof(EVERYTHING_IPC_QUERYA) - sizeof(CHAR) + strlen(search_string)*sizeof(CHAR) + sizeof(CHAR) // UNICODE: sizeof(EVERYTHING_IPC_QUERYW) - sizeof(WCHAR) + wcslen(search_string)*sizeof(WCHAR) + sizeof(WCHAR) // // NOTE: Everything will only do one query per window. // Sending another query when a query has not completed // will cancel the old query and start the new one. // // Everything will send the results to the reply_hwnd in the form of a // WM_COPYDATA message with the dwData value you specify. // // Everything will return TRUE if successful. // returns FALSE if not supported. // // If you query with EVERYTHING_IPC_COPYDATAQUERYW, the results sent from Everything will be Unicode. // typedef struct EVERYTHING_IPC_QUERYW { // the window that will receive the new results. // only 32bits are required to store a window handle. (even on x64) DWORD reply_hwnd; // the value to set the dwData member in the COPYDATASTRUCT struct // sent by Everything when the query is complete. DWORD reply_copydata_message; // search flags (see EVERYTHING_IPC_MATCHCASE | EVERYTHING_IPC_MATCHWHOLEWORD | EVERYTHING_IPC_MATCHPATH) DWORD search_flags; // only return results after 'offset' results (0 to return from the first result) // useful for scrollable lists DWORD offset; // the number of results to return // zero to return no results // EVERYTHING_IPC_ALLRESULTS to return ALL results DWORD max_results; // null terminated string. variable lengthed search string buffer. WCHAR search_string[1]; }EVERYTHING_IPC_QUERYW; // ASCII version typedef struct EVERYTHING_IPC_QUERYA { // the window that will receive the new results. // only 32bits are required to store a window handle. (even on x64) DWORD reply_hwnd; // the value to set the dwData member in the COPYDATASTRUCT struct // sent by Everything when the query is complete. DWORD reply_copydata_message; // search flags (see EVERYTHING_IPC_MATCHCASE | EVERYTHING_IPC_MATCHWHOLEWORD | EVERYTHING_IPC_MATCHPATH) DWORD search_flags; // only return results after 'offset' results (0 to return from the first result) // useful for scrollable lists DWORD offset; // the number of results to return // zero to return no results // EVERYTHING_IPC_ALLRESULTS to return ALL results DWORD max_results; // null terminated string. variable lengthed search string buffer. CHAR search_string[1]; }EVERYTHING_IPC_QUERYA; // // Varible sized result list struct received from Everything. // // Sent in the form of a WM_COPYDATA message to the hwnd specifed in the // EVERYTHING_IPC_QUERY struct. // the dwData member of the COPYDATASTRUCT struct will match the sent // reply_copydata_message member in the EVERYTHING_IPC_QUERY struct. // // make a copy of the data before returning. // // return TRUE if you processed the WM_COPYDATA message. // typedef struct EVERYTHING_IPC_ITEMW { // item flags DWORD flags; // The offset of the filename from the beginning of the list structure. // (wchar_t *)((char *)everything_list + everythinglist->name_offset) DWORD filename_offset; // The offset of the filename from the beginning of the list structure. // (wchar_t *)((char *)everything_list + everythinglist->path_offset) DWORD path_offset; }EVERYTHING_IPC_ITEMW; typedef struct EVERYTHING_IPC_ITEMA { // item flags DWORD flags; // The offset of the filename from the beginning of the list structure. // (char *)((char *)everything_list + everythinglist->name_offset) DWORD filename_offset; // The offset of the filename from the beginning of the list structure. // (char *)((char *)everything_list + everythinglist->path_offset) DWORD path_offset; }EVERYTHING_IPC_ITEMA; typedef struct EVERYTHING_IPC_LISTW { // the total number of folders found. DWORD totfolders; // the total number of files found. DWORD totfiles; // totfolders + totfiles DWORD totitems; // the number of folders available. DWORD numfolders; // the number of files available. DWORD numfiles; // the number of items available. DWORD numitems; // index offset of the first result in the item list. DWORD offset; // variable lengthed item list. // use numitems to determine the actual number of items available. EVERYTHING_IPC_ITEMW items[1]; }EVERYTHING_IPC_LISTW; typedef struct EVERYTHING_IPC_LISTA { // the total number of folders found. DWORD totfolders; // the total number of files found. DWORD totfiles; // totfolders + totfiles DWORD totitems; // the number of folders available. DWORD numfolders; // the number of files available. DWORD numfiles; // the number of items available. DWORD numitems; // index offset of the first result in the item list. DWORD offset; // variable lengthed item list. // use numitems to determine the actual number of items available. EVERYTHING_IPC_ITEMA items[1]; }EVERYTHING_IPC_LISTA; #pragma pack (pop) #ifdef UNICODE #define EVERYTHING_IPC_COPYDATAQUERY EVERYTHING_IPC_COPYDATAQUERYW #define EVERYTHING_IPC_ITEMFILENAME EVERYTHING_IPC_ITEMFILENAMEW #define EVERYTHING_IPC_ITEMPATH EVERYTHING_IPC_ITEMPATHW #define EVERYTHING_IPC_QUERY EVERYTHING_IPC_QUERYW #define EVERYTHING_IPC_ITEM EVERYTHING_IPC_ITEMW #define EVERYTHING_IPC_LIST EVERYTHING_IPC_LISTW #define EVERYTHING_IPC_WNDCLASS EVERYTHING_IPC_WNDCLASSW #define EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASSW #define EVERYTHING_IPC_CREATED EVERYTHING_IPC_CREATEDW #else #define EVERYTHING_IPC_COPYDATAQUERY EVERYTHING_IPC_COPYDATAQUERYA #define EVERYTHING_IPC_ITEMFILENAME EVERYTHING_IPC_ITEMFILENAMEA #define EVERYTHING_IPC_ITEMPATH EVERYTHING_IPC_ITEMPATHA #define EVERYTHING_IPC_QUERY EVERYTHING_IPC_QUERYA #define EVERYTHING_IPC_ITEM EVERYTHING_IPC_ITEMA #define EVERYTHING_IPC_LIST EVERYTHING_IPC_LISTA #define EVERYTHING_IPC_WNDCLASS EVERYTHING_IPC_WNDCLASSA #define EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASS EVERYTHING_IPC_SEARCH_CLIENT_WNDCLASSA #define EVERYTHING_IPC_CREATED EVERYTHING_IPC_CREATEDA #endif // the WM_COPYDATA message for a query. // requires Everything 1.4.1 #define EVERYTHING_IPC_COPYDATA_QUERY2A 17 #define EVERYTHING_IPC_COPYDATA_QUERY2W 18 #define EVERYTHING_IPC_SORT_NAME_ASCENDING 1 #define EVERYTHING_IPC_SORT_NAME_DESCENDING 2 #define EVERYTHING_IPC_SORT_PATH_ASCENDING 3 #define EVERYTHING_IPC_SORT_PATH_DESCENDING 4 #define EVERYTHING_IPC_SORT_SIZE_ASCENDING 5 #define EVERYTHING_IPC_SORT_SIZE_DESCENDING 6 #define EVERYTHING_IPC_SORT_EXTENSION_ASCENDING 7 #define EVERYTHING_IPC_SORT_EXTENSION_DESCENDING 8 #define EVERYTHING_IPC_SORT_TYPE_NAME_ASCENDING 9 #define EVERYTHING_IPC_SORT_TYPE_NAME_DESCENDING 10 #define EVERYTHING_IPC_SORT_DATE_CREATED_ASCENDING 11 #define EVERYTHING_IPC_SORT_DATE_CREATED_DESCENDING 12 #define EVERYTHING_IPC_SORT_DATE_MODIFIED_ASCENDING 13 #define EVERYTHING_IPC_SORT_DATE_MODIFIED_DESCENDING 14 #define EVERYTHING_IPC_SORT_ATTRIBUTES_ASCENDING 15 #define EVERYTHING_IPC_SORT_ATTRIBUTES_DESCENDING 16 #define EVERYTHING_IPC_SORT_FILE_LIST_FILENAME_ASCENDING 17 #define EVERYTHING_IPC_SORT_FILE_LIST_FILENAME_DESCENDING 18 #define EVERYTHING_IPC_SORT_RUN_COUNT_ASCENDING 19 #define EVERYTHING_IPC_SORT_RUN_COUNT_DESCENDING 20 #define EVERYTHING_IPC_SORT_DATE_RECENTLY_CHANGED_ASCENDING 21 #define EVERYTHING_IPC_SORT_DATE_RECENTLY_CHANGED_DESCENDING 22 #define EVERYTHING_IPC_SORT_DATE_ACCESSED_ASCENDING 23 #define EVERYTHING_IPC_SORT_DATE_ACCESSED_DESCENDING 24 #define EVERYTHING_IPC_SORT_DATE_RUN_ASCENDING 25 #define EVERYTHING_IPC_SORT_DATE_RUN_DESCENDING 26 #define EVERYTHING_IPC_QUERY2_REQUEST_NAME 0x00000001 #define EVERYTHING_IPC_QUERY2_REQUEST_PATH 0x00000002 #define EVERYTHING_IPC_QUERY2_REQUEST_FULL_PATH_AND_NAME 0x00000004 #define EVERYTHING_IPC_QUERY2_REQUEST_EXTENSION 0x00000008 #define EVERYTHING_IPC_QUERY2_REQUEST_SIZE 0x00000010 #define EVERYTHING_IPC_QUERY2_REQUEST_DATE_CREATED 0x00000020 #define EVERYTHING_IPC_QUERY2_REQUEST_DATE_MODIFIED 0x00000040 #define EVERYTHING_IPC_QUERY2_REQUEST_DATE_ACCESSED 0x00000080 #define EVERYTHING_IPC_QUERY2_REQUEST_ATTRIBUTES 0x00000100 #define EVERYTHING_IPC_QUERY2_REQUEST_FILE_LIST_FILE_NAME 0x00000200 #define EVERYTHING_IPC_QUERY2_REQUEST_RUN_COUNT 0x00000400 #define EVERYTHING_IPC_QUERY2_REQUEST_DATE_RUN 0x00000800 #define EVERYTHING_IPC_QUERY2_REQUEST_DATE_RECENTLY_CHANGED 0x00001000 #define EVERYTHING_IPC_QUERY2_REQUEST_HIGHLIGHTED_NAME 0x00002000 #define EVERYTHING_IPC_QUERY2_REQUEST_HIGHLIGHTED_PATH 0x00004000 #define EVERYTHING_IPC_QUERY2_REQUEST_HIGHLIGHTED_FULL_PATH_AND_NAME 0x00008000 #define EVERYTHING_IPC_FILE_INFO_FILE_SIZE 1 #define EVERYTHING_IPC_FILE_INFO_FOLDER_SIZE 2 #define EVERYTHING_IPC_FILE_INFO_DATE_CREATED 3 #define EVERYTHING_IPC_FILE_INFO_DATE_MODIFIED 4 #define EVERYTHING_IPC_FILE_INFO_DATE_ACCESSED 5 #define EVERYTHING_IPC_FILE_INFO_ATTRIBUTES 6 #pragma pack (push,1) // // Varible sized query struct sent to everything. // // sent in the form of a WM_COPYDATA message with EVERYTHING_IPC_COPYDATA_QUERY2 as the // dwData member in the COPYDATASTRUCT struct. // set the lpData member of the COPYDATASTRUCT struct to point to your EVERYTHING_IPC_QUERY struct. // set the cbData member of the COPYDATASTRUCT struct to the size of the // EVERYTHING_IPC_QUERY struct minus the size of a TCHAR plus the length of the search string in bytes plus // one TCHAR for the null terminator. // // NOTE: Everything will only do one query per window. // Sending another query when a query has not completed // will cancel the old query and start the new one. // // Everything will send the results to the reply_hwnd in the form of a // WM_COPYDATA message with the dwData value you specify. // // Everything will return TRUE if successful. // returns FALSE if not supported. // // If you query with EVERYTHING_IPC_COPYDATA_QUERYW, the results sent from Everything will be Unicode. // // ASCII version typedef struct EVERYTHING_IPC_QUERY2 { // the window that will receive the new results. // only 32bits are required to store a window handle. (even on x64) DWORD reply_hwnd; // the value to set the dwData member in the COPYDATASTRUCT struct // sent by Everything when the query is complete. DWORD reply_copydata_message; // search flags (see EVERYTHING_IPC_MATCHCASE | EVERYTHING_IPC_MATCHWHOLEWORD | EVERYTHING_IPC_MATCHPATH) DWORD search_flags; // only return results after 'offset' results (0 to return from the first result) // useful for scrollable lists DWORD offset; // the number of results to return // zero to return no results // EVERYTHING_IPC_ALLRESULTS to return ALL results DWORD max_results; // request types. // one or more of EVERYTHING_IPC_QUERY2_REQUEST_* types. DWORD request_flags; // sort type, set to one of EVERYTHING_IPC_SORT_* types. // set to EVERYTHING_IPC_SORT_NAME_ASCENDING for the best performance (there will never be a performance hit when sorting by name ascending). // Other sorts will also be instant if the corresponding fast sort is enabled from Tools -> Options -> Indexes. DWORD sort_type; // followed by null terminated search. // TCHAR search_string[1]; }EVERYTHING_IPC_QUERY2; typedef struct EVERYTHING_IPC_ITEM2 { // item flags one of (EVERYTHING_IPC_FOLDER|EVERYTHING_IPC_DRIVE|EVERYTHING_IPC_ROOT) DWORD flags; // offset from the start of the EVERYTHING_IPC_LIST2 struct to the data content DWORD data_offset; // data found at data_offset // if EVERYTHING_IPC_QUERY2_REQUEST_NAME was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text. // if EVERYTHING_IPC_QUERY2_REQUEST_PATH was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text. // if EVERYTHING_IPC_QUERY2_REQUEST_FULL_PATH_AND_NAME was set in request_flags, DWORD name_length (excluding the null terminator); followed by null terminated text. // if EVERYTHING_IPC_QUERY2_REQUEST_SIZE was set in request_flags, LARGE_INTERGER size; // if EVERYTHING_IPC_QUERY2_REQUEST_EXTENSION was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text; // if EVERYTHING_IPC_QUERY2_REQUEST_TYPE_NAME was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text; // if EVERYTHING_IPC_QUERY2_REQUEST_DATE_CREATED was set in request_flags, FILETIME date; // if EVERYTHING_IPC_QUERY2_REQUEST_DATE_MODIFIED was set in request_flags, FILETIME date; // if EVERYTHING_IPC_QUERY2_REQUEST_DATE_ACCESSED was set in request_flags, FILETIME date; // if EVERYTHING_IPC_QUERY2_REQUEST_ATTRIBUTES was set in request_flags, DWORD attributes; // if EVERYTHING_IPC_QUERY2_REQUEST_FILELIST_FILENAME was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text; // if EVERYTHING_IPC_QUERY2_REQUEST_RUN_COUNT was set in request_flags, DWORD run_count; // if EVERYTHING_IPC_QUERY2_REQUEST_DATE_RUN was set in request_flags, FILETIME date; // if EVERYTHING_IPC_QUERY2_REQUEST_DATE_RECENTLY_CHANGED was set in request_flags, FILETIME date; // if EVERYTHING_IPC_QUERY2_REQUEST_HIGHLIGHTED_NAME was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text; ** = *, *text* = highlighted text // if EVERYTHING_IPC_QUERY2_REQUEST_HIGHLIGHTED_PATH was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text; ** = *, *text* = highlighted text // if EVERYTHING_IPC_QUERY2_REQUEST_HIGHLIGHTED_FULL_PATH_AND_NAME was set in request_flags, DWORD name_length in characters (excluding the null terminator); followed by null terminated text; ** = *, *text* = highlighted text }EVERYTHING_IPC_ITEM2; typedef struct EVERYTHING_IPC_LIST2 { // number of items found. DWORD totitems; // the number of items available. DWORD numitems; // index offset of the first result in the item list. DWORD offset; // valid request types. DWORD request_flags; // this sort type. // one of EVERYTHING_IPC_SORT_* types. // maybe different to requested sort type. DWORD sort_type; // items follow. // EVERYTHING_IPC_ITEM2 items[numitems] // item data follows. }EVERYTHING_IPC_LIST2; #pragma pack (pop) // Get the Run Count for a file, by filename. // COPYDATASTRUCT cds; // cds.dwData = EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTA; // cds.lpData = TEXT("C:\\folder\\file.txt"); // cds.cbData = size in bytes of cds.lpData including null terminator. // SendMessage(everything_taskbar_notification_hwnd,WM_COPYDATA,(WPARAM)(HWND)notify_hwnd,(LPARAM)(COPYDATASTRUCT *)&cds); #define EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTA 19 #define EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTW 20 #pragma pack (push,1) typedef struct EVERYTHING_IPC_RUN_HISTORY { DWORD run_count; // null terminated ansi/wchar filename follows. // TCHAR filename[]; }EVERYTHING_IPC_RUN_HISTORY; #pragma pack (pop) // Set the Run Count by one for a file, by filename. // COPYDATASTRUCT cds; // cds.dwData = EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTA; // cds.lpData = (EVERYTHING_IPC_RUN_HISTORY *)run_history; // cds.cbData = size in bytes of cds.lpData including null terminator. // SendMessage(everything_taskbar_notification_hwnd,WM_COPYDATA,(WPARAM)(HWND)notify_hwnd,(LPARAM)(COPYDATASTRUCT *)&cds); #define EVERYTHING_IPC_COPYDATA_SET_RUN_COUNTA 21 #define EVERYTHING_IPC_COPYDATA_SET_RUN_COUNTW 22 // Increment the Run Count by one for a file, by filename. // COPYDATASTRUCT cds; // cds.dwData = EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTA; // cds.lpData = TEXT("C:\\folder\\file.txt"); // cds.cbData = size in bytes of cds.lpData including null terminator. // SendMessage(everything_taskbar_notification_hwnd,WM_COPYDATA,(WPARAM)(HWND)notify_hwnd,(LPARAM)(COPYDATASTRUCT *)&cds); #define EVERYTHING_IPC_COPYDATA_INC_RUN_COUNTA 23 #define EVERYTHING_IPC_COPYDATA_INC_RUN_COUNTW 24 #ifdef UNICODE #define EVERYTHING_IPC_COPYDATA_QUERY2 EVERYTHING_IPC_COPYDATA_QUERY2W #else #define EVERYTHING_IPC_COPYDATA_QUERY2 EVERYTHING_IPC_COPYDATA_QUERY2A #endif // end extern C #ifdef __cplusplus } #endif #endif // _EVERYTHING_H_ ================================================ FILE: EverythingSDK/src/Everything.c ================================================ // // Copyright (C) 2016 David Carpenter // // Permission is hereby granted, free of charge, // to any person obtaining a copy of this software // and associated documentation files (the "Software"), // to deal in the Software without restriction, // including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // Notes: // this project builds the dll (visual studio will also build the lib for us) // we declare all exported calls to __stdcall, so theres no need to set the default calling standard. // disable warnings #pragma warning(disable : 4996) // deprecation #define EVERYTHINGUSERAPI __declspec(dllexport) // include #include "../include/Everything.h" #include "../include/Everything_IPC.h" // return copydata code #define _EVERYTHING_COPYDATA_QUERYREPLY 0 #define _EVERYTHING_MSGFLT_ALLOW 1 #define ES_BUF_SIZE MAX_PATH typedef struct _EVERYTHING_tagCHANGEFILTERSTRUCT { DWORD cbSize; DWORD ExtStatus; }_EVERYTHING_CHANGEFILTERSTRUCT, *_EVERYTHING_PCHANGEFILTERSTRUCT; static void *_Everything_Alloc(DWORD size); static void _Everything_Free(void *ptr); static void _Everything_Initialize(void); static void _Everything_Lock(void); static void _Everything_Unlock(void); static DWORD _Everything_StringLengthA(LPCSTR start); static DWORD _Everything_StringLengthW(LPCWSTR start); static BOOL EVERYTHINGAPI _Everything_Query(void); static BOOL _Everything_ShouldUseVersion2(void); static BOOL _Everything_SendIPCQuery(void); static BOOL _Everything_SendIPCQuery2(HWND everything_hwnd); static void _Everything_FreeLists(void); static BOOL _Everything_IsValidResultIndex(DWORD dwIndex); static void *_Everything_GetRequestData(DWORD dwIndex,DWORD dwRequestType); static BOOL _Everything_IsSchemeNameW(LPCWSTR s); static BOOL _Everything_IsSchemeNameA(LPCSTR s); static void _Everything_ChangeWindowMessageFilter(HWND hwnd); static BOOL _Everything_GetResultRequestData(DWORD dwIndex,DWORD dwRequestType,void *data,int size); static LPCWSTR _Everything_GetResultRequestStringW(DWORD dwIndex,DWORD dwRequestType); static LPCSTR _Everything_GetResultRequestStringA(DWORD dwIndex,DWORD dwRequestType); static BOOL _Everything_SendAPIBoolCommand(int command,LPARAM lParam); static DWORD _Everything_SendAPIDwordCommand(int command,LPARAM lParam); static LRESULT _Everything_SendCopyData(int command,const void *data,int size); static LRESULT WINAPI _Everything_window_proc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam); // internal state static BOOL _Everything_MatchPath = FALSE; static BOOL _Everything_MatchCase = FALSE; static BOOL _Everything_MatchWholeWord = FALSE; static BOOL _Everything_Regex = FALSE; static DWORD _Everything_LastError = FALSE; static DWORD _Everything_Max = EVERYTHING_IPC_ALLRESULTS; static DWORD _Everything_Offset = 0; static DWORD _Everything_Sort = EVERYTHING_SORT_NAME_ASCENDING; static DWORD _Everything_RequestFlags = EVERYTHING_REQUEST_PATH | EVERYTHING_REQUEST_FILE_NAME; static BOOL _Everything_IsUnicodeQuery = FALSE; static DWORD _Everything_QueryVersion = 0; static BOOL _Everything_IsUnicodeSearch = FALSE; static void *_Everything_Search = NULL; // wchar or char static EVERYTHING_IPC_LIST2 *_Everything_List2 = NULL; static void *_Everything_List = NULL; // EVERYTHING_IPC_LISTW or EVERYTHING_IPC_LISTA static volatile BOOL _Everything_Initialized = FALSE; static volatile LONG _Everything_InterlockedCount = 0; static CRITICAL_SECTION _Everything_cs; static HWND _Everything_ReplyWindow = 0; static DWORD _Everything_ReplyID = 0; static wchar_t _Everything_InstanceName[256] = {0}; // The maximum length for lpszClassName is 256 static BOOL (WINAPI *_Everything_pChangeWindowMessageFilterEx)(HWND hWnd,UINT message,DWORD action,_EVERYTHING_PCHANGEFILTERSTRUCT pChangeFilterStruct) = 0; static HANDLE _Everything_user32_hdll = NULL; static BOOL _Everything_GotChangeWindowMessageFilterEx = FALSE; void es_wbuf_cat(wchar_t* buf, int max, const wchar_t* s) { const wchar_t* p; wchar_t* d; max--; d = buf; while (max) { if (!*d) break; d++; max--; } p = s; while (max) { if (!*p) break; *d++ = *p; p++; max--; } *d = 0; } void es_wstring_cat(wchar_t* buf, const wchar_t* s) { es_wbuf_cat(buf, ES_BUF_SIZE, s); } static HWND es_find_instance_window() { wchar_t window_class[ES_BUF_SIZE]; *window_class = 0; es_wstring_cat(window_class, EVERYTHING_IPC_WNDCLASSW); if (*_Everything_InstanceName != 0) { if (wcslen(_Everything_InstanceName) > ((sizeof(window_class) - sizeof(EVERYTHING_IPC_WNDCLASSW) - sizeof(L"_(") - sizeof(L")")) / sizeof(wchar_t)) + 3) // 0 { // Not enough space return 0; } es_wstring_cat(window_class, L"_("); es_wstring_cat(window_class, _Everything_InstanceName); es_wstring_cat(window_class, L")"); } HWND everything_hwnd = FindWindow(window_class, 0); return everything_hwnd; } static void _Everything_Initialize(void) { if (!_Everything_Initialized) { if (InterlockedIncrement(&_Everything_InterlockedCount) == 1) { // do the initialization.. InitializeCriticalSection(&_Everything_cs); _Everything_Initialized = 1; } else { // wait for initialization by other thread. while (!_Everything_Initialized) Sleep(0); } } } static void _Everything_Lock(void) { _Everything_Initialize(); EnterCriticalSection(&_Everything_cs); } static void _Everything_Unlock(void) { LeaveCriticalSection(&_Everything_cs); } // avoid other libs static DWORD _Everything_StringLengthA(LPCSTR start) { register LPCSTR s; s = start; while(*s) { s++; } return (DWORD)(s-start); } static DWORD _Everything_StringLengthW(LPCWSTR start) { register LPCWSTR s; s = start; while(*s) { s++; } return (DWORD)(s-start); } void EVERYTHINGAPI Everything_SetSearchW(LPCWSTR lpString) { DWORD len; _Everything_Lock(); if (_Everything_Search) { _Everything_Free(_Everything_Search); } len = _Everything_StringLengthW(lpString) + 1; _Everything_Search = _Everything_Alloc(len*sizeof(WCHAR)); if (_Everything_Search) { CopyMemory(_Everything_Search,lpString,len*sizeof(WCHAR)); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } _Everything_IsUnicodeSearch = 1; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetSearchA(LPCSTR lpString) { DWORD size; _Everything_Lock(); if (_Everything_Search) { _Everything_Free(_Everything_Search); } size = _Everything_StringLengthA(lpString) + 1; _Everything_Search = _Everything_Alloc(size); if (_Everything_Search) { CopyMemory(_Everything_Search,lpString,size); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } _Everything_IsUnicodeSearch = 0; _Everything_Unlock(); } LPCSTR EVERYTHINGAPI Everything_GetSearchA(void) { LPCSTR ret; _Everything_Lock(); if (_Everything_Search) { if (_Everything_IsUnicodeSearch) { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = NULL; } else { ret = (LPCSTR)_Everything_Search; } } else { ret = ""; } _Everything_Unlock(); return ret; } LPCWSTR EVERYTHINGAPI Everything_GetSearchW(void) { LPCWSTR ret; _Everything_Lock(); if (_Everything_Search) { if (!_Everything_IsUnicodeSearch) { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = NULL; } else { ret = (LPCWSTR)_Everything_Search; } } else { ret = L""; } _Everything_Unlock(); return ret; } void EVERYTHINGAPI Everything_SetMatchPath(BOOL bEnable) { _Everything_Lock(); _Everything_MatchPath = bEnable; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetMatchCase(BOOL bEnable) { _Everything_Lock(); _Everything_MatchCase = bEnable; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetMatchWholeWord(BOOL bEnable) { _Everything_Lock(); _Everything_MatchWholeWord = bEnable; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetRegex(BOOL bEnable) { _Everything_Lock(); _Everything_Regex = bEnable; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetMax(DWORD dwMax) { _Everything_Lock(); _Everything_Max = dwMax; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetOffset(DWORD dwOffset) { _Everything_Lock(); _Everything_Offset = dwOffset; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetSort(DWORD dwSort) { _Everything_Lock(); _Everything_Sort = dwSort; _Everything_Unlock(); } EVERYTHINGUSERAPI void EVERYTHINGAPI Everything_SetRequestFlags(DWORD dwRequestFlags) { _Everything_Lock(); _Everything_RequestFlags = dwRequestFlags; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetReplyWindow(HWND hWnd) { _Everything_Lock(); _Everything_ReplyWindow = hWnd; _Everything_Unlock(); } void EVERYTHINGAPI Everything_SetReplyID(DWORD dwId) { _Everything_Lock(); _Everything_ReplyID = dwId; _Everything_Unlock(); } BOOL EVERYTHINGAPI Everything_GetMatchPath(void) { BOOL ret; _Everything_Lock(); ret = _Everything_MatchPath; _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_GetMatchCase(void) { BOOL ret; _Everything_Lock(); ret = _Everything_MatchCase; _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_GetMatchWholeWord(void) { BOOL ret; _Everything_Lock(); ret = _Everything_MatchWholeWord; _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_GetRegex(void) { BOOL ret; _Everything_Lock(); ret = _Everything_Regex; _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetMax(void) { DWORD ret; _Everything_Lock(); ret = _Everything_Max; _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetOffset(void) { DWORD ret; _Everything_Lock(); ret = _Everything_Offset; _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetSort(void) { DWORD ret; _Everything_Lock(); ret = _Everything_Sort; _Everything_Unlock(); return ret; } EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetRequestFlags(void) { DWORD ret; _Everything_Lock(); ret = _Everything_RequestFlags; _Everything_Unlock(); return ret; } HWND EVERYTHINGAPI Everything_GetReplyWindow(void) { HWND ret; _Everything_Lock(); ret = _Everything_ReplyWindow; _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetReplyID(void) { DWORD ret; _Everything_Lock(); ret = _Everything_ReplyID; _Everything_Unlock(); return ret; } // custom window proc static LRESULT WINAPI _Everything_window_proc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_COPYDATA: { COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam; switch(cds->dwData) { case _EVERYTHING_COPYDATA_QUERYREPLY: if (_Everything_QueryVersion == 2) { _Everything_FreeLists(); _Everything_List2 = _Everything_Alloc(cds->cbData); if (_Everything_List2) { CopyMemory(_Everything_List2,cds->lpData,cds->cbData); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } PostQuitMessage(0); } else if (_Everything_QueryVersion == 1) { _Everything_FreeLists(); _Everything_List = _Everything_Alloc(cds->cbData); if (_Everything_List) { CopyMemory(_Everything_List,cds->lpData,cds->cbData); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } PostQuitMessage(0); return TRUE; } break; } break; } } return DefWindowProc(hwnd,msg,wParam,lParam); } // get the search length static DWORD _Everything_GetSearchLengthW(void) { if (_Everything_Search) { if (_Everything_IsUnicodeSearch) { return _Everything_StringLengthW((LPCWSTR )_Everything_Search); } else { return MultiByteToWideChar(CP_ACP,0,(LPCSTR )_Everything_Search,-1,0,0); } } return 0; } // get the search length static DWORD _Everything_GetSearchLengthA(void) { if (_Everything_Search) { if (_Everything_IsUnicodeSearch) { return WideCharToMultiByte(CP_ACP,0,(LPCWSTR )_Everything_Search,-1,0,0,0,0); } else { return _Everything_StringLengthA((LPCSTR )_Everything_Search); } } return 0; } // get the search length static void _Everything_GetSearchTextW(LPWSTR wbuf) { DWORD wlen; if (_Everything_Search) { wlen = _Everything_GetSearchLengthW(); if (_Everything_IsUnicodeSearch) { CopyMemory(wbuf,_Everything_Search,(wlen+1) * sizeof(WCHAR)); return; } else { MultiByteToWideChar(CP_ACP,0,(LPCSTR )_Everything_Search,-1,wbuf,wlen+1); return; } } *wbuf = 0; } // get the search length static void _Everything_GetSearchTextA(LPSTR buf) { DWORD len; if (_Everything_Search) { len = _Everything_GetSearchLengthA(); if (_Everything_IsUnicodeSearch) { WideCharToMultiByte(CP_ACP,0,(LPCWSTR )_Everything_Search,-1,buf,len+1,0,0); return; } else { CopyMemory(buf,_Everything_Search,len+1); return; } } *buf = 0; } void EVERYTHINGAPI Everything_SetInstanceName(LPCWSTR name) { if (name == 0) { *_Everything_InstanceName = 0; return; } if (wcslen(name) > (sizeof(_Everything_InstanceName) / sizeof(wchar_t))) { return; } wcscpy(_Everything_InstanceName, name); } static DWORD EVERYTHINGAPI _Everything_query_thread_proc(void *param) { HWND everything_hwnd; everything_hwnd = es_find_instance_window(); if (everything_hwnd) { WNDCLASSEX wcex; HWND hwnd; MSG msg; int ret; ZeroMemory(&wcex,sizeof(WNDCLASSEX)); wcex.cbSize = sizeof(WNDCLASSEX); if (!GetClassInfoEx(GetModuleHandle(0),TEXT("EVERYTHING_DLL"),&wcex)) { ZeroMemory(&wcex,sizeof(WNDCLASSEX)); wcex.cbSize = sizeof(WNDCLASSEX); wcex.hInstance = GetModuleHandle(0); wcex.lpfnWndProc = _Everything_window_proc; wcex.lpszClassName = TEXT("EVERYTHING_DLL"); if (!RegisterClassEx(&wcex)) { _Everything_LastError = EVERYTHING_ERROR_REGISTERCLASSEX; return 0; } } //FIXME: this should be static so we keep file info cached. hwnd = CreateWindow( TEXT("EVERYTHING_DLL"), TEXT(""), 0, 0,0,0,0, 0,0,GetModuleHandle(0),0); if (hwnd) { _Everything_ChangeWindowMessageFilter(hwnd); _Everything_ReplyWindow = hwnd; _Everything_ReplyID = _EVERYTHING_COPYDATA_QUERYREPLY; if (_Everything_SendIPCQuery()) { // message pump loop: WaitMessage(); // update windows while(PeekMessage(&msg,NULL,0,0,0)) { ret = (DWORD)GetMessage(&msg,0,0,0); if (ret == -1) goto exit; if (!ret) goto exit; // let windows handle it. TranslateMessage(&msg); DispatchMessage(&msg); } goto loop; } exit: // get result from window. DestroyWindow(hwnd); } else { _Everything_LastError = EVERYTHING_ERROR_CREATEWINDOW; } } else { // the everything window was not found. // we can optionally RegisterWindowMessage("EVERYTHING_IPC_CREATED") and // wait for Everything to post this message to all top level windows when its up and running. _Everything_LastError = EVERYTHING_ERROR_IPC; } return 0; } static BOOL EVERYTHINGAPI _Everything_Query(void) { HANDLE hthread; DWORD thread_id; // reset the error flag. _Everything_LastError = 0; hthread = CreateThread(0,0,_Everything_query_thread_proc,0,0,&thread_id); if (hthread) { WaitForSingleObject(hthread,INFINITE); CloseHandle(hthread); } else { _Everything_LastError = EVERYTHING_ERROR_CREATETHREAD; } return (_Everything_LastError == 0)?TRUE:FALSE; } static BOOL _Everything_SendIPCQuery2(HWND everything_hwnd) { BOOL ret; DWORD size; EVERYTHING_IPC_QUERY2 *query; // try version 2. if (_Everything_IsUnicodeQuery) { // unicode size = sizeof(EVERYTHING_IPC_QUERY2) + ((_Everything_GetSearchLengthW() + 1) * sizeof(WCHAR)); } else { // ansi size = sizeof(EVERYTHING_IPC_QUERY2) + ((_Everything_GetSearchLengthA() + 1) * sizeof(char)); } // alloc query = _Everything_Alloc(size); if (query) { COPYDATASTRUCT cds; query->max_results = _Everything_Max; query->offset = _Everything_Offset; query->reply_copydata_message = _Everything_ReplyID; query->search_flags = (_Everything_Regex?EVERYTHING_IPC_REGEX:0) | (_Everything_MatchCase?EVERYTHING_IPC_MATCHCASE:0) | (_Everything_MatchWholeWord?EVERYTHING_IPC_MATCHWHOLEWORD:0) | (_Everything_MatchPath?EVERYTHING_IPC_MATCHPATH:0); query->reply_hwnd = (DWORD)(DWORD_PTR)_Everything_ReplyWindow; query->sort_type = (DWORD)_Everything_Sort; query->request_flags = (DWORD)_Everything_RequestFlags; if (_Everything_IsUnicodeQuery) { _Everything_GetSearchTextW((LPWSTR)(query + 1)); } else { _Everything_GetSearchTextA((LPSTR)(query + 1)); } cds.cbData = size; cds.dwData = _Everything_IsUnicodeQuery ? EVERYTHING_IPC_COPYDATA_QUERY2W : EVERYTHING_IPC_COPYDATA_QUERY2A; cds.lpData = query; if (SendMessage(everything_hwnd,WM_COPYDATA,(WPARAM)_Everything_ReplyWindow,(LPARAM)&cds)) { // successful. ret = TRUE; } else { // no ipc _Everything_LastError = EVERYTHING_ERROR_IPC; ret = FALSE; } // get result from window. _Everything_Free(query); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; ret = FALSE; } return ret; } static BOOL _Everything_ShouldUseVersion2(void) { if (_Everything_RequestFlags != (EVERYTHING_REQUEST_PATH | EVERYTHING_REQUEST_FILE_NAME)) { return TRUE; } if (_Everything_Sort != EVERYTHING_SORT_NAME_ASCENDING) { return TRUE; } // just use version 1 return FALSE; } static BOOL _Everything_SendIPCQuery(void) { HWND everything_hwnd; BOOL ret; // find the everything ipc window. everything_hwnd = es_find_instance_window(); if (everything_hwnd) { _Everything_QueryVersion = 2; // try version 2 first (if we specified some non-version 1 request flags or sort) if ((_Everything_ShouldUseVersion2()) && (_Everything_SendIPCQuery2(everything_hwnd))) { // sucessful. ret = TRUE; } else { DWORD len; DWORD size; void *query; // try version 1. if (_Everything_IsUnicodeQuery) { // unicode len = _Everything_GetSearchLengthW(); size = sizeof(EVERYTHING_IPC_QUERYW) - sizeof(WCHAR) + len*sizeof(WCHAR) + sizeof(WCHAR); } else { // ansi len = _Everything_GetSearchLengthA(); size = sizeof(EVERYTHING_IPC_QUERYA) - sizeof(char) + (len*sizeof(char)) + sizeof(char); } // alloc query = _Everything_Alloc(size); if (query) { COPYDATASTRUCT cds; if (_Everything_IsUnicodeQuery) { ((EVERYTHING_IPC_QUERYW *)query)->max_results = _Everything_Max; ((EVERYTHING_IPC_QUERYW *)query)->offset = _Everything_Offset; ((EVERYTHING_IPC_QUERYW *)query)->reply_copydata_message = _Everything_ReplyID; ((EVERYTHING_IPC_QUERYW *)query)->search_flags = (_Everything_Regex?EVERYTHING_IPC_REGEX:0) | (_Everything_MatchCase?EVERYTHING_IPC_MATCHCASE:0) | (_Everything_MatchWholeWord?EVERYTHING_IPC_MATCHWHOLEWORD:0) | (_Everything_MatchPath?EVERYTHING_IPC_MATCHPATH:0); ((EVERYTHING_IPC_QUERYW *)query)->reply_hwnd = (DWORD)(DWORD_PTR)_Everything_ReplyWindow; _Everything_GetSearchTextW(((EVERYTHING_IPC_QUERYW *)query)->search_string); } else { ((EVERYTHING_IPC_QUERYA *)query)->max_results = _Everything_Max; ((EVERYTHING_IPC_QUERYA *)query)->offset = _Everything_Offset; ((EVERYTHING_IPC_QUERYA *)query)->reply_copydata_message = _Everything_ReplyID; ((EVERYTHING_IPC_QUERYA *)query)->search_flags = (_Everything_Regex?EVERYTHING_IPC_REGEX:0) | (_Everything_MatchCase?EVERYTHING_IPC_MATCHCASE:0) | (_Everything_MatchWholeWord?EVERYTHING_IPC_MATCHWHOLEWORD:0) | (_Everything_MatchPath?EVERYTHING_IPC_MATCHPATH:0); ((EVERYTHING_IPC_QUERYA *)query)->reply_hwnd = (DWORD)(DWORD_PTR)_Everything_ReplyWindow; _Everything_GetSearchTextA(((EVERYTHING_IPC_QUERYA *)query)->search_string); } cds.cbData = size; cds.dwData = _Everything_IsUnicodeQuery ? EVERYTHING_IPC_COPYDATAQUERYW : EVERYTHING_IPC_COPYDATAQUERYA; cds.lpData = query; _Everything_QueryVersion = 1; if (SendMessage(everything_hwnd,WM_COPYDATA,(WPARAM)_Everything_ReplyWindow,(LPARAM)&cds)) { // sucessful. ret = TRUE; } else { // no ipc _Everything_LastError = EVERYTHING_ERROR_IPC; ret = FALSE; } // get result from window. _Everything_Free(query); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; ret = FALSE; } } } else { _Everything_LastError = EVERYTHING_ERROR_IPC; ret = FALSE; } return ret; } BOOL EVERYTHINGAPI Everything_QueryA(BOOL bWait) { BOOL ret; _Everything_Lock(); _Everything_IsUnicodeQuery = FALSE; if (bWait) { ret = _Everything_Query(); } else { ret = _Everything_SendIPCQuery(); } _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_QueryW(BOOL bWait) { BOOL ret; _Everything_Lock(); _Everything_IsUnicodeQuery = TRUE; if (bWait) { ret = _Everything_Query(); } else { ret = _Everything_SendIPCQuery(); } _Everything_Unlock(); return ret; } static int __cdecl _Everything_CompareA(const void *a,const void *b) { int i; i = stricmp(EVERYTHING_IPC_ITEMPATHA(_Everything_List,a),EVERYTHING_IPC_ITEMPATHA(_Everything_List,b)); if (!i) { return stricmp(EVERYTHING_IPC_ITEMFILENAMEA(_Everything_List,a),EVERYTHING_IPC_ITEMFILENAMEA(_Everything_List,b)); } else if (i > 0) { return 1; } else { return -1; } } static int __cdecl _Everything_CompareW(const void *a,const void *b) { int i; i = wcsicmp(EVERYTHING_IPC_ITEMPATHW(_Everything_List,a),EVERYTHING_IPC_ITEMPATHW(_Everything_List,b)); if (!i) { return wcsicmp(EVERYTHING_IPC_ITEMFILENAMEW(_Everything_List,a),EVERYTHING_IPC_ITEMFILENAMEW(_Everything_List,b)); } else if (i > 0) { return 1; } else { return -1; } } void EVERYTHINGAPI Everything_SortResultsByPath(void) { _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { qsort(((EVERYTHING_IPC_LISTW *)_Everything_List)->items,((EVERYTHING_IPC_LISTW *)_Everything_List)->numitems,sizeof(EVERYTHING_IPC_ITEMW),_Everything_CompareW); } else { qsort(((EVERYTHING_IPC_LISTA *)_Everything_List)->items,((EVERYTHING_IPC_LISTA *)_Everything_List)->numitems,sizeof(EVERYTHING_IPC_ITEMA),_Everything_CompareA); } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; } //FIXME://TODO: sort list2 _Everything_Unlock(); } DWORD EVERYTHINGAPI Everything_GetLastError(void) { DWORD ret; _Everything_Lock(); ret = _Everything_LastError; _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetNumFileResults(void) { DWORD ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->numfiles; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->numfiles; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = 0; } _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetNumFolderResults(void) { DWORD ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->numfolders; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->numfolders; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = 0; } _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetNumResults(void) { DWORD ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->numitems; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->numitems; } } else if (_Everything_List2) { ret = _Everything_List2->numitems; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = 0; } _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetTotFileResults(void) { DWORD ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->totfiles; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->totfiles; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = 0; } _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetTotFolderResults(void) { DWORD ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->totfolders; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->totfolders; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = 0; } _Everything_Unlock(); return ret; } DWORD EVERYTHINGAPI Everything_GetTotResults(void) { DWORD ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->totitems; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->totitems; } } else if (_Everything_List2) { ret = _Everything_List2->totitems; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = 0; } _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_IsVolumeResult(DWORD dwIndex) { BOOL ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsValidResultIndex(dwIndex)) { if (_Everything_IsUnicodeQuery) { ret = (((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex].flags & EVERYTHING_IPC_DRIVE) ? TRUE : FALSE; } else { ret = (((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex].flags & EVERYTHING_IPC_DRIVE) ? TRUE : FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else if (_Everything_List2) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = (((EVERYTHING_IPC_ITEM2 *)(_Everything_List2 + 1))[dwIndex].flags & EVERYTHING_IPC_DRIVE) ? TRUE : FALSE; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = FALSE; } _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_IsFolderResult(DWORD dwIndex) { BOOL ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsValidResultIndex(dwIndex)) { if (_Everything_IsUnicodeQuery) { ret = ((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex].flags & (EVERYTHING_IPC_FOLDER) ? TRUE : FALSE; } else { ret = ((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex].flags & (EVERYTHING_IPC_FOLDER) ? TRUE : FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else if (_Everything_List2) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = (((EVERYTHING_IPC_ITEM2 *)(_Everything_List2 + 1))[dwIndex].flags & (EVERYTHING_IPC_FOLDER)) ? TRUE : FALSE; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = FALSE; } _Everything_Unlock(); return ret; } BOOL EVERYTHINGAPI Everything_IsFileResult(DWORD dwIndex) { BOOL ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsValidResultIndex(dwIndex)) { if (_Everything_IsUnicodeQuery) { ret = (((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex].flags & (EVERYTHING_IPC_FOLDER)) ? FALSE : TRUE; } else { ret = (((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex].flags & (EVERYTHING_IPC_FOLDER)) ? FALSE : TRUE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else if (_Everything_List2) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = (((EVERYTHING_IPC_ITEM2 *)(_Everything_List2 + 1))[dwIndex].flags & (EVERYTHING_IPC_FOLDER)) ? FALSE : TRUE; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = FALSE; } _Everything_Unlock(); return ret; } LPCWSTR EVERYTHINGAPI Everything_GetResultFileNameW(DWORD dwIndex) { LPCWSTR ret; _Everything_Lock(); if ((_Everything_List) && (_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = EVERYTHING_IPC_ITEMFILENAMEW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex]); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else if ((_Everything_List2) && (_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_FILE_NAME); if (ret) { // skip length in characters. ret = (LPCWSTR)(((char *)ret) + sizeof(DWORD)); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = NULL; } _Everything_Unlock(); return ret; } LPCSTR EVERYTHINGAPI Everything_GetResultFileNameA(DWORD dwIndex) { LPCSTR ret; _Everything_Lock(); if ((_Everything_List) && (!_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = EVERYTHING_IPC_ITEMFILENAMEA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex]); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else if ((_Everything_List2) && (!_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_FILE_NAME); if (ret) { // skip length in characters. ret = (LPCSTR)(((char *)ret) + sizeof(DWORD)); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = NULL; } _Everything_Unlock(); return ret; } LPCWSTR EVERYTHINGAPI Everything_GetResultPathW(DWORD dwIndex) { LPCWSTR ret; _Everything_Lock(); if ((_Everything_List) && (_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = EVERYTHING_IPC_ITEMPATHW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex]); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else if ((_Everything_List2) && (_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_PATH); if (ret) { // skip length in characters. ret = (LPCWSTR)(((char *)ret) + sizeof(DWORD)); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = NULL; } _Everything_Unlock(); return ret; } LPCSTR EVERYTHINGAPI Everything_GetResultPathA(DWORD dwIndex) { LPCSTR ret; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = EVERYTHING_IPC_ITEMPATHA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex]); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else if ((_Everything_List2) && (!_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { ret = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_PATH); if (ret) { // skip length in characters. ret = (LPCSTR)(((char *)ret) + sizeof(DWORD)); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = NULL; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = NULL; } _Everything_Unlock(); return ret; } // max is in chars static DWORD _Everything_CopyW(LPWSTR buf,DWORD bufmax,DWORD catlen,LPCWSTR s) { DWORD wlen; if (buf) { buf += catlen; bufmax -= catlen; } wlen = _Everything_StringLengthW(s); if (!wlen) { if (buf) { buf[wlen] = 0; } return catlen; } // terminate if (wlen > bufmax-1) wlen = bufmax-1; if (buf) { CopyMemory(buf,s,wlen*sizeof(WCHAR)); buf[wlen] = 0; } return wlen + catlen; } static DWORD _Everything_CopyA(LPSTR buf,DWORD max,DWORD catlen,LPCSTR s) { DWORD len; if (buf) { buf += catlen; max -= catlen; } len = _Everything_StringLengthA(s); if (!len) { if (buf) { buf[len] = 0; } return catlen; } // terminate if (len > max-1) len = max-1; if (buf) { CopyMemory(buf,s,len*sizeof(char)); buf[len] = 0; } return len + catlen; } // max is in chars static DWORD _Everything_CopyWFromA(LPWSTR buf,DWORD bufmax,DWORD catlen,LPCSTR s) { DWORD wlen; if (buf) { buf += catlen; bufmax -= catlen; } wlen = MultiByteToWideChar(CP_ACP,0,s,_Everything_StringLengthA(s),0,0); if (!wlen) { if (buf) { buf[wlen] = 0; } return catlen; } // terminate if (wlen > bufmax-1) wlen = bufmax-1; if (buf) { MultiByteToWideChar(CP_ACP,0,s,_Everything_StringLengthA(s),buf,wlen); buf[wlen] = 0; } return wlen + catlen; } static DWORD _Everything_CopyAFromW(LPSTR buf,DWORD max,DWORD catlen,LPCWSTR s) { DWORD len; if (buf) { buf += catlen; max -= catlen; } len = WideCharToMultiByte(CP_ACP,0,s,_Everything_StringLengthW(s),0,0,0,0); if (!len) { if (buf) { buf[len] = 0; } return catlen; } // terminate if (len > max-1) len = max-1; if (buf) { WideCharToMultiByte(CP_ACP,0,s,_Everything_StringLengthW(s),buf,len,0,0); buf[len] = 0; } return len + catlen; } DWORD EVERYTHINGAPI Everything_GetResultFullPathNameW(DWORD dwIndex,LPWSTR wbuf,DWORD wbuf_size_in_wchars) { DWORD len; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsValidResultIndex(dwIndex)) { if (_Everything_IsUnicodeQuery) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,EVERYTHING_IPC_ITEMPATHW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex])); if (len) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,len,_Everything_IsSchemeNameW(EVERYTHING_IPC_ITEMPATHW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex])) ? L"/" : L"\\"); } } else { len = _Everything_CopyWFromA(wbuf,wbuf_size_in_wchars,0,EVERYTHING_IPC_ITEMPATHA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex])); if (len) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,len,_Everything_IsSchemeNameA(EVERYTHING_IPC_ITEMPATHA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex])) ? L"/" : L"\\"); } } if (_Everything_IsUnicodeQuery) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,len,EVERYTHING_IPC_ITEMFILENAMEW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex])); } else { len = _Everything_CopyWFromA(wbuf,wbuf_size_in_wchars,len,EVERYTHING_IPC_ITEMFILENAMEA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex])); } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,L""); } } else if (_Everything_List2) { if (_Everything_IsValidResultIndex(dwIndex)) { const void *full_path_and_name; full_path_and_name = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_FULL_PATH_AND_FILE_NAME); if (full_path_and_name) { // skip number of characters. full_path_and_name = (void *)(((char *)full_path_and_name) + sizeof(DWORD)); // we got the full path and name already. if (_Everything_IsUnicodeQuery) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,full_path_and_name); } else { len = _Everything_CopyWFromA(wbuf,wbuf_size_in_wchars,0,full_path_and_name); } } else { const void *path; path = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_PATH); if (path) { const void *name; // skip number of characters. path = (void *)(((char *)path) + sizeof(DWORD)); name = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_FILE_NAME); if (name) { // skip number of characters. name = (void *)(((char *)name) + sizeof(DWORD)); if (_Everything_IsUnicodeQuery) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,path); if (len) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,len,_Everything_IsSchemeNameW(path) ? L"/" : L"\\"); } } else { len = _Everything_CopyWFromA(wbuf,wbuf_size_in_wchars,0,path); if (len) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,len,_Everything_IsSchemeNameA(path) ? L"/" : L"\\"); } } if (_Everything_IsUnicodeQuery) { len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,len,name); } else { len = _Everything_CopyWFromA(wbuf,wbuf_size_in_wchars,len,name); } } else { // name data not available. _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,L""); } } else { // path data not available. _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,L""); } } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,L""); } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; len = _Everything_CopyW(wbuf,wbuf_size_in_wchars,0,L""); } _Everything_Unlock(); return len; } DWORD EVERYTHINGAPI Everything_GetResultFullPathNameA(DWORD dwIndex,LPSTR buf,DWORD bufsize) { DWORD len; _Everything_Lock(); if (_Everything_List) { if (_Everything_IsValidResultIndex(dwIndex)) { if (_Everything_IsUnicodeQuery) { len = _Everything_CopyAFromW(buf,bufsize,0,EVERYTHING_IPC_ITEMPATHW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex])); } else { len = _Everything_CopyA(buf,bufsize,0,EVERYTHING_IPC_ITEMPATHA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex])); } if (len) { len = _Everything_CopyA(buf,bufsize,len,_Everything_IsSchemeNameA(buf) ? "/" : "\\"); } if (_Everything_IsUnicodeQuery) { len = _Everything_CopyAFromW(buf,bufsize,len,EVERYTHING_IPC_ITEMFILENAMEW(_Everything_List,&((EVERYTHING_IPC_LISTW *)_Everything_List)->items[dwIndex])); } else { len = _Everything_CopyA(buf,bufsize,len,EVERYTHING_IPC_ITEMFILENAMEA(_Everything_List,&((EVERYTHING_IPC_LISTA *)_Everything_List)->items[dwIndex])); } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; len = _Everything_CopyA(buf,bufsize,0,""); } } else if (_Everything_List2) { if (_Everything_IsValidResultIndex(dwIndex)) { const void *full_path_and_name; full_path_and_name = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_FULL_PATH_AND_FILE_NAME); if (full_path_and_name) { // skip number of characters. full_path_and_name = (void *)(((char *)full_path_and_name) + sizeof(DWORD)); // we got the full path and name already. if (_Everything_IsUnicodeQuery) { len = _Everything_CopyAFromW(buf,bufsize,0,full_path_and_name); } else { len = _Everything_CopyA(buf,bufsize,0,full_path_and_name); } } else { const void *path; path = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_PATH); if (path) { const void *name; // skip number of characters. path = (void *)(((char *)path) + sizeof(DWORD)); name = _Everything_GetRequestData(dwIndex,EVERYTHING_REQUEST_FILE_NAME); if (name) { // skip number of characters. name = (void *)(((char *)name) + sizeof(DWORD)); if (_Everything_IsUnicodeQuery) { len = _Everything_CopyAFromW(buf,bufsize,0,path); } else { len = _Everything_CopyA(buf,bufsize,0,path); } if (len) { len = _Everything_CopyA(buf,bufsize,len,_Everything_IsSchemeNameA(buf) ? "/" : "\\"); } if (_Everything_IsUnicodeQuery) { len = _Everything_CopyAFromW(buf,bufsize,len,name); } else { len = _Everything_CopyA(buf,bufsize,len,name); } } else { // name data not available. _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; len = _Everything_CopyA(buf,bufsize,0,""); } } else { // path data not available. _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; len = _Everything_CopyA(buf,bufsize,0,""); } } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; len = _Everything_CopyA(buf,bufsize,0,""); } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; len = _Everything_CopyA(buf,bufsize,0,""); } _Everything_Unlock(); return len; } BOOL EVERYTHINGAPI Everything_IsQueryReply(UINT message,WPARAM wParam,LPARAM lParam,DWORD dwId) { if (message == WM_COPYDATA) { COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam; if (cds) { if ((cds->dwData == _Everything_ReplyID) && (cds->dwData == dwId)) { if (_Everything_QueryVersion == 2) { _Everything_FreeLists(); _Everything_List2 = _Everything_Alloc(cds->cbData); if (_Everything_List2) { _Everything_LastError = 0; CopyMemory(_Everything_List2,cds->lpData,cds->cbData); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } return TRUE; } else if (_Everything_QueryVersion == 1) { if (_Everything_IsUnicodeQuery) { _Everything_FreeLists(); _Everything_List = _Everything_Alloc(cds->cbData); if (_Everything_List) { _Everything_LastError = 0; CopyMemory(_Everything_List,cds->lpData,cds->cbData); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } return TRUE; } else { _Everything_FreeLists(); _Everything_List = _Everything_Alloc(cds->cbData); if (_Everything_List) { _Everything_LastError = 0; CopyMemory(_Everything_List,cds->lpData,cds->cbData); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; } return TRUE; } } } } } return FALSE; } void EVERYTHINGAPI Everything_Reset(void) { _Everything_Lock(); if (_Everything_Search) { _Everything_Free(_Everything_Search); _Everything_Search = 0; } _Everything_FreeLists(); // reset state _Everything_MatchPath = FALSE; _Everything_MatchCase = FALSE; _Everything_MatchWholeWord = FALSE; _Everything_Regex = FALSE; _Everything_LastError = FALSE; _Everything_Max = EVERYTHING_IPC_ALLRESULTS; _Everything_Offset = 0; _Everything_Sort = EVERYTHING_SORT_NAME_ASCENDING; _Everything_RequestFlags = EVERYTHING_REQUEST_PATH | EVERYTHING_REQUEST_FILE_NAME; _Everything_IsUnicodeQuery = FALSE; _Everything_IsUnicodeSearch = FALSE; _Everything_Unlock(); } void EVERYTHINGAPI Everything_CleanUp(void) { Everything_Reset(); DeleteCriticalSection(&_Everything_cs); _Everything_Initialized = 0; } static void *_Everything_Alloc(DWORD size) { return HeapAlloc(GetProcessHeap(),0,size); } static void _Everything_Free(void *ptr) { HeapFree(GetProcessHeap(),0,ptr); } EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultListSort(void) { DWORD dwSort; _Everything_Lock(); dwSort = EVERYTHING_SORT_NAME_ASCENDING; if (_Everything_List2) { dwSort = _Everything_List2->sort_type; } _Everything_Unlock(); return dwSort; } EVERYTHINGUSERAPI DWORD EVERYTHINGAPI Everything_GetResultListRequestFlags(void) { DWORD dwRequestFlags; _Everything_Lock(); dwRequestFlags = EVERYTHING_REQUEST_PATH | EVERYTHING_REQUEST_FILE_NAME; if (_Everything_List2) { dwRequestFlags = _Everything_List2->request_flags; } _Everything_Unlock(); return dwRequestFlags; } static void _Everything_FreeLists(void) { if (_Everything_List) { _Everything_Free(_Everything_List); _Everything_List = 0; } if (_Everything_List2) { _Everything_Free(_Everything_List2); _Everything_List2 = 0; } } static BOOL _Everything_IsValidResultIndex(DWORD dwIndex) { if (dwIndex < 0) { return FALSE; } if (dwIndex >= Everything_GetNumResults()) { return FALSE; } return TRUE; } // assumes _Everything_List2 and dwIndex are valid. static void *_Everything_GetRequestData(DWORD dwIndex,DWORD dwRequestType) { char *p; EVERYTHING_IPC_ITEM2 *items; items = (EVERYTHING_IPC_ITEM2 *)(_Everything_List2 + 1); p = ((char *)_Everything_List2) + items[dwIndex].data_offset; if (_Everything_List2->request_flags & EVERYTHING_REQUEST_FILE_NAME) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_FILE_NAME) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_PATH) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_PATH) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_FULL_PATH_AND_FILE_NAME) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_FULL_PATH_AND_FILE_NAME) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_EXTENSION) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_EXTENSION) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_SIZE) { if (dwRequestType == EVERYTHING_REQUEST_SIZE) { return p; } p += sizeof(LARGE_INTEGER); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_DATE_CREATED) { if (dwRequestType == EVERYTHING_REQUEST_DATE_CREATED) { return p; } p += sizeof(FILETIME); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_DATE_MODIFIED) { if (dwRequestType == EVERYTHING_REQUEST_DATE_MODIFIED) { return p; } p += sizeof(FILETIME); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_DATE_ACCESSED) { if (dwRequestType == EVERYTHING_REQUEST_DATE_ACCESSED) { return p; } p += sizeof(FILETIME); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_ATTRIBUTES) { if (dwRequestType == EVERYTHING_REQUEST_ATTRIBUTES) { return p; } p += sizeof(DWORD); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_FILE_LIST_FILE_NAME) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_FILE_LIST_FILE_NAME) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_RUN_COUNT) { if (dwRequestType == EVERYTHING_REQUEST_RUN_COUNT) { return p; } p += sizeof(DWORD); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_DATE_RUN) { if (dwRequestType == EVERYTHING_REQUEST_DATE_RUN) { return p; } p += sizeof(FILETIME); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_DATE_RECENTLY_CHANGED) { if (dwRequestType == EVERYTHING_REQUEST_DATE_RECENTLY_CHANGED) { return p; } p += sizeof(FILETIME); } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_HIGHLIGHTED_FILE_NAME) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_HIGHLIGHTED_FILE_NAME) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_HIGHLIGHTED_PATH) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_HIGHLIGHTED_PATH) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } if (_Everything_List2->request_flags & EVERYTHING_REQUEST_HIGHLIGHTED_FULL_PATH_AND_FILE_NAME) { DWORD len; if (dwRequestType == EVERYTHING_REQUEST_HIGHLIGHTED_FULL_PATH_AND_FILE_NAME) { return p; } len = *(DWORD *)p; p += sizeof(DWORD); if (_Everything_IsUnicodeQuery) { p += (len + 1) * sizeof(WCHAR); } else { p += (len + 1) * sizeof(CHAR); } } return NULL; } static BOOL _Everything_IsSchemeNameW(LPCWSTR s) { LPCWSTR p; p = s; while(*p) { if (*p == ':') { p++; if ((p[0] == '/') && (p[1] == '/')) { return TRUE; } break; } p++; } return FALSE; } static BOOL _Everything_IsSchemeNameA(LPCSTR s) { LPCSTR p; p = s; while(*p) { if (*p == ':') { p++; if ((p[0] == '/') && (p[1] == '/')) { return TRUE; } break; } p++; } return FALSE; } static void _Everything_ChangeWindowMessageFilter(HWND hwnd) { if (!_Everything_GotChangeWindowMessageFilterEx) { // allow the everything window to send a reply. _Everything_user32_hdll = LoadLibraryW(L"user32.dll"); if (_Everything_user32_hdll) { _Everything_pChangeWindowMessageFilterEx = (BOOL (WINAPI *)(HWND hWnd,UINT message,DWORD action,_EVERYTHING_PCHANGEFILTERSTRUCT pChangeFilterStruct))GetProcAddress(_Everything_user32_hdll,"ChangeWindowMessageFilterEx"); } _Everything_GotChangeWindowMessageFilterEx = 1; } if (_Everything_GotChangeWindowMessageFilterEx) { if (_Everything_pChangeWindowMessageFilterEx) { _Everything_pChangeWindowMessageFilterEx(hwnd,WM_COPYDATA,_EVERYTHING_MSGFLT_ALLOW,0); } } } static LPCWSTR _Everything_GetResultRequestStringW(DWORD dwIndex,DWORD dwRequestType) { LPCWSTR str; _Everything_Lock(); if ((_Everything_List2) && (_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { str = _Everything_GetRequestData(dwIndex,dwRequestType); if (str) { // skip length in characters. str = (LPCWSTR)(((char *)str) + sizeof(DWORD)); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; str = NULL; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; str = NULL; } _Everything_Unlock(); return str; } static LPCSTR _Everything_GetResultRequestStringA(DWORD dwIndex,DWORD dwRequestType) { LPCSTR str; _Everything_Lock(); if ((_Everything_List2) && (!_Everything_IsUnicodeQuery)) { if (_Everything_IsValidResultIndex(dwIndex)) { str = _Everything_GetRequestData(dwIndex,dwRequestType); if (str) { // skip length in characters. str = (LPCSTR)(((char *)str) + sizeof(DWORD)); } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; str = NULL; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; str = NULL; } _Everything_Unlock(); return str; } static BOOL _Everything_GetResultRequestData(DWORD dwIndex,DWORD dwRequestType,void *data,int size) { BOOL ret; _Everything_Lock(); if (_Everything_List2) { if (_Everything_IsValidResultIndex(dwIndex)) { void *request_data; request_data = _Everything_GetRequestData(dwIndex,dwRequestType); if (request_data) { CopyMemory(data,request_data,size); ret = TRUE; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDREQUEST; ret = FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDINDEX; ret = FALSE; } } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = FALSE; } _Everything_Unlock(); return ret; } LPCWSTR EVERYTHINGAPI Everything_GetResultExtensionW(DWORD dwIndex) { return _Everything_GetResultRequestStringW(dwIndex,EVERYTHING_REQUEST_EXTENSION); } LPCSTR EVERYTHINGAPI Everything_GetResultExtensionA(DWORD dwIndex) { return _Everything_GetResultRequestStringA(dwIndex,EVERYTHING_REQUEST_EXTENSION); } BOOL EVERYTHINGAPI Everything_GetResultSize(DWORD dwIndex,LARGE_INTEGER *lpSize) { return _Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_SIZE,lpSize,sizeof(LARGE_INTEGER)); } BOOL EVERYTHINGAPI Everything_GetResultDateCreated(DWORD dwIndex,FILETIME *lpDateCreated) { return _Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_DATE_CREATED,lpDateCreated,sizeof(FILETIME)); } BOOL EVERYTHINGAPI Everything_GetResultDateModified(DWORD dwIndex,FILETIME *lpDateModified) { return _Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_DATE_MODIFIED,lpDateModified,sizeof(FILETIME)); } BOOL EVERYTHINGAPI Everything_GetResultDateAccessed(DWORD dwIndex,FILETIME *lpDateAccessed) { return _Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_DATE_ACCESSED,lpDateAccessed,sizeof(FILETIME)); } DWORD EVERYTHINGAPI Everything_GetResultAttributes(DWORD dwIndex) { DWORD dwAttributes; if (_Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_ATTRIBUTES,&dwAttributes,sizeof(DWORD))) { return dwAttributes; } return INVALID_FILE_ATTRIBUTES; } LPCWSTR EVERYTHINGAPI Everything_GetResultFileListFileNameW(DWORD dwIndex) { return _Everything_GetResultRequestStringW(dwIndex,EVERYTHING_REQUEST_FILE_LIST_FILE_NAME); } LPCSTR EVERYTHINGAPI Everything_GetResultFileListFileNameA(DWORD dwIndex) { return _Everything_GetResultRequestStringA(dwIndex,EVERYTHING_REQUEST_FILE_LIST_FILE_NAME); } DWORD EVERYTHINGAPI Everything_GetResultRunCount(DWORD dwIndex) { DWORD dwRunCount; if (_Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_RUN_COUNT,&dwRunCount,sizeof(DWORD))) { return dwRunCount; } return 0; } BOOL EVERYTHINGAPI Everything_GetResultDateRun(DWORD dwIndex,FILETIME *lpDateRun) { return _Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_DATE_RUN,lpDateRun,sizeof(FILETIME)); } BOOL EVERYTHINGAPI Everything_GetResultDateRecentlyChanged(DWORD dwIndex,FILETIME *lpDateRecentlyChanged) { return _Everything_GetResultRequestData(dwIndex,EVERYTHING_REQUEST_DATE_RECENTLY_CHANGED,lpDateRecentlyChanged,sizeof(FILETIME)); } LPCWSTR EVERYTHINGAPI Everything_GetResultHighlightedFileNameW(DWORD dwIndex) { return _Everything_GetResultRequestStringW(dwIndex,EVERYTHING_REQUEST_HIGHLIGHTED_FILE_NAME); } LPCSTR EVERYTHINGAPI Everything_GetResultHighlightedFileNameA(DWORD dwIndex) { return _Everything_GetResultRequestStringA(dwIndex,EVERYTHING_REQUEST_HIGHLIGHTED_FILE_NAME); } LPCWSTR EVERYTHINGAPI Everything_GetResultHighlightedPathW(DWORD dwIndex) { return _Everything_GetResultRequestStringW(dwIndex,EVERYTHING_REQUEST_HIGHLIGHTED_PATH); } LPCSTR EVERYTHINGAPI Everything_GetResultHighlightedPathA(DWORD dwIndex) { return _Everything_GetResultRequestStringA(dwIndex,EVERYTHING_REQUEST_HIGHLIGHTED_PATH); } LPCWSTR EVERYTHINGAPI Everything_GetResultHighlightedFullPathAndFileNameW(DWORD dwIndex) { return _Everything_GetResultRequestStringW(dwIndex,EVERYTHING_REQUEST_HIGHLIGHTED_FULL_PATH_AND_FILE_NAME); } LPCSTR EVERYTHINGAPI Everything_GetResultHighlightedFullPathAndFileNameA(DWORD dwIndex) { return _Everything_GetResultRequestStringA(dwIndex,EVERYTHING_REQUEST_HIGHLIGHTED_FULL_PATH_AND_FILE_NAME); } static BOOL _Everything_SendAPIBoolCommand(int command,LPARAM lParam) { HWND everything_hwnd; everything_hwnd = es_find_instance_window(); if (everything_hwnd) { _Everything_LastError = 0; if (SendMessage(everything_hwnd,EVERYTHING_WM_IPC,command,lParam)) { return TRUE; } else { return FALSE; } } else { // the everything window was not found. // we can optionally RegisterWindowMessage("EVERYTHING_IPC_CREATED") and // wait for Everything to post this message to all top level windows when its up and running. _Everything_LastError = EVERYTHING_ERROR_IPC; return FALSE; } } static DWORD _Everything_SendAPIDwordCommand(int command,LPARAM lParam) { HWND everything_hwnd; everything_hwnd = es_find_instance_window(); if (everything_hwnd) { _Everything_LastError = 0; return (DWORD)SendMessage(everything_hwnd,EVERYTHING_WM_IPC,command,lParam); } else { // the everything window was not found. // we can optionally RegisterWindowMessage("EVERYTHING_IPC_CREATED") and // wait for Everything to post this message to all top level windows when its up and running. _Everything_LastError = EVERYTHING_ERROR_IPC; return 0; } } BOOL EVERYTHINGAPI Everything_IsDBLoaded(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_IS_DB_LOADED,0); } BOOL EVERYTHINGAPI Everything_IsAdmin(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_IS_ADMIN,0); } BOOL EVERYTHINGAPI Everything_IsAppData(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_IS_APPDATA,0); } BOOL EVERYTHINGAPI Everything_RebuildDB(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_REBUILD_DB,0); } BOOL EVERYTHINGAPI Everything_UpdateAllFolderIndexes(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_UPDATE_ALL_FOLDER_INDEXES,0); } BOOL EVERYTHINGAPI Everything_SaveDB(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_SAVE_DB,0); } BOOL EVERYTHINGAPI Everything_SaveRunHistory(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_SAVE_RUN_HISTORY,0); } BOOL EVERYTHINGAPI Everything_DeleteRunHistory(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_DELETE_RUN_HISTORY,0); } DWORD EVERYTHINGAPI Everything_GetMajorVersion(void) { return _Everything_SendAPIDwordCommand(EVERYTHING_IPC_GET_MAJOR_VERSION,0); } DWORD EVERYTHINGAPI Everything_GetMinorVersion(void) { return _Everything_SendAPIDwordCommand(EVERYTHING_IPC_GET_MINOR_VERSION,0); } DWORD EVERYTHINGAPI Everything_GetRevision(void) { return _Everything_SendAPIDwordCommand(EVERYTHING_IPC_GET_REVISION,0); } DWORD EVERYTHINGAPI Everything_GetBuildNumber(void) { return _Everything_SendAPIDwordCommand(EVERYTHING_IPC_GET_BUILD_NUMBER,0); } DWORD EVERYTHINGAPI Everything_GetTargetMachine(void) { return _Everything_SendAPIDwordCommand(EVERYTHING_IPC_GET_TARGET_MACHINE,0); } BOOL EVERYTHINGAPI Everything_Exit(void) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_EXIT,0); } BOOL EVERYTHINGAPI Everything_IsFastSort(DWORD sortType) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_IS_FAST_SORT,(LPARAM)sortType); } BOOL EVERYTHINGAPI Everything_IsFileInfoIndexed(DWORD fileInfoType) { return _Everything_SendAPIBoolCommand(EVERYTHING_IPC_IS_FILE_INFO_INDEXED,(LPARAM)fileInfoType); } static LRESULT _Everything_SendCopyData(int command,const void *data,int size) { HWND everything_hwnd; everything_hwnd = es_find_instance_window(); if (everything_hwnd) { COPYDATASTRUCT cds; cds.cbData = size; cds.dwData = command; cds.lpData = (void *)data; return SendMessage(everything_hwnd,WM_COPYDATA,0,(LPARAM)&cds); } else { // the everything window was not found. // we can optionally RegisterWindowMessage("EVERYTHING_IPC_CREATED") and // wait for Everything to post this message to all top level windows when its up and running. _Everything_LastError = EVERYTHING_ERROR_IPC; return FALSE; } } DWORD EVERYTHINGAPI Everything_GetRunCountFromFileNameW(LPCWSTR lpFileName) { return (DWORD)_Everything_SendCopyData(EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTW,lpFileName,(_Everything_StringLengthW(lpFileName) + 1) * sizeof(WCHAR)); } DWORD EVERYTHINGAPI Everything_GetRunCountFromFileNameA(LPCSTR lpFileName) { return (DWORD)_Everything_SendCopyData(EVERYTHING_IPC_COPYDATA_GET_RUN_COUNTA,lpFileName,_Everything_StringLengthA(lpFileName) + 1); } BOOL EVERYTHINGAPI Everything_SetRunCountFromFileNameW(LPCWSTR lpFileName,DWORD dwRunCount) { EVERYTHING_IPC_RUN_HISTORY *run_history; DWORD len; BOOL ret; len = _Everything_StringLengthW(lpFileName); run_history = _Everything_Alloc(sizeof(EVERYTHING_IPC_RUN_HISTORY) + ((len + 1) * sizeof(WCHAR))); if (run_history) { run_history->run_count = dwRunCount; CopyMemory(run_history + 1,lpFileName,((len + 1) * sizeof(WCHAR))); if (_Everything_SendCopyData(EVERYTHING_IPC_COPYDATA_SET_RUN_COUNTW,run_history,sizeof(EVERYTHING_IPC_RUN_HISTORY) + ((len + 1) * sizeof(WCHAR)))) { ret = TRUE; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = FALSE; } _Everything_Free(run_history); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; ret = FALSE; } return ret; } BOOL EVERYTHINGAPI Everything_SetRunCountFromFileNameA(LPCSTR lpFileName,DWORD dwRunCount) { EVERYTHING_IPC_RUN_HISTORY *run_history; DWORD len; BOOL ret; len = _Everything_StringLengthA(lpFileName); run_history = _Everything_Alloc(sizeof(EVERYTHING_IPC_RUN_HISTORY) + (len + 1)); if (run_history) { run_history->run_count = dwRunCount; CopyMemory(run_history + 1,lpFileName,(len + 1)); if (_Everything_SendCopyData(EVERYTHING_IPC_COPYDATA_SET_RUN_COUNTA,run_history,sizeof(EVERYTHING_IPC_RUN_HISTORY) + (len + 1))) { ret = TRUE; } else { _Everything_LastError = EVERYTHING_ERROR_INVALIDCALL; ret = FALSE; } _Everything_Free(run_history); } else { _Everything_LastError = EVERYTHING_ERROR_MEMORY; ret = FALSE; } return ret; } DWORD EVERYTHINGAPI Everything_IncRunCountFromFileNameW(LPCWSTR lpFileName) { return (DWORD)_Everything_SendCopyData(EVERYTHING_IPC_COPYDATA_INC_RUN_COUNTW,lpFileName,(_Everything_StringLengthW(lpFileName) + 1) * sizeof(WCHAR)); } DWORD EVERYTHINGAPI Everything_IncRunCountFromFileNameA(LPCSTR lpFileName) { return (DWORD)_Everything_SendCopyData(EVERYTHING_IPC_COPYDATA_INC_RUN_COUNTA,lpFileName,_Everything_StringLengthA(lpFileName) + 1); } ================================================ FILE: EverythingSDK/src/Everything64.def ================================================ LIBRARY Everything64 EXPORTS Everything_GetLastError Everything_SetSearchA Everything_SetSearchW Everything_SetMatchPath Everything_SetMatchCase Everything_SetMatchWholeWord Everything_SetRegex Everything_SetMax Everything_SetOffset Everything_SetReplyID Everything_SetReplyWindow Everything_GetSearchA Everything_GetSearchW Everything_GetMatchPath Everything_GetMatchCase Everything_GetMatchWholeWord Everything_GetRegex Everything_GetMax Everything_GetOffset Everything_GetReplyID Everything_GetReplyWindow Everything_QueryA Everything_QueryW Everything_IsQueryReply Everything_SortResultsByPath Everything_GetNumFileResults Everything_GetNumFolderResults Everything_GetNumResults Everything_GetTotFileResults Everything_GetTotFolderResults Everything_GetTotResults Everything_IsVolumeResult Everything_IsFolderResult Everything_IsFileResult Everything_GetResultFileNameA Everything_GetResultFileNameW Everything_GetResultPathA Everything_GetResultPathW Everything_GetResultFullPathNameA Everything_GetResultFullPathNameW Everything_Reset Everything_CleanUp Everything_SetSort Everything_SetRequestFlags Everything_GetSort Everything_GetRequestFlags Everything_GetResultListSort Everything_GetResultListRequestFlags Everything_GetResultExtensionW Everything_GetResultExtensionA Everything_GetResultSize Everything_GetResultDateCreated Everything_GetResultDateModified Everything_GetResultDateAccessed Everything_GetResultAttributes Everything_GetResultFileListFileNameW Everything_GetResultFileListFileNameA Everything_GetResultRunCount Everything_GetResultDateRun Everything_GetResultDateRecentlyChanged Everything_GetResultHighlightedFileNameW Everything_GetResultHighlightedFileNameA Everything_GetResultHighlightedPathW Everything_GetResultHighlightedPathA Everything_GetResultHighlightedFullPathAndFileNameW Everything_GetResultHighlightedFullPathAndFileNameA Everything_GetMajorVersion Everything_GetMinorVersion Everything_GetRevision Everything_GetBuildNumber Everything_Exit Everything_IsDBLoaded Everything_IsAdmin Everything_IsAppData Everything_RebuildDB Everything_UpdateAllFolderIndexes Everything_SaveDB Everything_SaveRunHistory Everything_DeleteRunHistory Everything_GetTargetMachine Everything_IsFastSort Everything_IsFileInfoIndexed Everything_GetRunCountFromFileNameW Everything_GetRunCountFromFileNameA Everything_SetRunCountFromFileNameW Everything_SetRunCountFromFileNameA Everything_IncRunCountFromFileNameW Everything_IncRunCountFromFileNameA Everything_SetInstanceName ================================================ FILE: EverythingToolbar/Behaviors/FlowDirectionAwareness.cs ================================================ using System.Globalization; using System.Windows; using Microsoft.Xaml.Behaviors; namespace EverythingToolbar.Behaviors { public class FlowDirectionAwareness : Behavior { protected override void OnAttached() { base.OnAttached(); UpdateFlowDirection(); } private void UpdateFlowDirection() { if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) { AssociatedObject.FlowDirection = FlowDirection.RightToLeft; } else { AssociatedObject.FlowDirection = FlowDirection.LeftToRight; } } } } ================================================ FILE: EverythingToolbar/Behaviors/ThemeAwareness.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Reflection; using System.Windows; using System.Windows.Media; using EverythingToolbar.Helpers; using Microsoft.Xaml.Behaviors; using NLog; using Windows.UI.ViewManagement; using Color = Windows.UI.Color; namespace EverythingToolbar.Behaviors { public enum Theme { Dark, Light, } public class ResourcesChangedEventArgs : EventArgs { public Theme NewTheme { get; set; } } public class ThemeAwareness : Behavior { public static event EventHandler ResourceChanged; private readonly List _addedDictionaries = new(); private UISettings _settings; private static readonly RegistryEntry SystemThemeRegistryEntry = new( "HKEY_CURRENT_USER", @"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "SystemUsesLightTheme" ); private static readonly ILogger Logger = ToolbarLogger.GetLogger(); protected override void OnAttached() { base.OnAttached(); if (AssociatedObject.IsLoaded) { AutoApplyTheme(); } else { AssociatedObject.Loaded += (_, _) => { AutoApplyTheme(); }; } } public ThemeAwareness() { var systemThemeWatcher = new RegistryWatcher(SystemThemeRegistryEntry); systemThemeWatcher.OnChangeValue += newValue => { Dispatcher.Invoke(() => { var theme = GetThemeFromRegistryValue((int)newValue); ApplyTheme(theme); }); }; try { _settings = new UISettings(); _settings.ColorValuesChanged += (sender, args) => { Dispatcher.Invoke(AutoApplyTheme); }; } catch { Logger.Info("Could not apply accent color automatically."); } ToolbarSettings.User.PropertyChanged += OnSettingsChanged; } private void OnSettingsChanged(object sender, PropertyChangedEventArgs e) { if ( e.PropertyName is nameof(ToolbarSettings.User.ItemTemplate) or nameof(ToolbarSettings.User.ThemeOverride) or nameof(ToolbarSettings.User.ForceWin10Behavior) ) { AutoApplyTheme(); } } private Theme GetThemeFromRegistryValue(int registryValue) { if (ToolbarSettings.User.ThemeOverride.ToLower() == "light") { return Theme.Light; } if (ToolbarSettings.User.ThemeOverride.ToLower() == "dark") { return Theme.Dark; } return registryValue == 1 ? Theme.Light : Theme.Dark; } private void AutoApplyTheme() { var themeValue = (int)SystemThemeRegistryEntry.GetValue(0); var theme = GetThemeFromRegistryValue(themeValue); ApplyTheme(theme); } private void ApplyTheme(Theme theme) { foreach (var dict in _addedDictionaries) { AssociatedObject.Resources.MergedDictionaries.Remove(dict); } _addedDictionaries.Clear(); var assemblyLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var themeLocation = assemblyLocation; if (Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows11) themeLocation = Path.Combine(themeLocation, "Themes", "Win11"); else themeLocation = Path.Combine(themeLocation, "Themes", "Win10"); // Apply all control styles contained in "Controls" subdirectory var controlsLocation = new DirectoryInfo(Path.Combine(themeLocation, "Controls")); foreach (var file in controlsLocation.GetFiles("*.xaml")) AddResource(file.FullName); // Apply color scheme according to Windows theme var themeFileName = theme == Theme.Light ? "Light.xaml" : "Dark.xaml"; AddResource(Path.Combine(themeLocation, themeFileName)); // Apply ItemTemplate style var dataTemplateLocation = Path.Combine( assemblyLocation, "ItemTemplates", ToolbarSettings.User.ItemTemplate + ".xaml" ); AddResource( dataTemplateLocation, fallbackPath: Path.Combine(assemblyLocation, "ItemTemplates", "Normal.xaml") ); // Apply accent color if (_settings != null) { if (theme == Theme.Light) SetAccentColor(GetBrush(_settings.GetColorValue(UIColorType.AccentDark1))); else SetAccentColor(GetBrush(_settings.GetColorValue(UIColorType.AccentLight2))); } else { SetAccentColor(new SolidColorBrush(Colors.DimGray)); } // Notify resource change ResourceChanged?.Invoke(this, new ResourcesChangedEventArgs { NewTheme = theme }); } private void AddResource(string path, string fallbackPath = null) { if (!File.Exists(path)) { Logger.Error("Could not find resource file " + path); if (fallbackPath != null) AddResource(fallbackPath); return; } var resDict = new ResourceDictionary { Source = new Uri(path) }; AssociatedObject.Resources.MergedDictionaries.Add(resDict); _addedDictionaries.Add(resDict); } private void SetAccentColor(SolidColorBrush brush) { var resDict = new ResourceDictionary(); resDict.Add("AccentColor", brush); AssociatedObject.Resources.MergedDictionaries.Add(resDict); _addedDictionaries.Add(resDict); } private static SolidColorBrush GetBrush(Color color) { return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B)); } } } ================================================ FILE: EverythingToolbar/Behaviors/WpfUiBehavior.cs ================================================ using System.Windows; using EverythingToolbar.Helpers; using Microsoft.Xaml.Behaviors; using Wpf.Ui.Appearance; namespace EverythingToolbar.Behaviors { public class WpfUiBehavior : Behavior { private static readonly RegistryEntry SystemThemeRegistryEntry = new( "HKEY_CURRENT_USER", @"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "AppsUseLightTheme" ); protected override void OnAttached() { base.OnAttached(); if (AssociatedObject.IsLoaded) AutoApplyTheme(); else AssociatedObject.Loaded += (_, _) => { AutoApplyTheme(); }; } private void ApplyTheme(Theme theme) { ApplicationThemeManager.Apply(theme == Theme.Light ? ApplicationTheme.Light : ApplicationTheme.Dark); ApplicationThemeManager.Apply(AssociatedObject); } private void AutoApplyTheme() { var themeValue = SystemThemeRegistryEntry.GetValue(0) as int? ?? 0; var theme = GetThemeFromRegistryValue(themeValue); ApplyTheme(theme); } private Theme GetThemeFromRegistryValue(int registryValue) { if (ToolbarSettings.User.ThemeOverride.ToLower() == "light") { return Theme.Light; } if (ToolbarSettings.User.ThemeOverride.ToLower() == "dark") { return Theme.Dark; } return registryValue == 1 ? Theme.Light : Theme.Dark; } } } ================================================ FILE: EverythingToolbar/Controls/AcrylicWindow.cs ================================================ using System; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Shell; using EverythingToolbar.Behaviors; using EverythingToolbar.Helpers; namespace EverythingToolbar.Controls { public class AcrylicWindow : Window { [DllImport("DWMAPI")] private static extern IntPtr DwmExtendFrameIntoClientArea(IntPtr hwnd, ref Margins margins); [DllImport("DWMAPI")] private static extern IntPtr DwmSetWindowAttribute( IntPtr hwnd, DwmWindowAttribute attribute, ref int value, uint dataSize ); [DllImport("User32")] private static extern bool SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data); [DllImport("User32")] private static extern bool SetWindowPos( IntPtr hwnd, IntPtr hwndInsertAfter, int x, int y, int width, int height, SetWindowPosFlags flags ); [StructLayout(LayoutKind.Sequential)] private struct WindowCompositionAttributeData { public WindowCompositionAttribute Attribute; public IntPtr DataPointer; public uint DataSize; } [StructLayout(LayoutKind.Sequential)] private struct AccentPolicy { public AccentState AccentState; public AccentFlags AccentFlags; public int GradientColor; public int AnimationId; } [StructLayout(LayoutKind.Sequential)] private struct Margins { public int LeftWidth; public int RightWidth; public int TopHeight; public int BottomHeight; } private enum AccentState { Disabled, EnableGradient = 1, EnableTransparent = 2, EnableBlurBehind = 3, EnableAcrylicBlurBehind = 4, EnableHostBackdrop = 5, InvalidState = 6, } [Flags] private enum AccentFlags { None = 0, ExtendSize = 0x4, LeftBorder = 0x20, TopBorder = 0x40, RightBorder = 0x80, BottomBorder = 0x100, AllBorder = LeftBorder | TopBorder | RightBorder | BottomBorder, } private enum WindowCompositionAttribute { WcaAccentPolicy = 19, } private enum DwmWindowAttribute { WINDOW_CORNER_PREFERENCE = 33, } private enum WindowCorner { Default = 0, DoNotRound = 1, Round = 2, RoundSmall = 3, } [Flags] private enum SetWindowPosFlags { ASYNCWINDOWPOS = 16384, DEFERERASE = 8192, DRAWFRAME = 32, FRAMECHANGED = 32, HIDEWINDOW = 128, NOACTIVATE = 16, NOCOPYBITS = 256, NOMOVE = 2, NOOWNERZORDER = 512, NOREDRAW = 8, NOREPOSITION = 512, NOSENDCHANGING = 1024, NOSIZE = 1, NOZORDER = 4, SHOWWINDOW = 64, } public bool IsAcrylicEnabled { get => (bool)GetValue(IsAcrylicEnabledProperty); set => SetValue(IsAcrylicEnabledProperty, value); } public static readonly DependencyProperty IsAcrylicEnabledProperty = DependencyProperty.Register( nameof(IsAcrylicEnabled), typeof(bool), typeof(AcrylicWindow), new PropertyMetadata(true, OnAcrylicPropertyChanged) ); public Color AcrylicGradientColor { get => (Color)GetValue(AcrylicGradientColorProperty); set => SetValue(AcrylicGradientColorProperty, value); } public static readonly DependencyProperty AcrylicGradientColorProperty = DependencyProperty.Register( nameof(AcrylicGradientColor), typeof(Color), typeof(AcrylicWindow), new PropertyMetadata(Colors.Transparent, OnAcrylicPropertyChanged) ); public bool ShowAccentBorder { get => (bool)GetValue(ShowAccentBorderProperty); set => SetValue(ShowAccentBorderProperty, value); } public static readonly DependencyProperty ShowAccentBorderProperty = DependencyProperty.Register( nameof(ShowAccentBorder), typeof(bool), typeof(AcrylicWindow), new PropertyMetadata(false, OnAcrylicPropertyChanged) ); protected AcrylicWindow() { // Use layered window when Windows transparency is disabled to prevent white flash on open if (!Utils.IsWindowsTransparencyEnabled()) { WindowStyle = WindowStyle.None; AllowsTransparency = true; } WindowChrome.SetWindowChrome( this, new WindowChrome { GlassFrameThickness = new Thickness(0), CaptionHeight = 0, ResizeBorderThickness = new Thickness(5), CornerRadius = new CornerRadius(0), } ); Background = Brushes.Transparent; Loaded += OnWindowLoaded; SourceInitialized += OnSourceInitialized; ThemeAwareness.ResourceChanged += OnThemeChanged; } private void OnThemeChanged(object? sender, ResourcesChangedEventArgs e) { if (!Utils.IsWindowsTransparencyEnabled()) UpdateBackgroundColor(); } private void UpdateBackgroundColor() { var hwndSource = PresentationSource.FromVisual(this) as HwndSource; if (hwndSource?.CompositionTarget != null) { hwndSource.CompositionTarget.BackgroundColor = GetThemeBackgroundColor(); } } private void OnWindowLoaded(object sender, RoutedEventArgs e) { ApplyAcrylicEffect(); } private void OnSourceInitialized(object? sender, EventArgs e) { ApplyAcrylicEffect(); ApplyWindowCorner(); // Reject Direct Manipulation to ensure precision touchpad scroll // generates WM_MOUSEWHEEL instead of being consumed by the DM infrastructure. // When WPF runs inside Explorer's process (deskband), WPF's DM conflicts with // Explorer's own DM manager, causing touchpad scroll events to be silently lost. if (PresentationSource.FromVisual(this) is HwndSource hwndSource) { hwndSource.AddHook(RejectDirectManipulation); } } private static IntPtr RejectDirectManipulation( IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled ) { const int DM_POINTERHITTEST = 0x0250; if (msg == DM_POINTERHITTEST) { handled = true; return IntPtr.Zero; } return IntPtr.Zero; } private static Color GetThemeBackgroundColor() { var isLightTheme = Utils.IsLightTheme(); var isWindows11 = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows11; if (isWindows11) return isLightTheme ? Color.FromRgb(0xf0, 0xf0, 0xf0) : Color.FromRgb(0x25, 0x25, 0x25); else return isLightTheme ? Color.FromRgb(0xee, 0xee, 0xee) : Color.FromRgb(0x22, 0x22, 0x22); } private static void OnAcrylicPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is AcrylicWindow { IsLoaded: true } window) { window.ApplyAcrylicEffect(); } } private void ApplyAcrylicEffect() { if (!IsAcrylicEnabled) return; var hwndSource = PresentationSource.FromVisual(this) as HwndSource; if (hwndSource?.Handle == IntPtr.Zero) return; var handle = hwndSource!.Handle; var accentPolicy = new AccentPolicy { AccentState = AccentState.EnableAcrylicBlurBehind, AccentFlags = ShowAccentBorder ? AccentFlags.AllBorder : AccentFlags.None, GradientColor = CreateColorInteger(AcrylicGradientColor), AnimationId = 0, }; var accentPolicyPtr = Marshal.AllocHGlobal(Marshal.SizeOf()); try { Marshal.StructureToPtr(accentPolicy, accentPolicyPtr, false); var windowCompositionAttributeData = new WindowCompositionAttributeData { Attribute = WindowCompositionAttribute.WcaAccentPolicy, DataPointer = accentPolicyPtr, DataSize = (uint)Marshal.SizeOf(), }; hwndSource.CompositionTarget!.BackgroundColor = Utils.IsWindowsTransparencyEnabled() ? Colors.Transparent : GetThemeBackgroundColor(); var margins = new Margins { LeftWidth = 0, RightWidth = 0, TopHeight = 0, BottomHeight = 0, }; DwmExtendFrameIntoClientArea(handle, ref margins); SetWindowCompositionAttribute(handle, ref windowCompositionAttributeData); SetWindowPos( handle, IntPtr.Zero, 0, 0, 0, 0, SetWindowPosFlags.DRAWFRAME | SetWindowPosFlags.NOACTIVATE | SetWindowPosFlags.NOMOVE | SetWindowPosFlags.NOOWNERZORDER | SetWindowPosFlags.NOSIZE | SetWindowPosFlags.NOZORDER ); } finally { Marshal.FreeHGlobal(accentPolicyPtr); } } private void ApplyWindowCorner() { var hwndSource = PresentationSource.FromVisual(this) as HwndSource; if (hwndSource?.Handle == IntPtr.Zero) return; var handle = hwndSource!.Handle; // Determine corner style based on Windows version var windowsVersion = Utils.GetWindowsVersion(); var cornerStyle = windowsVersion >= Utils.WindowsVersion.Windows11 ? WindowCorner.Round : WindowCorner.RoundSmall; var corner = (int)cornerStyle; DwmSetWindowAttribute(handle, DwmWindowAttribute.WINDOW_CORNER_PREFERENCE, ref corner, sizeof(int)); } private static int CreateColorInteger(Color color) { return color.R << 0 | color.G << 8 | color.B << 16 | color.A << 24; } } } ================================================ FILE: EverythingToolbar/Controls/FilterSelector.xaml ================================================  ================================================ FILE: EverythingToolbar/Controls/FilterSelector.xaml.cs ================================================ using System.Windows; using System.Windows.Controls; using EverythingToolbar.Data; using EverythingToolbar.Helpers; namespace EverythingToolbar.Controls { public partial class FilterSelector { public static readonly DependencyProperty SelectedFilterProperty = DependencyProperty.Register( nameof(SelectedFilter), typeof(Filter), typeof(FilterSelector), new FrameworkPropertyMetadata( null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnSelectedFilterChanged ) ); private static void OnSelectedFilterChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var control = (FilterSelector)d; control.UpdateSelectedItems(); } public Filter? SelectedFilter { get => (Filter)GetValue(SelectedFilterProperty); set => SetValue(SelectedFilterProperty, value); } public FilterSelector() { InitializeComponent(); Loaded += (_, _) => UpdateSelectedItems(); } private void UpdateSelectedItems() { if (SelectedFilter == null) return; TabControl.SelectionChanged -= OnTabItemSelected; ComboBox.SelectionChanged -= OnComboBoxItemSelected; int filterIndex = FilterLoader.Instance.Filters.IndexOf(SelectedFilter); int maxTabItems = ToolbarSettings.User.MaxTabItems; TabControl.SelectedIndex = filterIndex < maxTabItems ? filterIndex : -1; ComboBox.SelectedIndex = filterIndex >= maxTabItems ? filterIndex - maxTabItems : -1; TabControl.SelectionChanged += OnTabItemSelected; ComboBox.SelectionChanged += OnComboBoxItemSelected; } private void OnTabItemSelected(object sender, SelectionChangedEventArgs e) { if (TabControl.SelectedIndex < 0) return; if (!TabControl.IsFocused && !TabControl.IsMouseOver) { TabControl.SelectedIndex = -1; return; } if (TabControl.SelectedItem is Filter selectedFilter) SelectedFilter = selectedFilter; } private void OnComboBoxItemSelected(object sender, SelectionChangedEventArgs e) { if (ComboBox.SelectedIndex < 0) return; if (!ComboBox.IsFocused && !ComboBox.IsMouseOver) { ComboBox.SelectedIndex = -1; return; } if (ComboBox.SelectedItem is Filter selectedFilter) SelectedFilter = selectedFilter; } } } ================================================ FILE: EverythingToolbar/Controls/FluentMessageBox.cs ================================================ using System.Windows; using System.Windows.Controls; using Wpf.Ui.Appearance; using Wpf.Ui.Controls; using MessageBox = Wpf.Ui.Controls.MessageBox; using TextBlock = System.Windows.Controls.TextBlock; namespace EverythingToolbar.Controls { public static class FluentMessageBox { private static MessageBox CreateBase(string title) { var messageBox = new MessageBox() { Title = title, IsCloseButtonEnabled = true, MinWidth = 300, }; // We need to apply resources before setting the content on the base message box ApplicationThemeManager.Apply( SystemThemeManager.GetCachedSystemTheme() == SystemTheme.Light ? ApplicationTheme.Light : ApplicationTheme.Dark ); ApplicationThemeManager.Apply(messageBox); return messageBox; } private static TextBlock CreateTextBlock(string text) { return new TextBlock { Text = text, FontSize = 14, Margin = new Thickness(20), TextWrapping = TextWrapping.Wrap, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch, }; } public static MessageBox CreateRegular(string content, string title) { var messageBox = CreateBase(title); messageBox.Content = CreateTextBlock(content); return messageBox; } public static MessageBox CreateYesNo(string content, string title) { var messageBox = CreateRegular(content, title); messageBox.PrimaryButtonText = "Yes"; messageBox.SecondaryButtonText = "No"; messageBox.IsCloseButtonEnabled = false; return messageBox; } public static MessageBox CreateError(string content, string title) { var messageBox = CreateBase(title); messageBox.IsPrimaryButtonEnabled = false; var symbolIcon = new SymbolIcon { Symbol = SymbolRegular.Warning28, FontSize = 32, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(0, 0, 20, 0), }; Grid.SetColumn(symbolIcon, 0); var textBlock = new TextBlock { Text = content, FontSize = 14, TextWrapping = TextWrapping.Wrap, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch, }; Grid.SetColumn(textBlock, 1); messageBox.Content = new Grid { Margin = new Thickness(20, 0, 20, 0), ColumnDefinitions = { new ColumnDefinition { Width = GridLength.Auto }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, }, Children = { symbolIcon, textBlock }, }; return messageBox; } } } ================================================ FILE: EverythingToolbar/Controls/GenericBanner.xaml ================================================ ================================================ FILE: EverythingToolbar/Controls/SearchButton.xaml.cs ================================================ using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using EverythingToolbar.Behaviors; using EverythingToolbar.Helpers; namespace EverythingToolbar.Controls { public partial class SearchButton { public SearchButton() { InitializeComponent(); SearchWindow.Instance.Activated += OnSearchWindowActivated; SearchWindow.Instance.Deactivated += OnSearchWindowDeactivated; ThemeAwareness.ResourceChanged += UpdateTheme; } private void OnSearchWindowDeactivated(object? sender, EventArgs e) { if (Template.FindName("OuterBorder", this) is not Border border) return; border.Background = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)); } private void OnSearchWindowActivated(object? sender, EventArgs e) { if (Template.FindName("OuterBorder", this) is not Border border) return; border.Background = new SolidColorBrush(Color.FromArgb(64, 255, 255, 255)); } private void UpdateTheme(Theme newTheme) { if (Template.FindName("OuterBorder", this) is not Border border) return; if (newTheme == Theme.Light) { Foreground = new SolidColorBrush(Colors.Black); border.Opacity = 0.55; } else { Foreground = new SolidColorBrush(Colors.White); border.Opacity = 0.2; } } private void UpdateTheme(object? sender, ResourcesChangedEventArgs e) { if (IsLoaded) UpdateTheme(e.NewTheme); else Loaded += (_, _) => { UpdateTheme(e.NewTheme); }; } private void OnClick(object? sender, RoutedEventArgs e) { SearchWindow.Instance.Toggle(); } private void OnIsVisibleChanged(object? sender, DependencyPropertyChangedEventArgs e) { TaskbarStateManager.Instance.IsIcon = (bool)e.NewValue; } } } ================================================ FILE: EverythingToolbar/Controls/SearchResultPreviewPane.xaml ================================================ ================================================ FILE: EverythingToolbar/Controls/SearchResultPreviewPane.xaml.cs ================================================ using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using EverythingToolbar.Data; using EverythingToolbar.Settings; namespace EverythingToolbar.Controls { public partial class SearchResultPreviewPane { public sealed class PreviewActionItem { public string Label { get; init; } = ""; public string Glyph { get; init; } = ""; public Action Action { get; init; } = _ => { }; } public static readonly DependencyProperty SelectedResultProperty = DependencyProperty.Register( nameof(SelectedResult), typeof(SearchResult), typeof(SearchResultPreviewPane), new PropertyMetadata(null, OnSelectedResultChanged) ); public static readonly DependencyProperty HasSelectionProperty = DependencyProperty.Register( nameof(HasSelection), typeof(bool), typeof(SearchResultPreviewPane), new PropertyMetadata(false) ); public static readonly DependencyProperty ShowPathInfoProperty = DependencyProperty.Register( nameof(ShowPathInfo), typeof(bool), typeof(SearchResultPreviewPane), new PropertyMetadata(false) ); public static readonly DependencyProperty ShowSizeInfoProperty = DependencyProperty.Register( nameof(ShowSizeInfo), typeof(bool), typeof(SearchResultPreviewPane), new PropertyMetadata(false) ); public static readonly DependencyProperty HasVisibleFileInfoProperty = DependencyProperty.Register( nameof(HasVisibleFileInfo), typeof(bool), typeof(SearchResultPreviewPane), new PropertyMetadata(false) ); public SearchResult? SelectedResult { get => (SearchResult?)GetValue(SelectedResultProperty); set => SetValue(SelectedResultProperty, value); } public bool HasSelection { get => (bool)GetValue(HasSelectionProperty); private set => SetValue(HasSelectionProperty, value); } public bool ShowPathInfo { get => (bool)GetValue(ShowPathInfoProperty); private set => SetValue(ShowPathInfoProperty, value); } public bool ShowSizeInfo { get => (bool)GetValue(ShowSizeInfoProperty); private set => SetValue(ShowSizeInfoProperty, value); } public bool HasVisibleFileInfo { get => (bool)GetValue(HasVisibleFileInfoProperty); private set => SetValue(HasVisibleFileInfoProperty, value); } public ObservableCollection PreviewActions { get; } = []; public SearchResultPreviewPane() { InitializeComponent(); ToolbarSettings.User.PropertyChanged += OnToolbarSettingsPropertyChanged; Unloaded += OnUnloaded; } private static void OnSelectedResultChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is SearchResultPreviewPane pane) pane.RefreshActions(); } private void OnUnloaded(object sender, RoutedEventArgs e) { ToolbarSettings.User.PropertyChanged -= OnToolbarSettingsPropertyChanged; Unloaded -= OnUnloaded; } private void OnToolbarSettingsPropertyChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ToolbarSettingsWrapper.ItemTemplate)) RefreshActions(); } private void RefreshActions() { HasSelection = SelectedResult != null; PreviewActions.Clear(); if (SelectedResult == null) { ShowPathInfo = false; ShowSizeInfo = false; HasVisibleFileInfo = false; return; } UpdateFileInfoVisibility(); AddAction( Properties.Resources.ContextMenuOpen, "\uE8A5", result => { if (!CustomActions.HandleAction(result)) result.Open(); } ); AddAction(Properties.Resources.ContextMenuOpenPath, "\uE838", result => result.OpenPath()); AddAction(Properties.Resources.ContextMenuOpenWith, "\uE7AC", result => result.OpenWith()); AddAction(Properties.Resources.ContextMenuShowInEverything, "\uF78B", result => result.ShowInEverything()); AddAction(Properties.Resources.ContextMenuProperties, "\uE946", result => result.ShowProperties()); } private void UpdateFileInfoVisibility() { var template = ToolbarSettings.User.ItemTemplate ?? ""; bool isDetailed = template.Equals("NormalDetailed", StringComparison.OrdinalIgnoreCase) || template.Equals("CompactDetailed", StringComparison.OrdinalIgnoreCase); ShowPathInfo = !isDetailed; ShowSizeInfo = !isDetailed && SelectedResult?.IsFile == true; HasVisibleFileInfo = ShowPathInfo || ShowSizeInfo; } private void AddAction(string label, string glyph, Action action) { PreviewActions.Add( new PreviewActionItem { Label = label, Glyph = glyph, Action = action, } ); } private void OnActionButtonClick(object sender, RoutedEventArgs e) { if (SelectedResult == null || sender is not Button { DataContext: PreviewActionItem item }) return; item.Action(SelectedResult); SearchWindow.Instance.Hide(); } } } ================================================ FILE: EverythingToolbar/Controls/SearchResultsView.xaml ================================================ ================================================ FILE: EverythingToolbar/Controls/SearchResultsView.xaml.cs ================================================ using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Input; using System.Windows.Media; using System.Windows.Threading; using EverythingToolbar.Data; using EverythingToolbar.Helpers; using EverythingToolbar.Search; using EverythingToolbar.Settings; using SearchResult = EverythingToolbar.Data.SearchResult; namespace EverythingToolbar.Controls { public partial class SearchResultsView { public static readonly DependencyProperty SelectedSearchResultProperty = DependencyProperty.Register( nameof(SelectedSearchResult), typeof(SearchResult), typeof(SearchResultsView), new PropertyMetadata(null) ); public static readonly DependencyProperty TotalResultsCountProperty = DependencyProperty.Register( nameof(TotalResultsCount), typeof(int), typeof(SearchResultsView), new PropertyMetadata(0) ); public int TotalResultsCount { get => (int)GetValue(TotalResultsCountProperty); set => SetValue(TotalResultsCountProperty, value); } public SearchResult? SelectedSearchResult { get => (SearchResult?)GetValue(SelectedSearchResultProperty); set => SetValue(SelectedSearchResultProperty, value); } private SearchResult? SelectedItem => SelectedSearchResult; private const int PageSize = 256; private Point _dragStart; private bool _isScrollBarDragging; private int? _touchId; private VirtualizingCollection? _searchResultsCollection; private SynchronizationContext _synchronizationContext = new(); private readonly DispatcherTimer _busyIndicatorTimer; private const int BusyIndicatorDelayMilliseconds = 2000; public SearchResultsView() { InitializeComponent(); SearchState.Instance.PropertyChanged += (_, _) => UpdateSearchResultsProvider(SearchState.Instance); EventDispatcher.Instance.GlobalKeyEvent += OnKeyPressed; SearchResultsListView.PreviewKeyDown += OnKeyPressed; SearchResultsListView.PreviewMouseLeftButtonDown += OnPreviewLeftMouseButtonDown; _busyIndicatorTimer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(BusyIndicatorDelayMilliseconds), }; _busyIndicatorTimer.Tick += BusyIndicatorTimerElapsed; } private void OnLoaded(object sender, RoutedEventArgs e) { _synchronizationContext = SynchronizationContext.Current ?? new SynchronizationContext(); UpdateSearchResultsProvider(SearchState.Instance); AutoSelectFirstResult(); AttachToScrollViewer(); } private void UpdateSearchResultsProvider(SearchState searchState) { if (ToolbarSettings.User.IsHideEmptySearchResults && string.IsNullOrEmpty(searchState.SearchTerm)) { _searchResultsCollection = null; SearchResultsListView.ItemsSource = null; TotalResultsCount = 0; return; } SearchResultProvider newProvider = new(searchState, _synchronizationContext); if (_searchResultsCollection == null) { _searchResultsCollection = new VirtualizingCollection( newProvider, PageSize, _synchronizationContext ); _searchResultsCollection.CollectionChanged += (_, args) => { if (args.Action == NotifyCollectionChangedAction.Reset) { TotalResultsCount = _searchResultsCollection.Count; Dispatcher.BeginInvoke(AutoSelectFirstResult); } }; _searchResultsCollection.PropertyChanged += (_, args) => { if (args.PropertyName == nameof(VirtualizingCollection.IsBusy)) { OnCollectionIsBusyChanged(); } }; } else { _searchResultsCollection?.UpdateProvider(newProvider); } SearchResultsListView.ItemsSource = _searchResultsCollection; } private void OnCollectionIsBusyChanged() { if (_searchResultsCollection is { IsBusy: true }) { if (!_busyIndicatorTimer.IsEnabled) { _busyIndicatorTimer.Start(); } } else { _busyIndicatorTimer.Stop(); SpinnerOverlay.Visibility = Visibility.Collapsed; SearchResultsListView.Opacity = 1.0; } } private void BusyIndicatorTimerElapsed(object? sender, EventArgs e) { _busyIndicatorTimer.Stop(); if (_searchResultsCollection is not { IsBusy: true }) return; SpinnerOverlay.Visibility = Visibility.Visible; SearchResultsListView.Opacity = 0.3; } private void AttachToScrollViewer() { var listViewBorder = VisualTreeHelper.GetChild(SearchResultsListView, 0) as Decorator; var scrollViewer = listViewBorder?.Child as ScrollViewer; if (scrollViewer == null) return; var verticalScrollBar = FindVisualChild( scrollViewer, s => s.Orientation == Orientation.Vertical ); if (verticalScrollBar == null) return; verticalScrollBar.PreviewMouseLeftButtonDown += ScrollBar_PreviewMouseLeftButtonDown; verticalScrollBar.PreviewMouseLeftButtonUp += ScrollBar_PreviewMouseLeftButtonUp; verticalScrollBar.MouseLeave += ScrollBar_MouseLeave; } private void ScrollBar_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (_searchResultsCollection != null) { _isScrollBarDragging = true; _searchResultsCollection.IsAsync = false; } } private void ScrollBar_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { ResetScrollBarDragging(); } private void ScrollBar_MouseLeave(object sender, MouseEventArgs e) { ResetScrollBarDragging(); } private void ResetScrollBarDragging() { if (_isScrollBarDragging && _searchResultsCollection != null) { _isScrollBarDragging = false; _searchResultsCollection.IsAsync = true; } } private static T? FindVisualChild(DependencyObject parent, Func? condition = null) where T : DependencyObject { for (var i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) { var child = VisualTreeHelper.GetChild(parent, i); if (child is T typedChild && (condition == null || condition(typedChild))) return typedChild; var result = FindVisualChild(child, condition); if (result != null) return result; } return null; } private void OnPreviewLeftMouseButtonDown(object sender, MouseButtonEventArgs e) { // Prevents deselecting an item when Ctrl is held down and clicking on an already selected item if (Keyboard.Modifiers == ModifierKeys.Control) { if (e.OriginalSource is not DependencyObject source) return; ListViewItem? item = ItemsControl.ContainerFromElement(SearchResultsListView, source) as ListViewItem; if (item?.IsSelected == true) e.Handled = true; } } private void OnKeyPressed(object? sender, KeyEventArgs e) { if (e.Key == Key.Space) { PreviewSelectedFile(); } else if (Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift) && e.Key == Key.Enter) { RunAsAdmin(this, new RoutedEventArgs()); SearchResultsListView.SelectedIndex = -1; } else if (Keyboard.Modifiers == ModifierKeys.Shift && e.Key == Key.Enter) { if (SelectedItem == null) return; SearchResultProvider.OpenSearchInEverything(SearchState.Instance, SelectedItem.FullPathAndFileName); SearchResultsListView.SelectedIndex = -1; } else if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.Enter) { OpenFilePath(this, new RoutedEventArgs()); SearchResultsListView.SelectedIndex = -1; } else if (Keyboard.Modifiers == ModifierKeys.Alt && (e.Key == Key.Enter || e.SystemKey == Key.Enter)) { ShowFileProperties(this, new RoutedEventArgs()); SearchResultsListView.SelectedIndex = -1; } else if (e.Key == Key.Enter) { if (SearchResultsListView.SelectedIndex >= 0) { OpenSelectedSearchResult(); SearchResultsListView.SelectedIndex = -1; } else { SelectNextSearchResult(); } } else if (Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift) && e.Key == Key.C) { SelectedItem?.CopyPathToClipboard(); } else if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.C) { SelectedItem?.CopyToClipboard(); } else if (e.Key == Key.Up) { HandleUpNavigation(); e.Handled = true; } else if (e.Key == Key.Down) { HandleDownNavigation(); e.Handled = true; } else if (e.Key == Key.PageUp || e.Key == Key.PageDown || e.Key == Key.Home || e.Key == Key.End) { var restoreFocus = e.Key is Key.Home or Key.End && KeepSearchBoxFocused; e.Handled = ForwardKeyPressToControl(SearchResultsListView, e.Key, restoreFocus: restoreFocus); } else if (e.Key == Key.I && Keyboard.Modifiers == ModifierKeys.Control) { ToolbarSettings.User.IsMatchCase = !ToolbarSettings.User.IsMatchCase; } else if (e.Key == Key.B && Keyboard.Modifiers == ModifierKeys.Control) { ToolbarSettings.User.IsMatchWholeWord = !ToolbarSettings.User.IsMatchWholeWord; } else if (e.Key == Key.U && Keyboard.Modifiers == ModifierKeys.Control) { ToolbarSettings.User.IsMatchPath = !ToolbarSettings.User.IsMatchPath; } else if (e.Key == Key.R && Keyboard.Modifiers == ModifierKeys.Control) { ToolbarSettings.User.IsRegExEnabled = !ToolbarSettings.User.IsRegExEnabled; } } private static bool KeepSearchBoxFocused => ToolbarSettings.User.IsAutoSelectFirstResult && ToolbarSettings.User.IsSearchAsYouType; private static FocusBehavior EffectiveListFocusBehavior => KeepSearchBoxFocused && ToolbarSettings.User.ListFocusBehavior == FocusBehavior.RepeatWithSearch ? FocusBehavior.Repeat : ToolbarSettings.User.ListFocusBehavior; private void AutoSelectFirstResult() { if (ToolbarSettings.User.IsAutoSelectFirstResult) SelectNthSearchResult(0); else SearchResultsListView.SelectedIndex = -1; } private void SelectNextSearchResult() { SelectNthSearchResult(SearchResultsListView.SelectedIndex + 1); } private void SelectPreviousSearchResult() { SelectNthSearchResult(SearchResultsListView.SelectedIndex - 1); } private void SelectNthSearchResult(int n) { if (n < 0 || n >= SearchResultsListView.Items.Count) return; SearchResultsListView.SelectedIndex = n; if (SelectedItem != null) SearchResultsListView.ScrollIntoView(SelectedItem); if (!KeepSearchBoxFocused) FocusSelectedItem(); } private void JumpToEnd() { // Capture focus before calling Focus() on the ListView so we can restore it afterwards. var originalFocus = Keyboard.FocusedElement; SearchResultsListView.Focus(); ForwardKeyPressToControl(SearchResultsListView, Key.End, originalFocus, restoreFocus: KeepSearchBoxFocused); } private void FocusSearchBox() { SearchResultsListView.SelectedIndex = -1; EventDispatcher.Instance.InvokeSearchBoxFocused(this, EventArgs.Empty); } private void HandleUpNavigation() { if (SearchResultsListView.SelectedIndex > 0) { SelectPreviousSearchResult(); } else if (SearchResultsListView.SelectedIndex == 0) { switch (EffectiveListFocusBehavior) { case FocusBehavior.Repeat: JumpToEnd(); break; case FocusBehavior.RepeatWithSearch: FocusSearchBox(); break; case FocusBehavior.Clamp: default: if (!ToolbarSettings.User.IsAutoSelectFirstResult) FocusSearchBox(); break; } } else { if (EffectiveListFocusBehavior != FocusBehavior.Clamp) JumpToEnd(); } } private void HandleDownNavigation() { if (SearchResultsListView.SelectedIndex == SearchResultsListView.Items.Count - 1) { switch (EffectiveListFocusBehavior) { case FocusBehavior.Repeat: SelectNthSearchResult(0); break; case FocusBehavior.RepeatWithSearch: FocusSearchBox(); break; case FocusBehavior.Clamp: default: break; } } else { SelectNextSearchResult(); } } private bool ForwardKeyPressToControl( Control control, Key key, IInputElement? originalFocus = null, bool restoreFocus = false ) { var presentationSource = PresentationSource.FromVisual(control); if (presentationSource == null) return false; // Capture focus state before raising the event originalFocus ??= Keyboard.FocusedElement; var caretIndex = originalFocus is TextBox textBox ? textBox.CaretIndex : -1; var args = new KeyEventArgs(Keyboard.PrimaryDevice, presentationSource, 0, key) { RoutedEvent = Keyboard.KeyDownEvent, }; control.RaiseEvent(args); // Restore focus to SearchBox if requested and it was previously focused if (restoreFocus && originalFocus is TextBox restoredTextBox && caretIndex >= 0) { Dispatcher.BeginInvoke( (Action)( () => { originalFocus.Focus(); restoredTextBox.CaretIndex = Math.Min(caretIndex, restoredTextBox.Text.Length); } ), DispatcherPriority.Send ); } return args.Handled; } private void OpenSelectedSearchResult() { if (SelectedItem == null) return; if (!CustomActions.HandleAction(SelectedItem)) SelectedItem?.Open(); SearchWindow.Instance.Hide(); } private void OpenFilePath(object sender, RoutedEventArgs e) { SelectedItem?.OpenPath(); SearchWindow.Instance.Hide(); } private void PreviewSelectedFile() { SelectedItem?.PreviewInQuickLook(); SelectedItem?.PreviewInSeer(); } private void CopyPathToClipBoard(object sender, RoutedEventArgs e) { SelectedItem?.CopyPathToClipboard(); } private void OpenWith(object sender, RoutedEventArgs e) { SelectedItem?.OpenWith(); SearchWindow.Instance.Hide(); } private void ShowInEverything(object sender, RoutedEventArgs e) { SelectedItem?.ShowInEverything(); SearchWindow.Instance.Hide(); } private void CopyFile(object sender, RoutedEventArgs e) { SelectedItem?.CopyToClipboard(); } private void SingleClickSearchResult(object sender, MouseEventArgs e) { if (!ToolbarSettings.User.IsDoubleClickToOpen) OpenWithMouseClick(); } private void DoubleClickSearchResult(object sender, MouseEventArgs e) { if (ToolbarSettings.User.IsDoubleClickToOpen) OpenWithMouseClick(); } private void Open(object sender, RoutedEventArgs e) { OpenSelectedSearchResult(); } private void OpenWithMouseClick() { switch (Keyboard.Modifiers) { case ModifierKeys.Alt: SelectedItem?.ShowProperties(); SearchWindow.Instance.Hide(); break; case ModifierKeys.Control: SelectedItem?.OpenPath(); SearchWindow.Instance.Hide(); break; case ModifierKeys.Shift: SelectedItem?.ShowInEverything(); SearchWindow.Instance.Hide(); break; default: OpenSelectedSearchResult(); break; } SearchResultsListView.SelectedIndex = -1; } private void RunAsAdmin(object sender, RoutedEventArgs e) { SelectedItem?.RunAsAdmin(); SearchWindow.Instance.Hide(); } private void ShowFileProperties(object sender, RoutedEventArgs e) { SelectedItem?.ShowProperties(); SearchWindow.Instance.Hide(); } private void ShowFileWindowsContextMenu(object sender, RoutedEventArgs e) { SelectedItem?.ShowWindowsContextMenu(); } private void OnOpenWithMenuLoaded(object sender, RoutedEventArgs e) { if (sender is not MenuItem menuItem) return; while (menuItem.Items.Count > 2) menuItem.Items.RemoveAt(0); List actions = CustomActions.LoadCustomActions(); if (actions.Count == 0) { menuItem.Items.Insert( 0, new MenuItem { Header = Properties.Resources.ContextMenuOpenWithNoCustomActions, IsEnabled = false } ); return; } for (int i = 0; i < actions.Count; i++) { Rule action = actions[i]; MenuItem actionMenuItem = new() { Header = action.Name, Tag = action.Command, DataContext = action, }; if (action.Icon != null) { Image iconImage = new() { Width = 16, Height = 16 }; iconImage.SetBinding(Image.SourceProperty, new Binding("Icon")); actionMenuItem.Icon = iconImage; } actionMenuItem.Click += OpenWithCustomAction; menuItem.Items.Insert(i, actionMenuItem); } } private void OpenWithCustomAction(object sender, RoutedEventArgs e) { if (SelectedItem == null) return; var menuItem = sender as MenuItem; var command = menuItem?.Tag?.ToString() ?? ""; CustomActions.HandleAction(SelectedItem, command); } private void OnListViewItemMouseDown(object sender, MouseButtonEventArgs e) { _dragStart = PointToScreen(Mouse.GetPosition(this)); } private void OnListViewItemMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton != MouseButtonState.Pressed) return; TryStartDragDrop(PointToScreen(Mouse.GetPosition(this))); } private void OnListViewItemTouchDown(object sender, TouchEventArgs e) { _touchId = e.TouchDevice.Id; _dragStart = PointToScreen(e.GetTouchPoint(this).Position); } private void OnListViewItemTouchMove(object sender, TouchEventArgs e) { if (_touchId != e.TouchDevice.Id) return; if (TryStartDragDrop(PointToScreen(e.GetTouchPoint(this).Position))) _touchId = null; } private void OnListViewItemTouchUp(object sender, TouchEventArgs e) { if (_touchId == e.TouchDevice.Id) _touchId = null; } private bool TryStartDragDrop(Point currentPosition) { if (SelectedItem == null) return false; var diff = _dragStart - currentPosition; if ( Math.Abs(diff.X) <= SystemParameters.MinimumHorizontalDragDistance && Math.Abs(diff.Y) <= SystemParameters.MinimumVerticalDragDistance ) return false; string[] files = [SelectedItem.FullPathAndFileName]; var data = new DataObject(DataFormats.FileDrop, files); data.SetData(DataFormats.Text, files[0]); DragDrop.DoDragDrop(SearchResultsListView, data, DragDropEffects.All); return true; } private void OnContextMenuOpening(object sender, ContextMenuEventArgs e) { if (SelectedItem == null) return; if (Keyboard.Modifiers == ModifierKeys.Shift) { SelectedItem.ShowWindowsContextMenu(); e.Handled = true; } } private void OnContextMenuOpened(object sender, RoutedEventArgs e) { if (SelectedItem == null) return; var cm = sender as ContextMenu; var mi = cm?.Items[2] as MenuItem; if (mi == null) return; string[] extensions = [".exe", ".bat", ".cmd"]; var isExecutable = SelectedItem.IsFile && extensions.Any(ext => SelectedItem.FullPathAndFileName.EndsWith(ext)); mi.Visibility = isExecutable ? Visibility.Visible : Visibility.Collapsed; } private void FocusSelectedItem() { var selectedItem = (ListViewItem) SearchResultsListView.ItemContainerGenerator.ContainerFromItem(SelectedItem); if (selectedItem != null) Keyboard.Focus(selectedItem); } } } ================================================ FILE: EverythingToolbar/Controls/SettingItem.xaml ================================================  ================================================ FILE: EverythingToolbar/Controls/SettingItem.xaml.cs ================================================ using System.Windows; namespace EverythingToolbar.Controls { public partial class SettingItem { public SettingItem() { InitializeComponent(); } public static readonly DependencyProperty SettingContentProperty = DependencyProperty.Register( nameof(SettingContent), typeof(object), typeof(SettingItem), new PropertyMetadata(null) ); public object SettingContent { get => GetValue(SettingContentProperty); set => SetValue(SettingContentProperty, value); } public static readonly DependencyProperty TitleProperty = DependencyProperty.Register( nameof(Title), typeof(string), typeof(SettingItem), new PropertyMetadata(string.Empty) ); public string Title { get => (string)GetValue(TitleProperty); set => SetValue(TitleProperty, value); } public static readonly DependencyProperty HelpTextProperty = DependencyProperty.Register( nameof(HelpText), typeof(string), typeof(SettingItem), new PropertyMetadata(string.Empty) ); public string HelpText { get => (string)GetValue(HelpTextProperty); set => SetValue(HelpTextProperty, value); } } } ================================================ FILE: EverythingToolbar/Controls/SettingsControl.xaml ================================================  ================================================ FILE: EverythingToolbar/Controls/SettingsControl.xaml.cs ================================================ using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using EverythingToolbar.Search; using EverythingToolbar.Settings; namespace EverythingToolbar.Controls { public partial class SettingsControl { public SettingsControl() { InitializeComponent(); SelectSortType(); } private void OpenSettingsWindow(object sender, RoutedEventArgs e) { SearchWindow.Instance.Hide(); Window settings = new SettingsWindow(); settings.Show(); } private void OnSortByClicked(object sender, RoutedEventArgs e) { if (sender is not MenuItem selectedItem) return; int selectedIndex = SortByMenu.Items.IndexOf(selectedItem); int[] fastSortExceptions = [4, 8]; if ( SearchResultProvider.GetIsFastSort(selectedIndex, ToolbarSettings.User.IsSortDescending) || fastSortExceptions.Contains(selectedIndex) ) { ToolbarSettings.User.SortBy = selectedIndex; } else { FluentMessageBox .CreateRegular( Properties.Resources.MessageBoxFastSortUnavailable, Properties.Resources.MessageBoxFastSortUnavailableTitle ) .ShowDialogAsync(); } SelectSortType(); } private void OnSortAscendingClicked(object sender, RoutedEventArgs e) { ToolbarSettings.User.IsSortDescending = false; SelectSortType(); } private void OnSortDescendingClicked(object sender, RoutedEventArgs e) { ToolbarSettings.User.IsSortDescending = true; SelectSortType(); } private void SelectSortType() { foreach (var item in SortByMenu.Items) { if (item is MenuItem menuItem) menuItem.IsChecked = false; } if (SortByMenu.Items[ToolbarSettings.User.SortBy] is MenuItem sortByMenuItem) sortByMenuItem.IsChecked = true; if (ToolbarSettings.User.IsSortDescending) SortDescendingMenuItem.IsChecked = true; else SortAscendingMenuItem.IsChecked = true; } private void OpenButtonContextMenu(object sender, RoutedEventArgs e) { if (sender is not Button button) return; if (button.ContextMenu is not { } contextMenu) return; contextMenu.PlacementTarget = button; contextMenu.Placement = PlacementMode.Bottom; contextMenu.IsOpen = true; } private void TogglePreviewPane(object sender, RoutedEventArgs e) { ToolbarSettings.User.IsPreviewPaneEnabled = !ToolbarSettings.User.IsPreviewPaneEnabled; } } } ================================================ FILE: EverythingToolbar/Controls/UpdateBanner.xaml ================================================  ================================================ FILE: EverythingToolbar/Controls/UpdateBanner.xaml.cs ================================================ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; using System.Net.Http; using System.Reflection; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Threading.Tasks; using System.Windows; using EverythingToolbar.Helpers; using NLog; namespace EverythingToolbar.Controls { public partial class UpdateBanner { private Version? _latestVersion; private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private static readonly string ApiUrl = "https://api.github.com/repos/srwi/EverythingToolbar/releases"; private static readonly string LatestReleaseUrl = "https://github.com/srwi/EverythingToolbar/releases/latest"; public UpdateBanner() { InitializeComponent(); } private static async Task GetLatestStableReleaseVersion() { try { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; using var client = new HttpClient(); client.DefaultRequestHeaders.UserAgent.ParseAdd("EverythingToolbar"); var response = await client.GetAsync(ApiUrl); if (response.IsSuccessStatusCode) { var jsonStream = await response.Content.ReadAsStreamAsync(); var serializer = new DataContractJsonSerializer(typeof(List)); var releases = serializer.ReadObject(jsonStream) as List; var stableReleases = releases?.Where(r => !r.Prerelease).ToList(); var latestStableRelease = stableReleases?.FirstOrDefault(); if (latestStableRelease != null) { return new Version(latestStableRelease.TagName); } } } catch { Logger.Info("Failed to get latest release version."); } return null; } private async void OnLoaded(object sender, RoutedEventArgs e) { try { if (!ToolbarSettings.User.IsUpdateNotificationsEnabled) return; var latestVersion = await CheckForUpdateAsync(); if (latestVersion == null || latestVersion == TryGetSkippedUpdate()) return; _latestVersion = latestVersion; if (FindName("Banner") is GenericBanner banner) { banner.Text = $"{Properties.Resources.UpdateBannerText} {_latestVersion}"; } Visibility = Visibility.Visible; } catch (Exception ex) { Logger.Error("Failed to check for updates: {Message}", ex.Message); } } private static Version? TryGetSkippedUpdate() { try { return new Version(ToolbarSettings.User.SkippedUpdate); } catch { return null; } } private void OnDownloadClicked(object sender, EventArgs e) { Process.Start(new ProcessStartInfo(LatestReleaseUrl) { UseShellExecute = true }); } private void OnSkipUpdateClicked(object sender, EventArgs e) { if (_latestVersion != null) { ToolbarSettings.User.SkippedUpdate = _latestVersion.ToString(); } Visibility = Visibility.Collapsed; } public static async Task CheckForUpdateAsync() { var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; var latestVersion = await GetLatestStableReleaseVersion(); if (latestVersion == null) return null; if (assemblyVersion == null || assemblyVersion.CompareTo(latestVersion) >= 0) return null; return latestVersion; } [DataContract] private class Release { [DataMember(Name = "tag_name")] public string TagName { get; set; } = string.Empty; [DataMember(Name = "prerelease")] public bool Prerelease { get; set; } } } } ================================================ FILE: EverythingToolbar/Controls/UpdateSuccessfulBanner.xaml ================================================  ================================================ FILE: EverythingToolbar/Controls/UpdateSuccessfulBanner.xaml.cs ================================================ using System; using System.Diagnostics; using System.Reflection; using System.Windows; namespace EverythingToolbar.Controls { public partial class UpdateSuccessfulBanner { private static readonly string DonateUrl = "https://github.com/srwi/EverythingToolbar#-support"; private static readonly string CurrentVersion = GetCurrentVersion(); public UpdateSuccessfulBanner() { InitializeComponent(); } private static string GetCurrentVersion() { return Assembly.GetExecutingAssembly().GetName().Version is { } version ? $"{version.Major}.{version.Minor}.{version.MajorRevision}" : ""; } private static bool ShouldShowUpdateNotification() { string versionBeforeUpdate = ToolbarSettings.User.VersionBeforeUpdate; if (string.IsNullOrEmpty(versionBeforeUpdate)) { ToolbarSettings.User.VersionBeforeUpdate = CurrentVersion; return false; } if (versionBeforeUpdate != CurrentVersion) { return true; } return false; } private void OnLoaded(object sender, RoutedEventArgs e) { Banner.Headline = Properties.Resources.UpdateSuccessfulBannerHeader.Replace("{version}", CurrentVersion); if (ShouldShowUpdateNotification()) { Visibility = Visibility.Visible; } } private void OnDonateClicked(object sender, EventArgs e) { Process.Start(new ProcessStartInfo(DonateUrl) { UseShellExecute = true }); } private void OnDismissClicked(object sender, EventArgs e) { ToolbarSettings.User.VersionBeforeUpdate = CurrentVersion; Visibility = Visibility.Collapsed; } } } ================================================ FILE: EverythingToolbar/Converters/BoolToVisibilityConverter.cs ================================================ using System; using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class BoolToVisibilityConverter : MarkupExtension, IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { bool invert = System.Convert.ToBoolean(parameter); if (value == null) return invert ? Visibility.Visible : Visibility.Collapsed; if ((bool)value) return invert ? Visibility.Collapsed : Visibility.Visible; return invert ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/HighlightedTextConverter.cs ================================================ using System; using System.Globalization; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class HighlightedTextConverter : MarkupExtension, IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is not string input) return null; TextBlock textBlock = new() { TextTrimming = TextTrimming.CharacterEllipsis }; if (parameter is string paramStr && double.TryParse(paramStr, out double fontSizePt)) { // Convert points to DIPs (1pt = 4/3 DIP) textBlock.FontSize = fontSizePt * 4.0 / 3.0; } string[] segments = input.Split('*'); for (int j = 0; j < segments.Length; j++) { if (j % 2 > 0) { textBlock.Inlines.Add(new Run(segments[j]) { FontWeight = FontWeights.Bold }); } else { textBlock.Inlines.Add(new Run(segments[j])); } } return textBlock; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/NotConverter.cs ================================================ using System; using System.Globalization; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class NotConverter : MarkupExtension, IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { ArgumentNullException.ThrowIfNull(value); return !(bool)value; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/NullToVisibilityConverter.cs ================================================ using System; using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class NullToVisibilityConverter : MarkupExtension, IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { return value == null ? Visibility.Hidden : Visibility.Visible; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/PreviewPaneToggleIconConverter.cs ================================================ using System; using System.Globalization; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class PreviewPaneToggleIconConverter : MarkupExtension, IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { return value is true ? "\uE89F" : "\uE8A0"; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/SearchResultsCountConverter.cs ================================================ using System; using System.Globalization; using System.Windows.Data; using System.Windows.Markup; using EverythingToolbar.Properties; namespace EverythingToolbar.Converters { public class SearchResultsCountConverter : MarkupExtension, IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value == null) return ""; var formattedValue = ((int)value).ToString("N0", culture); var suffix = (int)value == 1 ? Resources.SearchResult : Resources.SearchResults; return $"{formattedValue} {suffix}"; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/SkipItemsConverter.cs ================================================ using System; using System.Collections; using System.Globalization; using System.Linq; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class SkipItemsMultiConverter : MarkupExtension, IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values is [IEnumerable enumerable, int count, ..]) return enumerable.Cast().Skip(count).ToList(); return values[0]; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/TakeItemsConverter.cs ================================================ using System; using System.Collections; using System.Globalization; using System.Linq; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class TakeItemsMultiConverter : MarkupExtension, IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values is [IEnumerable enumerable, int count, ..]) return enumerable.Cast().Take(count).ToList(); return values[0]; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Converters/WindowsVersionToVisibilityConverter.cs ================================================ using System; using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup; namespace EverythingToolbar.Converters { public class WindowsVersionToVisibilityConverter : MarkupExtension, IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is not Version currentVersion) return Visibility.Visible; if (parameter == null) return Visibility.Visible; var parameterString = parameter.ToString(); if (string.IsNullOrEmpty(parameterString)) return Visibility.Visible; var comparison = ParseVersionParameter(parameterString); if (comparison == null) return Visibility.Visible; var result = CompareVersions(currentVersion, comparison.Value.targetVersion, comparison.Value.operation); return result ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotSupportedException("This converter cannot be used in two-way binding."); } private (Version targetVersion, ComparisonOperation operation)? ParseVersionParameter(string parameter) { ComparisonOperation operation = ComparisonOperation.Equal; string versionString = parameter; if (parameter.StartsWith(">=")) { operation = ComparisonOperation.GreaterThanOrEqual; versionString = parameter[2..]; } else if (parameter.StartsWith("<=")) { operation = ComparisonOperation.LessThanOrEqual; versionString = parameter[2..]; } else if (parameter.StartsWith(">")) { operation = ComparisonOperation.GreaterThan; versionString = parameter[1..]; } else if (parameter.StartsWith("<")) { operation = ComparisonOperation.LessThan; versionString = parameter[1..]; } if (int.TryParse(versionString.Trim(), out int buildNumber)) { var targetVersion = new Version(10, 0, buildNumber); return (targetVersion, operation); } return null; } private bool CompareVersions(Version currentVersion, Version targetVersion, ComparisonOperation operation) { var compareResult = currentVersion.CompareTo(targetVersion); return operation switch { ComparisonOperation.Equal => compareResult == 0, ComparisonOperation.GreaterThan => compareResult > 0, ComparisonOperation.LessThan => compareResult < 0, ComparisonOperation.GreaterThanOrEqual => compareResult >= 0, ComparisonOperation.LessThanOrEqual => compareResult <= 0, _ => true, }; } private enum ComparisonOperation { Equal, GreaterThan, LessThan, GreaterThanOrEqual, LessThanOrEqual, } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } } ================================================ FILE: EverythingToolbar/Data/Filter.cs ================================================ namespace EverythingToolbar.Data { public class Filter { public string Name { get; set; } public string Icon { get; set; } = ""; public string Search { get; set; } = ""; public string Macro { get; set; } = ""; public bool IsMatchCase { get; set; } public bool IsMatchWholeWord { get; set; } public bool IsMatchPath { get; set; } public bool IsRegExEnabled { get; set; } public override bool Equals(object? obj) { if (obj is not Filter item) return false; return Name.Equals(item.Name); } public override int GetHashCode() { return Name.GetHashCode(); } public void Reset() { IsMatchCase = false; IsMatchWholeWord = false; IsMatchPath = false; IsRegExEnabled = false; Search = ""; Macro = ""; } public string GetSearchPrefix() { if (string.IsNullOrEmpty(Search)) return ""; var modifiers = ""; if (IsMatchCase != ToolbarSettings.User.IsMatchCase) modifiers += IsMatchCase ? "case:" : "nocase:"; if (IsMatchWholeWord != ToolbarSettings.User.IsMatchWholeWord) modifiers += IsMatchWholeWord ? "ww:" : "noww:"; if (IsMatchPath != ToolbarSettings.User.IsMatchPath) modifiers += IsMatchPath ? "path:" : "nopath:"; if (IsRegExEnabled != ToolbarSettings.User.IsRegExEnabled) modifiers += IsRegExEnabled ? "regex:" : "noregex:"; if (string.IsNullOrEmpty(modifiers)) return $"{Search} "; return $"{modifiers}<{Search}> "; } } } ================================================ FILE: EverythingToolbar/Data/FocusBehavior.cs ================================================ namespace EverythingToolbar.Data { public enum FocusBehavior { Clamp, Repeat, RepeatWithSearch, } } ================================================ FILE: EverythingToolbar/Data/Rule.cs ================================================ using System; using System.ComponentModel; using System.IO; using System.Runtime.CompilerServices; using System.Text.RegularExpressions; using System.Windows.Media; using System.Xml.Serialization; using EverythingToolbar.Helpers; namespace EverythingToolbar.Data { public enum FileType { Any, File, Folder, } [Serializable] public class Rule : INotifyPropertyChanged { [field: NonSerialized] public event PropertyChangedEventHandler? PropertyChanged; protected void NotifyPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private string _name; public string Name { get => _name; set { _name = value; NotifyPropertyChanged(); } } private FileType _filetype; public FileType Type { get => _filetype; set { _filetype = value; NotifyPropertyChanged(); } } private string _expression; public string Expression { get => _expression; set { _expression = value; NotifyPropertyChanged(); NotifyPropertyChanged(nameof(ExpressionValid)); } } public bool ExpressionValid { get { try { bool _ = Regex.IsMatch("", Expression); return true; } catch (ArgumentException) { return false; } } } private string _command; public string Command { get => _command; set { _command = value; NotifyPropertyChanged(); Icon = null; } } [field: NonSerialized] private ImageSource? _icon; [field: NonSerialized] private bool _iconLoadFailed; [XmlIgnore] public ImageSource? Icon { get { if (_icon != null || _iconLoadFailed) return _icon; if (string.IsNullOrWhiteSpace(Command)) { _iconLoadFailed = true; return null; } string executableName = GetExecutableFromCommandLine(Command); if (string.IsNullOrWhiteSpace(executableName)) { _iconLoadFailed = true; return null; } string? executablePath = FindExecutablePath(executableName); if (executablePath == null) { _iconLoadFailed = true; return null; } _icon = IconProvider.GetImage( executablePath, true, 16, source => { Icon = source; } ); if (_icon == null) _iconLoadFailed = true; return _icon; } set { _iconLoadFailed = false; _icon = value; NotifyPropertyChanged(); } } public static string GetExecutableFromCommandLine(string commandLine) { if (string.IsNullOrWhiteSpace(commandLine)) return string.Empty; commandLine = commandLine.Trim(); if (commandLine.StartsWith("\"")) { int endQuote = commandLine.IndexOf("\"", 1); return endQuote > 0 ? commandLine.Substring(1, endQuote - 1) : commandLine.Substring(1); } int spaceIndex = commandLine.IndexOf(' '); return spaceIndex > 0 ? commandLine.Substring(0, spaceIndex) : commandLine; } public static string? FindExecutablePath(string exeName) { if (File.Exists(exeName)) return Path.GetFullPath(exeName); string[] extensions = Environment.GetEnvironmentVariable("PATHEXT")?.Split(';') ?? [".exe"]; string[] paths = Environment.GetEnvironmentVariable("PATH")?.Split(';') ?? []; foreach (var path in paths) { foreach (var ext in extensions) { string candidate = Path.Combine( path, exeName.EndsWith(ext, StringComparison.OrdinalIgnoreCase) ? exeName : exeName + ext ); if (File.Exists(candidate)) return candidate; } } return null; } } } ================================================ FILE: EverythingToolbar/Data/SearchResult.cs ================================================ using System; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.IO.Pipes; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security.Principal; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Media; using EverythingToolbar.Controls; using EverythingToolbar.Helpers; using EverythingToolbar.Properties; using EverythingToolbar.Search; using NLog; using Peter; using Clipboard = System.Windows.Clipboard; using DataObject = System.Windows.DataObject; using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME; namespace EverythingToolbar.Data { public class SearchResult : INotifyPropertyChanged { private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private static readonly HashSet ImageExtensions = new(StringComparer.OrdinalIgnoreCase) { ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".ico", ".webp", }; public bool IsFile { get; init; } public string FullPathAndFileName { get; init; } public string Path => System.IO.Path.GetDirectoryName(FullPathAndFileName) ?? ""; public string HighlightedPath { get; set; } public string FileName => System.IO.Path.GetFileName(FullPathAndFileName); public string HighlightedFileName { get; set; } public long FileSize { get; init; } public FILETIME DateModified { get; init; } public string HumanReadableFileSize { get { if (!IsFile || FileSize < 0) return string.Empty; return Utils.GetHumanReadableFileSize(FileSize); } } public string HumanReadableDateModified { get { long dateModified = ((long)DateModified.dwHighDateTime << 32) | (uint)DateModified.dwLowDateTime; return DateTime.FromFileTime(dateModified).ToString("g"); } } private ImageSource? _icon; private ImageSource? _previewImage; private const int IconSize = 16; private const int PreviewIconSize = 64; private const int PreviewThumbnailSize = 380; public ImageSource? Icon { get { if (_icon != null) return _icon; if (ToolbarSettings.User.IsThumbnailsEnabled && IsImageFile && File.Exists(FullPathAndFileName)) { _icon = IconProvider.GetImage(FullPathAndFileName, IsFile, IconSize); Task.Run(() => { Icon = ThumbnailProvider.GetImage(FullPathAndFileName, IconSize); }); } else { _icon = IconProvider.GetImage( FullPathAndFileName, IsFile, 32, source => { Icon = source; } ); } return _icon; } set { _icon = value; OnPropertyChanged(); } } public ImageSource? PreviewImage { get { if (_previewImage != null) return _previewImage; var requiresThumbnail = IsImageFile && File.Exists(FullPathAndFileName); // We always load the regular icon first, independent of whether the file requires a thumbnail preview Task.Run(() => { Action? onExactIconLoaced = null; if (!requiresThumbnail) { onExactIconLoaced = source => { PreviewImage = source; }; } ImageSource? image = IconProvider.GetImage( FullPathAndFileName, IsFile, PreviewIconSize, onExactIconLoaced ); if (image != null && _previewImage == null) PreviewImage = image; }); // If needed, update the preview with a thumbnail later if (requiresThumbnail) { Task.Run(() => { ImageSource? image = ThumbnailProvider.GetImage( FullPathAndFileName, PreviewThumbnailSize, allowUpscaling: false ); if (image != null) PreviewImage = image; }); } return _previewImage; } private set { _previewImage = value; OnPropertyChanged(); } } private bool IsImageFile => ImageExtensions.Contains(System.IO.Path.GetExtension(FullPathAndFileName)); public void Open() { try { var path = FullPathAndFileName; if (Directory.Exists(FullPathAndFileName)) { // We need to make sure directories end with a slash. Otherwise executables with the same stem // might be executed instead due to how Process.Start prioritizes executables when resolving filenames. path += "\\"; } Process.Start(new ProcessStartInfo(path) { WorkingDirectory = Path, UseShellExecute = true }); SearchResultProvider.IncrementRunCount(FullPathAndFileName); } catch (Exception e) { Logger.Error(e, "Failed to open search result."); FluentMessageBox .CreateError(Resources.MessageBoxFailedToOpen, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public void RunAsAdmin() { try { Process.Start(new ProcessStartInfo(FullPathAndFileName) { Verb = "runas", UseShellExecute = true }); SearchResultProvider.IncrementRunCount(FullPathAndFileName); } catch (Exception e) { Logger.Error(e, "Failed to open search result."); FluentMessageBox .CreateError(Resources.MessageBoxFailedToOpen, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public void OpenPath() { try { ShellUtils.OpenParentFolderAndSelect(FullPathAndFileName); SearchResultProvider.IncrementRunCount(FullPathAndFileName); } catch (Exception e) { Logger.Error(e, "Failed to open path."); FluentMessageBox .CreateError(Resources.MessageBoxFailedToOpenPath, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public void OpenWith() { try { ShellUtils.OpenWithDialog(FullPathAndFileName); } catch (Exception e) { Logger.Error(e, "Failed to open dialog."); FluentMessageBox .CreateError(Resources.MessageBoxFailedToOpenDialog, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public void CopyToClipboard() { try { var dataObj = new DataObject(); dataObj.SetFileDropList(new StringCollection { FullPathAndFileName }); Clipboard.SetDataObject(dataObj, copy: false); // Fixes #362 } catch (Exception e) { Logger.Error(e, "Failed to copy file."); FluentMessageBox .CreateError(Resources.MessageBoxFailedToCopyFile, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public void CopyPathToClipboard() { try { var dataObj = new DataObject(); dataObj.SetText(FullPathAndFileName); Clipboard.SetDataObject(dataObj, copy: false); // Fixes #362 } catch (Exception e) { Logger.Error(e, "Failed to copy path."); FluentMessageBox .CreateError(Resources.MessageBoxFailedToCopyPath, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public void ShowProperties() { ShellUtils.ShowFileProperties(FullPathAndFileName); } public void ShowWindowsContextMenu() { var menu = new ShellContextMenu(); var arrFi = new FileInfo[1]; arrFi[0] = new FileInfo(FullPathAndFileName); menu.ShowContextMenu(arrFi, Control.MousePosition); } public void ShowInEverything() { SearchResultProvider.OpenSearchInEverything(SearchState.Instance, filenameToHighlight: FullPathAndFileName); } public void PreviewInQuickLook() { Task.Run(() => { try { using var client = new NamedPipeClientStream( ".", "QuickLook.App.Pipe." + WindowsIdentity.GetCurrent().User?.Value, PipeDirection.Out ); client.Connect(1000); using var writer = new StreamWriter(client); writer.WriteLine($"QuickLook.App.PipeMessages.Toggle|{FullPathAndFileName}"); writer.Flush(); } catch (TimeoutException) { Logger.Info("Opening QuickLook preview timed out. Is QuickLook running?"); } catch (Exception e) { Logger.Error(e, "Failed to open QuickLook preview."); } }); } public void PreviewInSeer() { Task.Run(() => { try { var seer = NativeMethods.FindWindowEx(IntPtr.Zero, IntPtr.Zero, "SeerWindowClass", null); const int seerInvokeW32 = 5000; const int wmCopydata = 0x004A; var cd = new NativeMethods.Copydatastruct { cbData = (FullPathAndFileName.Length + 1) * 2, lpData = Marshal.StringToHGlobalUni(FullPathAndFileName), dwData = new IntPtr(seerInvokeW32), }; NativeMethods.SendMessage(seer, wmCopydata, IntPtr.Zero, ref cd); Marshal.FreeHGlobal(cd.lpData); } catch (Exception e) { Logger.Error(e, "Failed to open Seer preview."); } }); } public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } ================================================ FILE: EverythingToolbar/EverythingToolbar.csproj ================================================  net8.0-windows10.0.17763.0 10.0.17763.0 windows Library true true true 12 enable x64;ARM64 Properties\app.manifest Always true ..\EverythingToolbar.snk Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always Always MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer MSBuild:Compile Wpf Designer PreserveNewest PreserveNewest PreserveNewest PreserveNewest PreserveNewest True True Resources.resx PublicResXFileCodeGenerator Resources.Designer.cs $(PostBuildEventDependsOn); PostBuildMacros; TRACE;DEBUG TRACE;DEBUG ================================================ FILE: EverythingToolbar/Helpers/CultureHelper.cs ================================================ using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Threading; namespace EverythingToolbar.Helpers { public static class CultureHelper { /// /// Dynamically gets supported language codes by scanning for satellite assemblies. /// private static string[] GetSupportedLanguageCodes() { try { var assembly = typeof(CultureHelper).Assembly; var baseDir = Path.GetDirectoryName(assembly.Location); if (string.IsNullOrEmpty(baseDir)) return Array.Empty(); var assemblyName = "EverythingToolbar.resources.dll"; return Directory .GetDirectories(baseDir) .Select(Path.GetFileName) .Where(name => { if (name == null) return false; try { _ = CultureInfo.GetCultureInfo(name); return File.Exists(Path.Combine(baseDir, name, assemblyName)); } catch { return false; } }) .OrderBy(c => c) .ToArray(); } catch { return Array.Empty(); } } /// /// Gets list of available languages as display-friendly KeyValuePairs. /// public static List> GetAvailableLanguages() { var languages = new List> { new(Properties.Resources.SettingsUseSystemLanguage, ""), }; // Always include English first var englishCulture = GetCultureInfo("en"); if (englishCulture != null) { languages.Add(new("English", "en")); } foreach (var code in GetSupportedLanguageCodes()) { // Skip English since we already added it if (code.Equals("en", StringComparison.OrdinalIgnoreCase)) continue; var cultureInfo = GetCultureInfo(code); if (cultureInfo != null) { // Display name: "English (English)" or "Deutsch (German)" for non-English var displayName = cultureInfo.NativeName; if ( !string.Equals( cultureInfo.NativeName, cultureInfo.EnglishName, StringComparison.OrdinalIgnoreCase ) ) { displayName = $"{cultureInfo.NativeName} ({cultureInfo.EnglishName})"; } languages.Add(new(displayName, code)); } } return languages; } /// /// Gets a CultureInfo for the given language code, or null if invalid. /// public static CultureInfo? GetCultureInfo(string languageCode) { if (string.IsNullOrEmpty(languageCode)) { return null; } try { return CultureInfo.GetCultureInfo(languageCode); } catch (CultureNotFoundException) { return null; } } /// /// Applies the UI language based on the saved setting. /// If empty/system, uses current system UI culture. /// public static void ApplyUILanguage(string? languageCode) { CultureInfo culture; if (string.IsNullOrEmpty(languageCode)) { // Use system culture culture = CultureInfo.CurrentUICulture; } else { culture = GetCultureInfo(languageCode); if (culture == null) { // Fallback to system culture if invalid culture = CultureInfo.CurrentUICulture; } } // Apply culture to current thread Thread.CurrentThread.CurrentUICulture = culture; CultureInfo.CurrentUICulture = culture; } } } ================================================ FILE: EverythingToolbar/Helpers/DefaultFilterLoader.cs ================================================ using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using EverythingToolbar.Data; using EverythingToolbar.Properties; namespace EverythingToolbar.Helpers { internal class DefaultFilterLoader : INotifyPropertyChanged { public static readonly Filter AllFilter = new() { Name = Resources.DefaultFilterAll, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE71D" : "", }; public readonly ObservableCollection DefaultFilters = [ AllFilter, new() { Name = Resources.DefaultFilterFile, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE7C3" : "", Search = "file:", }, new() { Name = Resources.DefaultFilterFolder, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE8B7" : "", Search = "folder:", }, new() { Name = Resources.UserFilterAudio, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE8D6" : "", Macro = "audio", Search = "ext:aac;ac3;aif;aifc;aiff;au;cda;dts;fla;flac;it;m1a;m2a;m3u;m4a;mid;" + "midi;mka;mod;mp2;mp3;mpa;ogg;ra;rmi;spc;rmi;snd;umx;voc;wav;wma;xm", }, new() { Name = Resources.UserFilterCompressed, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE7B8" : "", Macro = "zip", Search = "ext:7z;ace;arj;bz2;cab;gz;gzip;jar;r00;r01;r02;r03;r04;r05;r06;r07;" + "r08;r09;r10;r11;r12;r13;r14;r15;r16;r17;r18;r19;r20;r21;r22;r23;r24;" + "r25;r26;r27;r28;r29;rar;tar;tgz;z;zip", }, new() { Name = Resources.UserFilterDocument, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xF585" : "", Macro = "doc", Search = "ext:c;chm;cpp;csv;cxx;doc;docm;docx;dot;dotm;dotx;h;hpp;htm;html;hxx;" + "ini;java;lua;mht;mhtml;odt;pdf;potx;potm;ppam;ppsm;ppsx;pps;ppt;pptm;" + "pptx;rtf;sldm;sldx;thmx;txt;vsd;wpd;wps;wri;xlam;xls;xlsb;xlsm;xlsx;xltm;xltx;xml", }, new() { Name = Resources.UserFilterExecutable, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xECAA" : "", Macro = "exe", Search = "ext:bat;cmd;exe;msi;msp;scr", }, new() { Name = Resources.UserFilterPicture, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE8B9" : "", Macro = "pic", Search = "ext:ani;bmp;gif;ico;jpe;jpeg;jpg;pcx;png;psd;tga;tif;tiff;webp;wmf", }, new() { Name = Resources.UserFilterVideo, Icon = Utils.GetWindowsVersion() >= Utils.WindowsVersion.Windows10 ? "\xE714" : "", Macro = "video", Search = "ext:3g2;3gp;3gp2;3gpp;amr;amv;asf;avi;bdmv;bik;d2v;divx;drc;dsa;dsm;" + "dss;dsv;evo;f4v;flc;fli;flic;flv;hdmov;ifo;ivf;m1v;m2p;m2t;m2ts;m2v;" + "m4b;m4p;m4v;mkv;mp2v;mp4;mp4v;mpe;mpeg;mpg;mpls;mpv2;mpv4;mov;mts;ogm;" + "ogv;pss;pva;qt;ram;ratdvd;rm;rmm;rmvb;roq;rpm;smil;smk;swf;tp;tpr;ts;" + "vob;vp6;webm;wm;wmp;wmv", }, ]; public ObservableCollection Filters => GetReorderedFilters(); public static readonly DefaultFilterLoader Instance = new(); private DefaultFilterLoader() { ToolbarSettings.User.PropertyChanged += OnSettingsChanged; } private void OnSettingsChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ToolbarSettings.User.FilterOrder)) { NotifyPropertyChanged(nameof(Filters)); } } private ObservableCollection GetReorderedFilters() { var reorderedIndices = GetValidFilterOrder(); var reordered = reorderedIndices.Select(i => DefaultFilters[i]).ToList(); return new ObservableCollection(reordered); } public int[] GetValidFilterOrder() { var order = ToolbarSettings.User.FilterOrder; var defaultOrder = Enumerable.Range(0, DefaultFilters.Count); if (string.IsNullOrWhiteSpace(order)) return defaultOrder.ToArray(); var indices = order.Split(',').Select(s => int.TryParse(s, out var idx) ? idx : -1).ToArray(); if (!indices.OrderBy(i => i).SequenceEqual(Enumerable.Range(0, DefaultFilters.Count))) { ToolbarSettings.User.FilterOrder = string.Empty; return defaultOrder.ToArray(); } return indices; } public event PropertyChangedEventHandler? PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } ================================================ FILE: EverythingToolbar/Helpers/EventDispatcher.cs ================================================ using System; using System.Windows.Input; namespace EverythingToolbar.Helpers { public class EventDispatcher { public static readonly EventDispatcher Instance = new(); public event EventHandler? FocusRequested; public void InvokeFocusRequested(object sender, EventArgs e) { FocusRequested?.Invoke(sender, e); } public event EventHandler? UnfocusRequested; public void InvokeUnfocusRequested(object sender, EventArgs e) { UnfocusRequested?.Invoke(sender, e); } public event EventHandler? SearchBoxFocusRequested; public void InvokeSearchBoxFocused(object sender, EventArgs e) { SearchBoxFocusRequested?.Invoke(sender, e); } public event EventHandler? SearchBoxFocused; public void InvokeSearchBoxFocusedNotification(object sender, EventArgs e) { SearchBoxFocused?.Invoke(sender, e); } public event EventHandler? GlobalKeyEvent; public void InvokeGlobalKeyEvent(object sender, KeyEventArgs e) { GlobalKeyEvent?.Invoke(sender, e); } } } ================================================ FILE: EverythingToolbar/Helpers/EverythingFilterLoader.cs ================================================ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Windows.Forms; using EverythingToolbar.Controls; using EverythingToolbar.Data; using EverythingToolbar.Properties; using Microsoft.VisualBasic.FileIO; using NLog; namespace EverythingToolbar.Helpers { internal class EverythingFilterLoader : INotifyPropertyChanged { private ObservableCollection? _filters; public ObservableCollection? Filters => _filters ??= LoadFilters(); public static readonly EverythingFilterLoader Instance = new(); private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private FileSystemWatcher? _watcher; private EverythingFilterLoader() { ToolbarSettings.User.PropertyChanged += OnSettingsChanged; if (ToolbarSettings.User.IsImportFilters) CreateFileWatcher(); } private void OnSettingsChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ToolbarSettings.User.IsImportFilters)) { if (ToolbarSettings.User.IsImportFilters) { CreateFileWatcher(); } else { StopFileWatcher(); } ResetFilters(); } else if (e.PropertyName == nameof(ToolbarSettings.User.FiltersPath)) { if (ToolbarSettings.User.IsImportFilters) { CreateFileWatcher(); ResetFilters(); } } } private void ResetFilters() { _filters = null; NotifyPropertyChanged(nameof(Filters)); } private ObservableCollection? LoadFilters() { var filters = new ObservableCollection(); if (string.IsNullOrWhiteSpace(ToolbarSettings.User.FiltersPath)) ToolbarSettings.User.FiltersPath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Everything", "Filters.csv" ); if (!File.Exists(ToolbarSettings.User.FiltersPath)) { Logger.Info("Filters.csv could not be found at " + ToolbarSettings.User.FiltersPath); FluentMessageBox .CreateRegular(Resources.MessageBoxSelectFiltersCsv, Resources.MessageBoxSelectFiltersCsvTitle) .ShowDialogAsync(); using var openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = Path.Combine(ToolbarSettings.User.FiltersPath, ".."); openFileDialog.Filter = "Filters.csv|Filters.csv|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { ToolbarSettings.User.FiltersPath = openFileDialog.FileName; } else { ToolbarSettings.User.IsImportFilters = false; return null; } } try { using var csvParser = new TextFieldParser(ToolbarSettings.User.FiltersPath); csvParser.CommentTokens = ["#"]; csvParser.SetDelimiters(","); csvParser.HasFieldsEnclosedInQuotes = true; var header = csvParser.ReadFields(); while (!csvParser.EndOfData) { var fields = csvParser.ReadFields(); if (header == null || fields == null) continue; var filterDict = header.Zip(fields, (h, f) => new { h, f }).ToDictionary(x => x.h, x => x.f); var filter = ParseFilterFromDict(filterDict); // Everything's default filters are uppercase and can be localized filter.Name = filter .Name.Replace("EVERYTHING", Resources.DefaultFilterAll) .Replace("FOLDER", Resources.DefaultFilterFolder) .Replace("FILE", Resources.DefaultFilterFile) .Replace("AUDIO", Resources.UserFilterAudio) .Replace("COMPRESSED", Resources.UserFilterCompressed) .Replace("DOCUMENT", Resources.UserFilterDocument) .Replace("EXECUTABLE", Resources.UserFilterExecutable) .Replace("PICTURE", Resources.UserFilterPicture) .Replace("VIDEO", Resources.UserFilterVideo); filters.Add(filter); } return filters; } catch (Exception e) { Logger.Error(e, "Parsing Filters.csv failed."); } return null; } private Filter ParseFilterFromDict(Dictionary dict) { return new Filter { Name = dict["Name"], IsMatchCase = dict["Case"] == "1", IsMatchWholeWord = dict["Whole Word"] == "1", IsMatchPath = dict["Path"] == "1", IsRegExEnabled = dict["Regex"] == "1", Search = dict["Search"], Macro = dict["Macro"], }; } private void StopFileWatcher() { if (_watcher == null) return; _watcher.EnableRaisingEvents = false; _watcher.Dispose(); _watcher = null; } private void CreateFileWatcher() { StopFileWatcher(); if (!File.Exists(ToolbarSettings.User.FiltersPath)) return; _watcher = new FileSystemWatcher { Path = Path.GetDirectoryName(ToolbarSettings.User.FiltersPath)!, Filter = Path.GetFileName(ToolbarSettings.User.FiltersPath), NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite, }; _watcher.Changed += OnFileChanged; _watcher.Created += OnFileChanged; _watcher.Deleted += OnFileChanged; _watcher.Renamed += OnFileRenamed; _watcher.EnableRaisingEvents = true; } private void OnFileRenamed(object sender, RenamedEventArgs e) { ToolbarSettings.User.FiltersPath = e.FullPath; } private void OnFileChanged(object source, FileSystemEventArgs e) { ResetFilters(); } public event PropertyChangedEventHandler? PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } ================================================ FILE: EverythingToolbar/Helpers/FilterLoader.cs ================================================ using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using EverythingToolbar.Data; namespace EverythingToolbar.Helpers { internal class FilterLoader : INotifyPropertyChanged { public ObservableCollection Filters { get { if (ToolbarSettings.User.IsRegExEnabled) return new ObservableCollection([DefaultFilterLoader.AllFilter]); if (ToolbarSettings.User.IsImportFilters && EverythingFilterLoader.Instance.Filters != null) return EverythingFilterLoader.Instance.Filters; return DefaultFilterLoader.Instance.Filters; } } public static readonly FilterLoader Instance = new(); private FilterLoader() { ToolbarSettings.User.PropertyChanged += OnSettingsChanged; EverythingFilterLoader.Instance.PropertyChanged += OnEverythingFiltersChanged; DefaultFilterLoader.Instance.PropertyChanged += OnDefaultFiltersChanged; } private void OnDefaultFiltersChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(DefaultFilterLoader.Instance.Filters)) { NotifyPropertyChanged(nameof(Filters)); } } private void OnEverythingFiltersChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(EverythingFilterLoader.Instance.Filters)) { NotifyPropertyChanged(nameof(Filters)); } } private void OnSettingsChanged(object? sender, PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(ToolbarSettings.User.IsRegExEnabled): case nameof(ToolbarSettings.User.IsImportFilters): NotifyPropertyChanged(nameof(Filters)); break; } } public Filter GetInitialFilter() { if (ToolbarSettings.User.IsRememberFilter) { foreach (var filter in Filters) { if (filter.Name == ToolbarSettings.User.LastFilter) return filter; } } return Filters[0]; } public event PropertyChangedEventHandler? PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } ================================================ FILE: EverythingToolbar/Helpers/HistoryManager.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Linq; using System.Xml; using System.Xml.Serialization; using NLog; namespace EverythingToolbar.Helpers { public class HistoryManager { public static readonly HistoryManager Instance = new(); private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private static readonly string HistoryPath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "EverythingToolbar", "history.xml" ); private const int MaxHistorySize = 50; private int _currentHistorySize; private int _currentIndex; private readonly List _history; private HistoryManager() { _history = LoadHistory(); _currentIndex = _history.Count; _currentHistorySize = ToolbarSettings.User.IsEnableHistory ? MaxHistorySize : 0; ToolbarSettings.User.PropertyChanged += OnSettingChanged; } private void OnSettingChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ToolbarSettings.User.IsEnableHistory)) { if (ToolbarSettings.User.IsEnableHistory) { _currentHistorySize = MaxHistorySize; } else { _currentHistorySize = 0; ClearHistory(); } } } private List LoadHistory() { if (!File.Exists(HistoryPath)) return []; try { var serializer = new XmlSerializer(_history.GetType()); using var reader = XmlReader.Create(HistoryPath); return serializer.Deserialize(reader) as List ?? []; } catch (Exception e) { Logger.Error(e, "Failed to load search term history."); } return []; } private void SaveHistory() { try { if (Path.GetDirectoryName(HistoryPath) is { } path) Directory.CreateDirectory(path); var serializer = new XmlSerializer(_history.GetType()); using var writer = XmlWriter.Create(HistoryPath); serializer.Serialize(writer, _history); } catch (Exception e) { Logger.Error(e, "Failed to save search term history."); } } public void ClearHistory() { _history.Clear(); SaveHistory(); } public void AddToHistory(string searchTerm) { if (string.IsNullOrEmpty(searchTerm)) return; if (_history.Count > 0 && _history.Last() == searchTerm) return; _history.Add(searchTerm); while (_history.Count > _currentHistorySize) _history.RemoveAt(0); _currentIndex = _history.Count; SaveHistory(); } public string GetPreviousItem() { if (_history.Count == 0) return ""; _currentIndex = Math.Max(0, _currentIndex - 1); return _history.ElementAt(_currentIndex); } public string GetNextItem() { if (_history.Count == 0) return ""; if (_currentIndex >= _history.Count - 1) { _currentIndex = _history.Count; return ""; } _currentIndex = Math.Min(_currentIndex + 1, _history.Count - 1); return _history.ElementAt(_currentIndex); } } } ================================================ FILE: EverythingToolbar/Helpers/IconProvider.cs ================================================ using System; using System.Collections.Concurrent; using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Media.Imaging; namespace EverythingToolbar.Helpers { internal static class ImageScalingHelper { public static int GetScaledSize(int logicalSize) { double dpi = GetDpiForSystem(); if (dpi < 96) dpi = 96; return (int)Math.Ceiling(logicalSize * dpi / 96.0); } public static BitmapSource SetLogicalSize(BitmapSource source, int logicalSize, bool downOnly = false) { double targetLogicalSize = logicalSize; if (downOnly) { double systemDpi = GetDpiForSystem(); if (systemDpi < 96) systemDpi = 96; double nativeLogicalSize = source.PixelWidth * 96.0 / systemDpi; targetLogicalSize = Math.Min(logicalSize, nativeLogicalSize); } if (targetLogicalSize <= 0) return source; double targetDpi = source.PixelWidth * 96.0 / targetLogicalSize; if (Math.Abs(source.DpiX - targetDpi) < 0.1) return source; int width = source.PixelWidth; int height = source.PixelHeight; var format = source.Format; int stride = (width * format.BitsPerPixel + 7) / 8; byte[] pixels = new byte[stride * height]; source.CopyPixels(pixels, stride, 0); var result = BitmapSource.Create( width, height, targetDpi, targetDpi, format, source.Palette, pixels, stride ); result.Freeze(); return result; } [DllImport("user32.dll")] private static extern uint GetDpiForSystem(); } public static class ThumbnailProvider { [DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)] private static extern void SHCreateItemFromParsingName( [MarshalAs(UnmanagedType.LPWStr)] string pszPath, IntPtr pbc, [MarshalAs(UnmanagedType.LPStruct)] Guid riid, [MarshalAs(UnmanagedType.Interface)] out IShellItemImageFactory shellItem ); [ComImport] [Guid("BCC18B79-BA16-442F-80C4-8A59C30C463B")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] private interface IShellItemImageFactory { void GetImage([In] Size size, [In] int flags, [Out] out IntPtr phbm); } [StructLayout(LayoutKind.Sequential)] private struct Size { public int cx; public int cy; } private const int SiigbfResizetofit = 0x00; public static ImageSource? GetImage(string filePath, int imageSize, bool allowUpscaling = true) { IShellItemImageFactory? imageFactory = null; try { int scaledSize = ImageScalingHelper.GetScaledSize(imageSize); Guid shellItemImageFactoryGuid = new("BCC18B79-BA16-442F-80C4-8A59C30C463B"); SHCreateItemFromParsingName(filePath, IntPtr.Zero, shellItemImageFactoryGuid, out imageFactory); Size size = new() { cx = scaledSize, cy = scaledSize }; imageFactory.GetImage(size, SiigbfResizetofit, out IntPtr hBitmap); try { var imageSource = Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions() ); imageSource.Freeze(); return ImageScalingHelper.SetLogicalSize(imageSource, imageSize, downOnly: !allowUpscaling); } finally { DeleteObject(hBitmap); } } catch { return null; } finally { if (imageFactory != null && Marshal.IsComObject(imageFactory)) Marshal.ReleaseComObject(imageFactory); } } [DllImport("gdi32.dll")] private static extern bool DeleteObject(IntPtr hObject); } public static class IconProvider { private static readonly ConcurrentDictionary IconByIndexAndScaleCache = new(); private static readonly ConcurrentDictionary ExtensionToIndexMap = new(); private static int _fallbackDirectoryIconIndex; static IconProvider() { _fallbackDirectoryIconIndex = GetIconIndex("asdf1234", IconIndexType.DirectoryName); } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct Shfileinfo { public IntPtr hIcon; public int iIcon; public uint dwAttributes; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szDisplayName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string szTypeName; } [DllImport("shell32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SHGetFileInfo( string pszPath, uint dwFileAttributes, ref Shfileinfo psfi, uint cbSizeFileInfo, uint uFlags ); [DllImport("user32.dll")] private static extern bool DestroyIcon(IntPtr hIcon); private const uint ShgfiSmallicon = 0x000000001; private const uint ShgfiSysiconindex = 0x000004000; private const uint ShgfiUsefileattributes = 0x000000010; private const uint FileAttributeNormal = 0x00000080; private const uint FileAttributeDirectory = 0x00000010; public static ImageSource? GetImage( string path, bool isFile, int iconSize, Action? onUpdated = null ) { int iconIndexByExt; if (isFile) { var extension = Path.GetExtension(path); if (!ExtensionToIndexMap.TryGetValue(extension, out iconIndexByExt)) { iconIndexByExt = GetIconIndex($"asdf1234.{extension}", IconIndexType.ByFileName); ExtensionToIndexMap.TryAdd(extension, iconIndexByExt); } } else { iconIndexByExt = _fallbackDirectoryIconIndex; } var iconByIndexAndScaleCacheKey = iconIndexByExt + "_" + iconSize; if (!IconByIndexAndScaleCache.TryGetValue(iconByIndexAndScaleCacheKey, out var iconByExtAndScale)) { iconByExtAndScale = GetIconFromSystemImageList(iconIndexByExt, iconSize); if (iconByExtAndScale != null) { IconByIndexAndScaleCache.TryAdd(iconByIndexAndScaleCacheKey, iconByExtAndScale); } } if (onUpdated != null) { Task.Run(() => { int exactIconIndex = GetIconIndex(path, IconIndexType.ByFilePath); var exactIconCacheKey = exactIconIndex + "_" + iconSize; if (IconByIndexAndScaleCache.TryGetValue(exactIconCacheKey, out var cachedExactIcon)) { onUpdated.Invoke(cachedExactIcon); return; } ImageSource? exactIcon = GetIconFromSystemImageList(exactIconIndex, iconSize); if (exactIcon != null) { IconByIndexAndScaleCache.TryAdd(exactIconCacheKey, exactIcon); onUpdated.Invoke(exactIcon); } }); } return iconByExtAndScale; } private static int GetIconIndex(string path, IconIndexType indexType) { Shfileinfo shfi = new(); uint flags = ShgfiSysiconindex | ShgfiSmallicon; uint fileAttributes = 0; if (indexType == IconIndexType.ByFileName) { fileAttributes = FileAttributeNormal; flags |= ShgfiUsefileattributes; } else if (indexType == IconIndexType.DirectoryName) { fileAttributes = FileAttributeDirectory; flags |= ShgfiUsefileattributes; } SHGetFileInfo(path, fileAttributes, ref shfi, (uint)Marshal.SizeOf(shfi), flags); return shfi.iIcon; } enum IconIndexType { ByFileName, ByFilePath, DirectoryName, } private const int IldTransparent = 0x00000001; private const int ShilLarge = 0; private const int ShilSmall = 1; private const int ShilExtralarge = 2; private const int ShilJumbo = 4; private static ImageSource? GetIconFromSystemImageList(int iconIndex, int iconSize) { int scaledSize = ImageScalingHelper.GetScaledSize(iconSize); IImageList? imageList = null; try { int imageListType = GetImageListType(scaledSize); Guid iImageListGuid = new("46EB5926-582E-4017-9FDF-E8998DAA0950"); int hr = SHGetImageList(imageListType, iImageListGuid, out imageList); if (hr != 0) return null; hr = imageList.GetIcon(iconIndex, IldTransparent, out IntPtr hIcon); if (hr != 0 || hIcon == IntPtr.Zero) return null; try { var imageSource = Imaging.CreateBitmapSourceFromHIcon( hIcon, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions() ); imageSource.Freeze(); return ImageScalingHelper.SetLogicalSize(imageSource, iconSize); } finally { DestroyIcon(hIcon); } } catch { return null; } finally { if (imageList != null && Marshal.IsComObject(imageList)) Marshal.ReleaseComObject(imageList); } } private static int GetImageListType(int iconSize) { if (iconSize <= 16) return ShilSmall; if (iconSize <= 32) return ShilLarge; if (iconSize <= 48) return ShilExtralarge; return ShilJumbo; } [DllImport("shell32.dll", PreserveSig = true)] private static extern int SHGetImageList( int iImageList, [MarshalAs(UnmanagedType.LPStruct)] Guid riid, [MarshalAs(UnmanagedType.Interface)] out IImageList ppv ); [ComImport] [Guid("46EB5926-582E-4017-9FDF-E8998DAA0950")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] private interface IImageList { [PreserveSig] int Add(IntPtr hbmImage, IntPtr hbmMask, ref int pi); [PreserveSig] int ReplaceIcon(int i, IntPtr hicon, ref int pi); [PreserveSig] int SetOverlayImage(int iImage, int iOverlay); [PreserveSig] int Replace(int i, IntPtr hbmImage, IntPtr hbmMask); [PreserveSig] int AddMasked(IntPtr hbmImage, int crMask, ref int pi); [PreserveSig] int Draw(IntPtr pimldp); [PreserveSig] int Remove(int i); [PreserveSig] int GetIcon(int i, int flags, out IntPtr picon); } } } ================================================ FILE: EverythingToolbar/Helpers/NativeMethods.cs ================================================ using System; using System.Runtime.InteropServices; using NLog; namespace EverythingToolbar.Helpers { public class NativeMethods { private static readonly ILogger Logger = ToolbarLogger.GetLogger(); public static IntPtr FindTaskbarHandle() { return FindWindow("Shell_TrayWnd", null); } public static void FocusTaskbarWindow() { var taskbarHandle = FindTaskbarHandle(); if (taskbarHandle != IntPtr.Zero) { ForciblySetForegroundWindow(taskbarHandle); } } public static void ForciblySetForegroundWindow(IntPtr handle) { var success = SetForegroundWindow(handle); if (success) { SetActiveWindow(handle); return; } Logger.Debug("SetForegroundWindow failed, trying to force window to front..."); var foregroundWindow = GetForegroundWindow(); var foregroundThreadId = GetWindowThreadProcessId(foregroundWindow, out _); var targetThreadId = GetWindowThreadProcessId(handle, out _); if (foregroundThreadId != targetThreadId) AttachThreadInput(foregroundThreadId, targetThreadId, true); try { SetForegroundWindow(handle); SetActiveWindow(handle); } finally { if (foregroundThreadId != targetThreadId) AttachThreadInput(foregroundThreadId, targetThreadId, false); } } [DllImport("user32.dll")] public static extern uint FlashWindow(IntPtr hWnd, bool bInvert); [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool BringWindowToTop(IntPtr hWnd); [DllImport("user32.dll")] private static extern IntPtr SetActiveWindow(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr FindWindowEx( IntPtr parentHandle, IntPtr childAfter, string className, string? windowTitle ); [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string? lpWindowName); [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, ref Copydatastruct lParam); [DllImport("user32.dll")] private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); [DllImport("user32.dll")] private static extern bool AttachThreadInput(uint idAttach, uint idAttachTo, bool fAttach); [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetWindowPos( IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags ); [DllImport("dwmapi.dll")] public static extern int DwmFlush(); [StructLayout(LayoutKind.Sequential)] public struct Copydatastruct { public IntPtr dwData; public int cbData; public IntPtr lpData; } [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr CreateWindowEx( uint dwExStyle, [MarshalAs(UnmanagedType.LPStr)] string lpClassName, [MarshalAs(UnmanagedType.LPStr)] string lpWindowName, uint dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, IntPtr hMenu, IntPtr hInstance, IntPtr lpParam ); [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] public static extern IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong); [DllImport("user32.dll")] public static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam); public delegate IntPtr WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); } } ================================================ FILE: EverythingToolbar/Helpers/RegistryWatcher.cs ================================================ using System; using System.Management; using System.Security.Principal; using Microsoft.Win32; using NLog; namespace EverythingToolbar.Helpers { public delegate void RegistryChange(); public delegate void RegistryChangeValue(object? newValue); internal class RegistryEntry(string hive, string keyPath, string valueName) { public string Hive = hive; public string KeyPath = keyPath; public string ValueName = valueName; public object? GetValue(object? defaultValue = null) { return Registry.GetValue(Hive + @"\" + KeyPath, ValueName, defaultValue); } } internal class RegistryWatcher { private readonly ManagementEventWatcher _watcher; private readonly RegistryEntry _target; private static readonly ILogger Logger = ToolbarLogger.GetLogger(); public event RegistryChange? OnChange; public event RegistryChangeValue? OnChangeValue; public RegistryWatcher(RegistryEntry target) { _target = target; _watcher = CreateWatcher(); _watcher.EventArrived += OnEventArrived; Start(); } ~RegistryWatcher() { _watcher.Dispose(); } private void Start() { try { _watcher.Start(); } catch (Exception e) { Logger.Error(e, $"Failed to initialize RegistryWatcher for target {_target}."); } } public void Stop() { _watcher.Stop(); } private static string EscapeBackticks(string unescaped) { return unescaped.Replace(@"\", @"\\"); } private ManagementEventWatcher CreateWatcher() { // Cannot watch HKEY_CURRENT_USER as it is synthetic. if (_target.Hive == "HKEY_CURRENT_USER") { _target.Hive = "HKEY_USERS"; _target.KeyPath = WindowsIdentity.GetCurrent().User?.Value + @"\" + _target.KeyPath; } var qu = "SELECT * FROM RegistryValueChangeEvent WHERE " + $"Hive='{_target.Hive}' " + $"AND KeyPath='{EscapeBackticks(_target.KeyPath)}' " + $"AND ValueName='{_target.ValueName}'"; var query = new WqlEventQuery(qu); return new ManagementEventWatcher(query); } private object? GetValue(object? defaultValue = null) { return _target.GetValue(defaultValue); } private void OnEventArrived(object sender, EventArrivedEventArgs e) { OnChange?.Invoke(); // Only read value if required if (OnChangeValue?.GetInvocationList().Length > 0) { OnChangeValue.Invoke(GetValue()); } } } } ================================================ FILE: EverythingToolbar/Helpers/ShellContextMenu.cs ================================================ using System; using System.Drawing; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Windows.Forms; using EverythingToolbar; using Microsoft.Win32; namespace Peter { /// /// "Stand-alone" shell context menu /// /// It isn't really debugged but is mostly working. /// Create an instance and call ShowContextMenu with a list of FileInfo for the files. /// Limitation is that it only handles files in the same directory but it can be fixed /// by changing the way files are translated into PIDLs. /// /// Based on FileBrowser in C# from CodeProject /// http://www.codeproject.com/useritems/FileBrowser.asp /// /// Hooking class taken from MSDN Magazine Cutting Edge column /// http://msdn.microsoft.com/msdnmag/issues/02/10/CuttingEdge/ /// /// Andreas Johansson /// afjohansson@hotmail.com /// http://afjohansson.spaces.live.com /// /// /// ShellContextMenu scm = new ShellContextMenu(); /// FileInfo[] files = new FileInfo[1]; /// files[0] = new FileInfo(@"c:\windows\notepad.exe"); /// scm.ShowContextMenu(this.Handle, files, Cursor.Position); /// public class ShellContextMenu : NativeWindow { #region Constructor /// Default constructor public ShellContextMenu() { CreateHandle(new CreateParams()); InitializeDarkModeSupport(); } #endregion #region Destructor /// Ensure all resources get released ~ShellContextMenu() { ReleaseAll(); } #endregion #region GetContextMenuInterfaces() /// Gets the interfaces to the context menu /// Parent folder /// PIDLs /// true if it got the interfaces, otherwise false private bool GetContextMenuInterfaces(IShellFolder oParentFolder, IntPtr[] arrPIDLs, out IntPtr ctxMenuPtr) { var nResult = oParentFolder.GetUIObjectOf( IntPtr.Zero, (uint)arrPIDLs.Length, arrPIDLs, ref IID_IContextMenu, IntPtr.Zero, out ctxMenuPtr ); if (S_OK == nResult) { _oContextMenu = (IContextMenu)Marshal.GetTypedObjectForIUnknown(ctxMenuPtr, typeof(IContextMenu)); return true; } ctxMenuPtr = IntPtr.Zero; _oContextMenu = null; return false; } #endregion #region Override /// /// This method receives WindowMessages. It will make the "Open With" and "Send To" work /// by calling HandleMenuMsg and HandleMenuMsg2. It will also call the OnContextMenuMouseHover /// method of Browser when hovering over a ContextMenu item. /// /// the Message of the Browser's WndProc /// true if the message has been handled, false otherwise protected override void WndProc(ref Message m) { #region IContextMenu2 if ( _oContextMenu2 != null && (m.Msg == (int)WM.INITMENUPOPUP || m.Msg == (int)WM.MEASUREITEM || m.Msg == (int)WM.DRAWITEM) ) { if (_oContextMenu2.HandleMenuMsg((uint)m.Msg, m.WParam, m.LParam) == S_OK) return; } #endregion #region IContextMenu3 if (_oContextMenu3 != null && m.Msg == (int)WM.MENUCHAR) { if (_oContextMenu3.HandleMenuMsg2((uint)m.Msg, m.WParam, m.LParam, IntPtr.Zero) == S_OK) return; } #endregion base.WndProc(ref m); } #endregion #region InvokeCommand private void InvokeCommand(IContextMenu oContextMenu, uint nCmd, string strFolder, Point pointInvoke) { var invoke = new CMINVOKECOMMANDINFOEX { cbSize = cbInvokeCommand, lpVerb = (IntPtr)(nCmd - CMD_FIRST), lpDirectory = strFolder, lpVerbW = (IntPtr)(nCmd - CMD_FIRST), lpDirectoryW = strFolder, fMask = CMIC.UNICODE | CMIC.PTINVOKE | ((Control.ModifierKeys & Keys.Control) != 0 ? CMIC.CONTROL_DOWN : 0) | ((Control.ModifierKeys & Keys.Shift) != 0 ? CMIC.SHIFT_DOWN : 0), ptInvoke = new POINT(pointInvoke.X, pointInvoke.Y), nShow = SW.SHOWNORMAL, }; oContextMenu.InvokeCommand(ref invoke); } #endregion #region ReleaseAll() /// /// Release all allocated interfaces, PIDLs /// private void ReleaseAll() { if (null != _oContextMenu) { Marshal.ReleaseComObject(_oContextMenu); _oContextMenu = null; } if (null != _oContextMenu2) { Marshal.ReleaseComObject(_oContextMenu2); _oContextMenu2 = null; } if (null != _oContextMenu3) { Marshal.ReleaseComObject(_oContextMenu3); _oContextMenu3 = null; } if (null != _oDesktopFolder) { Marshal.ReleaseComObject(_oDesktopFolder); _oDesktopFolder = null; } if (null != _oParentFolder) { Marshal.ReleaseComObject(_oParentFolder); _oParentFolder = null; } if (null != _arrPIDLs) { FreePIDLs(_arrPIDLs); _arrPIDLs = null; } } #endregion #region GetDesktopFolder() /// /// Gets the desktop folder /// /// IShellFolder for desktop folder private IShellFolder GetDesktopFolder() { if (null == _oDesktopFolder) { // Get desktop IShellFolder var nResult = SHGetDesktopFolder(out var pUnkownDesktopFolder); if (S_OK != nResult) { throw new ShellContextMenuException("Failed to get the desktop shell folder"); } _oDesktopFolder = (IShellFolder) Marshal.GetTypedObjectForIUnknown(pUnkownDesktopFolder, typeof(IShellFolder)); } return _oDesktopFolder; } #endregion #region GetParentFolder() /// /// Gets the parent folder /// /// Folder path /// IShellFolder for the folder (relative from the desktop) private IShellFolder GetParentFolder(string folderName) { if (null == _oParentFolder) { var oDesktopFolder = GetDesktopFolder(); if (null == oDesktopFolder) { return null; } // Get the PIDL for the folder file is in uint pchEaten = 0; SFGAO pdwAttributes = 0; var nResult = oDesktopFolder.ParseDisplayName( IntPtr.Zero, IntPtr.Zero, folderName, ref pchEaten, out var pPIDL, ref pdwAttributes ); if (S_OK != nResult) { return null; } var pStrRet = Marshal.AllocCoTaskMem(MAX_PATH * 2 + 4); Marshal.WriteInt32(pStrRet, 0, 0); _ = _oDesktopFolder.GetDisplayNameOf(pPIDL, SHGNO.FORPARSING, pStrRet); var strFolder = new StringBuilder(MAX_PATH); StrRetToBuf(pStrRet, pPIDL, strFolder, MAX_PATH); Marshal.FreeCoTaskMem(pStrRet); _strParentFolder = strFolder.ToString(); // Get the IShellFolder for folder nResult = oDesktopFolder.BindToObject( pPIDL, IntPtr.Zero, ref IID_IShellFolder, out var pUnknownParentFolder ); // Free the PIDL first Marshal.FreeCoTaskMem(pPIDL); if (S_OK != nResult) { return null; } _oParentFolder = (IShellFolder) Marshal.GetTypedObjectForIUnknown(pUnknownParentFolder, typeof(IShellFolder)); } return _oParentFolder; } #endregion #region GetPIDLs() /// /// Get the PIDLs /// /// Array of FileInfo /// Array of PIDLs protected IntPtr[] GetPIDLs(FileInfo[] arrFI) { if (null == arrFI || 0 == arrFI.Length) { return null; } var oParentFolder = GetParentFolder(arrFI[0].DirectoryName); if (null == oParentFolder) { return null; } var arrPIDLs = new IntPtr[arrFI.Length]; var n = 0; foreach (var fi in arrFI) { // Get the file relative to folder uint pchEaten = 0; SFGAO pdwAttributes = 0; var pPIDL = IntPtr.Zero; var nResult = oParentFolder.ParseDisplayName( IntPtr.Zero, IntPtr.Zero, fi.Name, ref pchEaten, out pPIDL, ref pdwAttributes ); if (S_OK != nResult) { FreePIDLs(arrPIDLs); return null; } arrPIDLs[n] = pPIDL; n++; } return arrPIDLs; } /// /// Get the PIDLs /// /// Array of DirectoryInfo /// Array of PIDLs protected IntPtr[] GetPIDLs(DirectoryInfo[] arrFI) { if (null == arrFI || 0 == arrFI.Length) { return null; } var oParentFolder = GetParentFolder(arrFI[0].Parent.FullName); if (null == oParentFolder) { return null; } var arrPIDLs = new IntPtr[arrFI.Length]; var n = 0; foreach (var fi in arrFI) { // Get the file relative to folder uint pchEaten = 0; SFGAO pdwAttributes = 0; var pPIDL = IntPtr.Zero; var nResult = oParentFolder.ParseDisplayName( IntPtr.Zero, IntPtr.Zero, fi.Name, ref pchEaten, out pPIDL, ref pdwAttributes ); if (S_OK != nResult) { FreePIDLs(arrPIDLs); return null; } arrPIDLs[n] = pPIDL; n++; } return arrPIDLs; } #endregion #region FreePIDLs() /// /// Free the PIDLs /// /// Array of PIDLs (IntPtr) protected void FreePIDLs(IntPtr[] arrPIDLs) { if (null != arrPIDLs) { for (var n = 0; n < arrPIDLs.Length; n++) { if (arrPIDLs[n] != IntPtr.Zero) { Marshal.FreeCoTaskMem(arrPIDLs[n]); arrPIDLs[n] = IntPtr.Zero; } } } } #endregion #region ShowContextMenu() /// /// Shows the context menu /// /// FileInfos (should all be in same directory) /// Where to show the menu public void ShowContextMenu(FileInfo[] files, Point pointScreen) { // Release all resources first. ReleaseAll(); _arrPIDLs = GetPIDLs(files); ShowContextMenu(pointScreen); } /// /// Shows the context menu /// /// DirectoryInfos (should all be in same directory) /// Where to show the menu public void ShowContextMenu(DirectoryInfo[] dirs, Point pointScreen) { // Release all resources first. ReleaseAll(); _arrPIDLs = GetPIDLs(dirs); ShowContextMenu(pointScreen); } /// /// Shows the context menu /// /// FileInfos (should all be in same directory) /// Where to show the menu private void ShowContextMenu(Point pointScreen) { IntPtr pMenu = IntPtr.Zero, iContextMenuPtr = IntPtr.Zero, iContextMenuPtr2 = IntPtr.Zero, iContextMenuPtr3 = IntPtr.Zero; try { if (null == _arrPIDLs) { ReleaseAll(); return; } if (false == GetContextMenuInterfaces(_oParentFolder, _arrPIDLs, out iContextMenuPtr)) { ReleaseAll(); return; } ApplyDarkModeToWindow(); pMenu = CreatePopupMenu(); _oContextMenu.QueryContextMenu( pMenu, 0, CMD_FIRST, CMD_LAST, CMF.EXPLORE | CMF.NORMAL | ((Control.ModifierKeys & Keys.Shift) != 0 ? CMF.EXTENDEDVERBS : 0) ); Marshal.QueryInterface(iContextMenuPtr, ref IID_IContextMenu2, out iContextMenuPtr2); Marshal.QueryInterface(iContextMenuPtr, ref IID_IContextMenu3, out iContextMenuPtr3); _oContextMenu2 = (IContextMenu2) Marshal.GetTypedObjectForIUnknown(iContextMenuPtr2, typeof(IContextMenu2)); _oContextMenu3 = (IContextMenu3) Marshal.GetTypedObjectForIUnknown(iContextMenuPtr3, typeof(IContextMenu3)); var nSelected = TrackPopupMenuEx( pMenu, TPM.RETURNCMD, pointScreen.X, pointScreen.Y, Handle, IntPtr.Zero ); DestroyMenu(pMenu); pMenu = IntPtr.Zero; if (nSelected != 0) { InvokeCommand(_oContextMenu, nSelected, _strParentFolder, pointScreen); } } finally { //hook.Uninstall(); if (pMenu != IntPtr.Zero) { DestroyMenu(pMenu); } if (iContextMenuPtr != IntPtr.Zero) Marshal.Release(iContextMenuPtr); if (iContextMenuPtr2 != IntPtr.Zero) Marshal.Release(iContextMenuPtr2); if (iContextMenuPtr3 != IntPtr.Zero) Marshal.Release(iContextMenuPtr3); ReleaseAll(); } } #endregion #region Local variabled private IContextMenu _oContextMenu; private IContextMenu2 _oContextMenu2; private IContextMenu3 _oContextMenu3; private IShellFolder _oDesktopFolder; private IShellFolder _oParentFolder; private IntPtr[] _arrPIDLs; private string _strParentFolder; #endregion #region Variables and Constants private const int MAX_PATH = 260; private const uint CMD_FIRST = 1; private const uint CMD_LAST = 30000; private const int S_OK = 0; private static readonly int cbMenuItemInfo = Marshal.SizeOf(typeof(MENUITEMINFO)); private static readonly int cbInvokeCommand = Marshal.SizeOf(typeof(CMINVOKECOMMANDINFOEX)); #endregion #region DLL Import // Retrieves the IShellFolder interface for the desktop folder, which is the root of the Shell's namespace. [DllImport("shell32.dll")] private static extern Int32 SHGetDesktopFolder(out IntPtr ppshf); // Takes a STRRET structure returned by IShellFolder::GetDisplayNameOf, converts it to a string, and places the result in a buffer. [DllImport( "shlwapi.dll", EntryPoint = "StrRetToBuf", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true )] private static extern Int32 StrRetToBuf(IntPtr pstr, IntPtr pidl, StringBuilder pszBuf, int cchBuf); // The TrackPopupMenuEx function displays a shortcut menu at the specified location and tracks the selection of items on the shortcut menu. The shortcut menu can appear anywhere on the screen. [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)] private static extern uint TrackPopupMenuEx(IntPtr hmenu, TPM flags, int x, int y, IntPtr hwnd, IntPtr lptpm); // The CreatePopupMenu function creates a drop-down menu, submenu, or shortcut menu. The menu is initially empty. You can insert or append menu items by using the InsertMenuItem function. You can also use the InsertMenu function to insert menu items and the AppendMenu function to append menu items. [DllImport("user32", SetLastError = true, CharSet = CharSet.Auto)] private static extern IntPtr CreatePopupMenu(); // The DestroyMenu function destroys the specified menu and frees any memory that the menu occupies. [DllImport("user32", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool DestroyMenu(IntPtr hMenu); #endregion #region Dark Mode Support [DllImport("uxtheme.dll", EntryPoint = "#135", SetLastError = true, CharSet = CharSet.Unicode)] private static extern int SetPreferredAppMode(PreferredAppMode preferredAppMode); [DllImport("uxtheme.dll", EntryPoint = "#136", SetLastError = true, CharSet = CharSet.Unicode)] private static extern void FlushMenuThemes(); [DllImport("uxtheme.dll", EntryPoint = "#133", SetLastError = true, CharSet = CharSet.Unicode)] private static extern bool AllowDarkModeForWindow(IntPtr hWnd, bool allow); [DllImport("uxtheme.dll", SetLastError = true, CharSet = CharSet.Unicode)] private static extern int SetWindowTheme(IntPtr hWnd, string pszSubAppName, string? pszSubIdList); private enum PreferredAppMode { Default, AllowDark, ForceDark, ForceLight, Max, } private static bool _darkModeInitialized; private static bool _isDarkMode; /// /// Initializes dark mode support for the application. /// Should be called once at application startup. /// public static void InitializeDarkModeSupport() { if (_darkModeInitialized) return; try { // Check if we're on Windows 10 1903 or later (build 18362+) if (Environment.OSVersion.Version.Build >= 18362) { SetPreferredAppMode(PreferredAppMode.AllowDark); _darkModeInitialized = true; } } catch { // Silently fail on older Windows versions } } /// /// Detects whether dark mode should be used based on system settings and user preferences. /// private static bool ShouldUseDarkMode() { return !EverythingToolbar.Helpers.Utils.IsLightTheme(); } /// /// Applies dark mode styling to the context menu window. /// private void ApplyDarkModeToWindow() { if (!_darkModeInitialized) InitializeDarkModeSupport(); _isDarkMode = ShouldUseDarkMode(); if (Handle != IntPtr.Zero) { try { AllowDarkModeForWindow(Handle, _isDarkMode); SetWindowTheme(Handle, _isDarkMode ? "DarkMode_Explorer" : "Explorer", null); FlushMenuThemes(); } catch { // Silently fail - dark mode is a nice-to-have feature } } } #endregion #region Shell GUIDs private static Guid IID_IShellFolder = new Guid("{000214E6-0000-0000-C000-000000000046}"); private static Guid IID_IContextMenu = new Guid("{000214e4-0000-0000-c000-000000000046}"); private static Guid IID_IContextMenu2 = new Guid("{000214f4-0000-0000-c000-000000000046}"); private static Guid IID_IContextMenu3 = new Guid("{bcfce0a0-ec17-11d0-8d10-00a0c90f2719}"); #endregion #region Structs [StructLayout(LayoutKind.Sequential)] private struct CWPSTRUCT { public IntPtr lparam; public IntPtr wparam; public int message; public IntPtr hwnd; } // Contains extended information about a shortcut menu command [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] private struct CMINVOKECOMMANDINFOEX { public int cbSize; public CMIC fMask; public IntPtr hwnd; public IntPtr lpVerb; [MarshalAs(UnmanagedType.LPStr)] public string lpParameters; [MarshalAs(UnmanagedType.LPStr)] public string lpDirectory; public SW nShow; public int dwHotKey; public IntPtr hIcon; [MarshalAs(UnmanagedType.LPStr)] public string lpTitle; public IntPtr lpVerbW; [MarshalAs(UnmanagedType.LPWStr)] public string lpParametersW; [MarshalAs(UnmanagedType.LPWStr)] public string lpDirectoryW; [MarshalAs(UnmanagedType.LPWStr)] public string lpTitleW; public POINT ptInvoke; } // Contains information about a menu item [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct MENUITEMINFO { public MENUITEMINFO(string text) { cbSize = cbMenuItemInfo; dwTypeData = text; cch = text.Length; fMask = 0; fType = 0; fState = 0; wID = 0; hSubMenu = IntPtr.Zero; hbmpChecked = IntPtr.Zero; hbmpUnchecked = IntPtr.Zero; dwItemData = IntPtr.Zero; hbmpItem = IntPtr.Zero; } public int cbSize; public MIIM fMask; public MFT fType; public MFS fState; public uint wID; public IntPtr hSubMenu; public IntPtr hbmpChecked; public IntPtr hbmpUnchecked; public IntPtr dwItemData; [MarshalAs(UnmanagedType.LPTStr)] public string dwTypeData; public int cch; public IntPtr hbmpItem; } // A generalized global memory handle used for data transfer operations by the // IAdviseSink, IDataObject, and IOleCache interfaces [StructLayout(LayoutKind.Sequential)] private struct STGMEDIUM { public TYMED tymed; public IntPtr hBitmap; public IntPtr hMetaFilePict; public IntPtr hEnhMetaFile; public IntPtr hGlobal; public IntPtr lpszFileName; public IntPtr pstm; public IntPtr pstg; public IntPtr pUnkForRelease; } // Defines the x- and y-coordinates of a point [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct POINT { public POINT(int x, int y) { this.x = x; this.y = y; } public int x; public int y; } #endregion #region Enums // Defines the values used with the IShellFolder::GetDisplayNameOf and IShellFolder::SetNameOf // methods to specify the type of file or folder names used by those methods [Flags] private enum SHGNO { NORMAL = 0x0000, INFOLDER = 0x0001, FOREDITING = 0x1000, FORADDRESSBAR = 0x4000, FORPARSING = 0x8000, } // The attributes that the caller is requesting, when calling IShellFolder::GetAttributesOf [Flags] private enum SFGAO : uint { BROWSABLE = 0x8000000, CANCOPY = 1, CANDELETE = 0x20, CANLINK = 4, CANMONIKER = 0x400000, CANMOVE = 2, CANRENAME = 0x10, CAPABILITYMASK = 0x177, COMPRESSED = 0x4000000, CONTENTSMASK = 0x80000000, DISPLAYATTRMASK = 0xfc000, DROPTARGET = 0x100, ENCRYPTED = 0x2000, FILESYSANCESTOR = 0x10000000, FILESYSTEM = 0x40000000, FOLDER = 0x20000000, GHOSTED = 0x8000, HASPROPSHEET = 0x40, HASSTORAGE = 0x400000, HASSUBFOLDER = 0x80000000, HIDDEN = 0x80000, ISSLOW = 0x4000, LINK = 0x10000, NEWCONTENT = 0x200000, NONENUMERATED = 0x100000, READONLY = 0x40000, REMOVABLE = 0x2000000, SHARE = 0x20000, STORAGE = 8, STORAGEANCESTOR = 0x800000, STORAGECAPMASK = 0x70c50008, STREAM = 0x400000, VALIDATE = 0x1000000, } // Determines the type of items included in an enumeration. // These values are used with the IShellFolder::EnumObjects method [Flags] private enum SHCONTF { FOLDERS = 0x0020, NONFOLDERS = 0x0040, INCLUDEHIDDEN = 0x0080, INIT_ON_FIRST_NEXT = 0x0100, NETPRINTERSRCH = 0x0200, SHAREABLE = 0x0400, STORAGE = 0x0800, } // Specifies how the shortcut menu can be changed when calling IContextMenu::QueryContextMenu [Flags] private enum CMF : uint { NORMAL = 0x00000000, DEFAULTONLY = 0x00000001, VERBSONLY = 0x00000002, EXPLORE = 0x00000004, NOVERBS = 0x00000008, CANRENAME = 0x00000010, NODEFAULT = 0x00000020, INCLUDESTATIC = 0x00000040, EXTENDEDVERBS = 0x00000100, RESERVED = 0xffff0000, } // Flags specifying the information to return when calling IContextMenu::GetCommandString [Flags] private enum GCS : uint { VERBA = 0, HELPTEXTA = 1, VALIDATEA = 2, VERBW = 4, HELPTEXTW = 5, VALIDATEW = 6, } // Specifies how TrackPopupMenuEx positions the shortcut menu horizontally [Flags] private enum TPM : uint { LEFTBUTTON = 0x0000, RIGHTBUTTON = 0x0002, LEFTALIGN = 0x0000, CENTERALIGN = 0x0004, RIGHTALIGN = 0x0008, TOPALIGN = 0x0000, VCENTERALIGN = 0x0010, BOTTOMALIGN = 0x0020, HORIZONTAL = 0x0000, VERTICAL = 0x0040, NONOTIFY = 0x0080, RETURNCMD = 0x0100, RECURSE = 0x0001, HORPOSANIMATION = 0x0400, HORNEGANIMATION = 0x0800, VERPOSANIMATION = 0x1000, VERNEGANIMATION = 0x2000, NOANIMATION = 0x4000, LAYOUTRTL = 0x8000, } // The cmd for a custom added menu item private enum CMD_CUSTOM { ExpandCollapse = (int)CMD_LAST + 1, } // Flags used with the CMINVOKECOMMANDINFOEX structure [Flags] private enum CMIC : uint { HOTKEY = 0x00000020, ICON = 0x00000010, FLAG_NO_UI = 0x00000400, UNICODE = 0x00004000, NO_CONSOLE = 0x00008000, ASYNCOK = 0x00100000, NOZONECHECKS = 0x00800000, SHIFT_DOWN = 0x10000000, CONTROL_DOWN = 0x40000000, FLAG_LOG_USAGE = 0x04000000, PTINVOKE = 0x20000000, } // Specifies how the window is to be shown [Flags] private enum SW { HIDE = 0, SHOWNORMAL = 1, NORMAL = 1, SHOWMINIMIZED = 2, SHOWMAXIMIZED = 3, MAXIMIZE = 3, SHOWNOACTIVATE = 4, SHOW = 5, MINIMIZE = 6, SHOWMINNOACTIVE = 7, SHOWNA = 8, RESTORE = 9, SHOWDEFAULT = 10, } // Window message flags [Flags] private enum WM : uint { ACTIVATE = 0x6, ACTIVATEAPP = 0x1C, AFXFIRST = 0x360, AFXLAST = 0x37F, APP = 0x8000, ASKCBFORMATNAME = 0x30C, CANCELJOURNAL = 0x4B, CANCELMODE = 0x1F, CAPTURECHANGED = 0x215, CHANGECBCHAIN = 0x30D, CHAR = 0x102, CHARTOITEM = 0x2F, CHILDACTIVATE = 0x22, CLEAR = 0x303, CLOSE = 0x10, COMMAND = 0x111, COMPACTING = 0x41, COMPAREITEM = 0x39, CONTEXTMENU = 0x7B, COPY = 0x301, COPYDATA = 0x4A, CREATE = 0x1, CTLCOLORBTN = 0x135, CTLCOLORDLG = 0x136, CTLCOLOREDIT = 0x133, CTLCOLORLISTBOX = 0x134, CTLCOLORMSGBOX = 0x132, CTLCOLORSCROLLBAR = 0x137, CTLCOLORSTATIC = 0x138, CUT = 0x300, DEADCHAR = 0x103, DELETEITEM = 0x2D, DESTROY = 0x2, DESTROYCLIPBOARD = 0x307, DEVICECHANGE = 0x219, DEVMODECHANGE = 0x1B, DISPLAYCHANGE = 0x7E, DRAWCLIPBOARD = 0x308, DRAWITEM = 0x2B, DROPFILES = 0x233, ENABLE = 0xA, ENDSESSION = 0x16, ENTERIDLE = 0x121, ENTERMENULOOP = 0x211, ENTERSIZEMOVE = 0x231, ERASEBKGND = 0x14, EXITMENULOOP = 0x212, EXITSIZEMOVE = 0x232, FONTCHANGE = 0x1D, GETDLGCODE = 0x87, GETFONT = 0x31, GETHOTKEY = 0x33, GETICON = 0x7F, GETMINMAXINFO = 0x24, GETOBJECT = 0x3D, GETSYSMENU = 0x313, GETTEXT = 0xD, GETTEXTLENGTH = 0xE, HANDHELDFIRST = 0x358, HANDHELDLAST = 0x35F, HELP = 0x53, HOTKEY = 0x312, HSCROLL = 0x114, HSCROLLCLIPBOARD = 0x30E, ICONERASEBKGND = 0x27, IME_CHAR = 0x286, IME_COMPOSITION = 0x10F, IME_COMPOSITIONFULL = 0x284, IME_CONTROL = 0x283, IME_ENDCOMPOSITION = 0x10E, IME_KEYDOWN = 0x290, IME_KEYLAST = 0x10F, IME_KEYUP = 0x291, IME_NOTIFY = 0x282, IME_REQUEST = 0x288, IME_SELECT = 0x285, IME_SETCONTEXT = 0x281, IME_STARTCOMPOSITION = 0x10D, INITDIALOG = 0x110, INITMENU = 0x116, INITMENUPOPUP = 0x117, INPUTLANGCHANGE = 0x51, INPUTLANGCHANGEREQUEST = 0x50, KEYDOWN = 0x100, KEYFIRST = 0x100, KEYLAST = 0x108, KEYUP = 0x101, KILLFOCUS = 0x8, LBUTTONDBLCLK = 0x203, LBUTTONDOWN = 0x201, LBUTTONUP = 0x202, LVM_GETEDITCONTROL = 0x1018, LVM_SETIMAGELIST = 0x1003, MBUTTONDBLCLK = 0x209, MBUTTONDOWN = 0x207, MBUTTONUP = 0x208, MDIACTIVATE = 0x222, MDICASCADE = 0x227, MDICREATE = 0x220, MDIDESTROY = 0x221, MDIGETACTIVE = 0x229, MDIICONARRANGE = 0x228, MDIMAXIMIZE = 0x225, MDINEXT = 0x224, MDIREFRESHMENU = 0x234, MDIRESTORE = 0x223, MDISETMENU = 0x230, MDITILE = 0x226, MEASUREITEM = 0x2C, MENUCHAR = 0x120, MENUCOMMAND = 0x126, MENUDRAG = 0x123, MENUGETOBJECT = 0x124, MENURBUTTONUP = 0x122, MENUSELECT = 0x11F, MOUSEACTIVATE = 0x21, MOUSEFIRST = 0x200, MOUSEHOVER = 0x2A1, MOUSELAST = 0x20A, MOUSELEAVE = 0x2A3, MOUSEMOVE = 0x200, MOUSEWHEEL = 0x20A, MOVE = 0x3, MOVING = 0x216, NCACTIVATE = 0x86, NCCALCSIZE = 0x83, NCCREATE = 0x81, NCDESTROY = 0x82, NCHITTEST = 0x84, NCLBUTTONDBLCLK = 0xA3, NCLBUTTONDOWN = 0xA1, NCLBUTTONUP = 0xA2, NCMBUTTONDBLCLK = 0xA9, NCMBUTTONDOWN = 0xA7, NCMBUTTONUP = 0xA8, NCMOUSEHOVER = 0x2A0, NCMOUSELEAVE = 0x2A2, NCMOUSEMOVE = 0xA0, NCPAINT = 0x85, NCRBUTTONDBLCLK = 0xA6, NCRBUTTONDOWN = 0xA4, NCRBUTTONUP = 0xA5, NEXTDLGCTL = 0x28, NEXTMENU = 0x213, NOTIFY = 0x4E, NOTIFYFORMAT = 0x55, NULL = 0x0, PAINT = 0xF, PAINTCLIPBOARD = 0x309, PAINTICON = 0x26, PALETTECHANGED = 0x311, PALETTEISCHANGING = 0x310, PARENTNOTIFY = 0x210, PASTE = 0x302, PENWINFIRST = 0x380, PENWINLAST = 0x38F, POWER = 0x48, PRINT = 0x317, PRINTCLIENT = 0x318, QUERYDRAGICON = 0x37, QUERYENDSESSION = 0x11, QUERYNEWPALETTE = 0x30F, QUERYOPEN = 0x13, QUEUESYNC = 0x23, QUIT = 0x12, RBUTTONDBLCLK = 0x206, RBUTTONDOWN = 0x204, RBUTTONUP = 0x205, RENDERALLFORMATS = 0x306, RENDERFORMAT = 0x305, SETCURSOR = 0x20, SETFOCUS = 0x7, SETFONT = 0x30, SETHOTKEY = 0x32, SETICON = 0x80, SETMARGINS = 0xD3, SETREDRAW = 0xB, SETTEXT = 0xC, SETTINGCHANGE = 0x1A, SHOWWINDOW = 0x18, SIZE = 0x5, SIZECLIPBOARD = 0x30B, SIZING = 0x214, SPOOLERSTATUS = 0x2A, STYLECHANGED = 0x7D, STYLECHANGING = 0x7C, SYNCPAINT = 0x88, SYSCHAR = 0x106, SYSCOLORCHANGE = 0x15, SYSCOMMAND = 0x112, SYSDEADCHAR = 0x107, SYSKEYDOWN = 0x104, SYSKEYUP = 0x105, TCARD = 0x52, TIMECHANGE = 0x1E, TIMER = 0x113, TVM_GETEDITCONTROL = 0x110F, TVM_SETIMAGELIST = 0x1109, UNDO = 0x304, UNINITMENUPOPUP = 0x125, USER = 0x400, USERCHANGED = 0x54, VKEYTOITEM = 0x2E, VSCROLL = 0x115, VSCROLLCLIPBOARD = 0x30A, WINDOWPOSCHANGED = 0x47, WINDOWPOSCHANGING = 0x46, WININICHANGE = 0x1A, SH_NOTIFY = 0x0401, } // Specifies the content of the new menu item [Flags] private enum MFT : uint { GRAYED = 0x00000003, DISABLED = 0x00000003, CHECKED = 0x00000008, SEPARATOR = 0x00000800, RADIOCHECK = 0x00000200, BITMAP = 0x00000004, OWNERDRAW = 0x00000100, MENUBARBREAK = 0x00000020, MENUBREAK = 0x00000040, RIGHTORDER = 0x00002000, BYCOMMAND = 0x00000000, BYPOSITION = 0x00000400, POPUP = 0x00000010, } // Specifies the state of the new menu item [Flags] private enum MFS : uint { GRAYED = 0x00000003, DISABLED = 0x00000003, CHECKED = 0x00000008, HILITE = 0x00000080, ENABLED = 0x00000000, UNCHECKED = 0x00000000, UNHILITE = 0x00000000, DEFAULT = 0x00001000, } // Specifies the content of the new menu item [Flags] private enum MIIM : uint { BITMAP = 0x80, CHECKMARKS = 0x08, DATA = 0x20, FTYPE = 0x100, ID = 0x02, STATE = 0x01, STRING = 0x40, SUBMENU = 0x04, TYPE = 0x10, } // Indicates the type of storage medium being used in a data transfer [Flags] private enum TYMED { ENHMF = 0x40, FILE = 2, GDI = 0x10, HGLOBAL = 1, ISTORAGE = 8, ISTREAM = 4, MFPICT = 0x20, NULL = 0, } #endregion #region IShellFolder [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("000214E6-0000-0000-C000-000000000046")] private interface IShellFolder { // Translates a file object's or folder's display name into an item identifier list. // Return value: error code, if any [PreserveSig] Int32 ParseDisplayName( IntPtr hwnd, IntPtr pbc, [MarshalAs(UnmanagedType.LPWStr)] string pszDisplayName, ref uint pchEaten, out IntPtr ppidl, ref SFGAO pdwAttributes ); // Allows a client to determine the contents of a folder by creating an item // identifier enumeration object and returning its IEnumIDList interface. // Return value: error code, if any [PreserveSig] Int32 EnumObjects(IntPtr hwnd, SHCONTF grfFlags, out IntPtr enumIDList); // Retrieves an IShellFolder object for a subfolder. // Return value: error code, if any [PreserveSig] Int32 BindToObject(IntPtr pidl, IntPtr pbc, ref Guid riid, out IntPtr ppv); // Requests a pointer to an object's storage interface. // Return value: error code, if any [PreserveSig] Int32 BindToStorage(IntPtr pidl, IntPtr pbc, ref Guid riid, out IntPtr ppv); // Determines the relative order of two file objects or folders, given their // item identifier lists. Return value: If this method is successful, the // CODE field of the HRESULT contains one of the following values (the code // can be retrived using the helper function GetHResultCode): Negative A // negative return value indicates that the first item should precede // the second (pidl1 < pidl2). // Positive A positive return value indicates that the first item should // follow the second (pidl1 > pidl2). Zero A return value of zero // indicates that the two items are the same (pidl1 = pidl2). [PreserveSig] Int32 CompareIDs(IntPtr lParam, IntPtr pidl1, IntPtr pidl2); // Requests an object that can be used to obtain information from or interact // with a folder object. // Return value: error code, if any [PreserveSig] Int32 CreateViewObject(IntPtr hwndOwner, Guid riid, out IntPtr ppv); // Retrieves the attributes of one or more file objects or subfolders. // Return value: error code, if any [PreserveSig] Int32 GetAttributesOf(uint cidl, [MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, ref SFGAO rgfInOut); // Retrieves an OLE interface that can be used to carry out actions on the // specified file objects or folders. // Return value: error code, if any [PreserveSig] Int32 GetUIObjectOf( IntPtr hwndOwner, uint cidl, [MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, ref Guid riid, IntPtr rgfReserved, out IntPtr ppv ); // Retrieves the display name for the specified file object or subfolder. // Return value: error code, if any [PreserveSig] Int32 GetDisplayNameOf(IntPtr pidl, SHGNO uFlags, IntPtr lpName); // Sets the display name of a file object or subfolder, changing the item // identifier in the process. // Return value: error code, if any [PreserveSig] Int32 SetNameOf( IntPtr hwnd, IntPtr pidl, [MarshalAs(UnmanagedType.LPWStr)] string pszName, SHGNO uFlags, out IntPtr ppidlOut ); } #endregion #region IContextMenu [ComImport] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [GuidAttribute("000214e4-0000-0000-c000-000000000046")] private interface IContextMenu { // Adds commands to a shortcut menu [PreserveSig] Int32 QueryContextMenu(IntPtr hmenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF uFlags); // Carries out the command associated with a shortcut menu item [PreserveSig] Int32 InvokeCommand(ref CMINVOKECOMMANDINFOEX info); // Retrieves information about a shortcut menu command, // including the help string and the language-independent, // or canonical, name for the command [PreserveSig] Int32 GetCommandString( uint idcmd, GCS uflags, uint reserved, [MarshalAs(UnmanagedType.LPArray)] byte[] commandstring, int cch ); } [ComImport, Guid("000214f4-0000-0000-c000-000000000046")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] private interface IContextMenu2 { // Adds commands to a shortcut menu [PreserveSig] Int32 QueryContextMenu(IntPtr hmenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF uFlags); // Carries out the command associated with a shortcut menu item [PreserveSig] Int32 InvokeCommand(ref CMINVOKECOMMANDINFOEX info); // Retrieves information about a shortcut menu command, // including the help string and the language-independent, // or canonical, name for the command [PreserveSig] Int32 GetCommandString( uint idcmd, GCS uflags, uint reserved, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder commandstring, int cch ); // Allows client objects of the IContextMenu interface to // handle messages associated with owner-drawn menu items [PreserveSig] Int32 HandleMenuMsg(uint uMsg, IntPtr wParam, IntPtr lParam); } [ComImport, Guid("bcfce0a0-ec17-11d0-8d10-00a0c90f2719")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] private interface IContextMenu3 { // Adds commands to a shortcut menu [PreserveSig] Int32 QueryContextMenu(IntPtr hmenu, uint iMenu, uint idCmdFirst, uint idCmdLast, CMF uFlags); // Carries out the command associated with a shortcut menu item [PreserveSig] Int32 InvokeCommand(ref CMINVOKECOMMANDINFOEX info); // Retrieves information about a shortcut menu command, // including the help string and the language-independent, // or canonical, name for the command [PreserveSig] Int32 GetCommandString( uint idcmd, GCS uflags, uint reserved, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder commandstring, int cch ); // Allows client objects of the IContextMenu interface to // handle messages associated with owner-drawn menu items [PreserveSig] Int32 HandleMenuMsg(uint uMsg, IntPtr wParam, IntPtr lParam); // Allows client objects of the IContextMenu3 interface to // handle messages associated with owner-drawn menu items [PreserveSig] Int32 HandleMenuMsg2(uint uMsg, IntPtr wParam, IntPtr lParam, IntPtr plResult); } #endregion } #region ShellContextMenuException public class ShellContextMenuException : Exception { /// Default contructor public ShellContextMenuException() { } /// Constructor with message /// Message public ShellContextMenuException(string message) : base(message) { } } #endregion #region Class HookEventArgs public class HookEventArgs : EventArgs { public int HookCode; // Hook code public IntPtr wParam; // WPARAM argument public IntPtr lParam; // LPARAM argument } #endregion #region Enum HookType // Hook Types public enum HookType { WH_JOURNALRECORD = 0, WH_JOURNALPLAYBACK = 1, WH_KEYBOARD = 2, WH_GETMESSAGE = 3, WH_CALLWNDPROC = 4, WH_CBT = 5, WH_SYSMSGFILTER = 6, WH_MOUSE = 7, WH_HARDWARE = 8, WH_DEBUG = 9, WH_SHELL = 10, WH_FOREGROUNDIDLE = 11, WH_CALLWNDPROCRET = 12, WH_KEYBOARD_LL = 13, WH_MOUSE_LL = 14, } #endregion #region Class LocalWindowsHook public class LocalWindowsHook { // ************************************************************************ // Filter function delegate public delegate int HookProc(int code, IntPtr wParam, IntPtr lParam); // ************************************************************************ // ************************************************************************ // Internal properties protected IntPtr m_hhook = IntPtr.Zero; protected HookProc m_filterFunc; protected HookType m_hookType; // ************************************************************************ // ************************************************************************ // Event delegate public delegate void HookEventHandler(object sender, HookEventArgs e); // ************************************************************************ // ************************************************************************ // Event: HookInvoked public event HookEventHandler HookInvoked; protected void OnHookInvoked(HookEventArgs e) { HookInvoked?.Invoke(this, e); } // ************************************************************************ // ************************************************************************ // Class constructor(s) public LocalWindowsHook(HookType hook) { m_hookType = hook; m_filterFunc = CoreHookProc; } public LocalWindowsHook(HookType hook, HookProc func) { m_hookType = hook; m_filterFunc = func; } // ************************************************************************ // ************************************************************************ // Default filter function protected int CoreHookProc(int code, IntPtr wParam, IntPtr lParam) { if (code < 0) return CallNextHookEx(m_hhook, code, wParam, lParam); // Let clients determine what to do var e = new HookEventArgs { HookCode = code, wParam = wParam, lParam = lParam, }; OnHookInvoked(e); // Yield to the next hook in the chain return CallNextHookEx(m_hhook, code, wParam, lParam); } // ************************************************************************ // ************************************************************************ // Install the hook public void Install() { m_hhook = SetWindowsHookEx(m_hookType, m_filterFunc, IntPtr.Zero, Thread.CurrentThread.ManagedThreadId); } // ************************************************************************ // ************************************************************************ // Uninstall the hook public void Uninstall() { UnhookWindowsHookEx(m_hhook); } // ************************************************************************ #region Win32 Imports // ************************************************************************ // Win32: SetWindowsHookEx() [DllImport("user32.dll")] protected static extern IntPtr SetWindowsHookEx(HookType code, HookProc func, IntPtr hInstance, int threadID); // ************************************************************************ // ************************************************************************ // Win32: UnhookWindowsHookEx() [DllImport("user32.dll")] protected static extern int UnhookWindowsHookEx(IntPtr hhook); // ************************************************************************ // ************************************************************************ // Win32: CallNextHookEx() [DllImport("user32.dll")] protected static extern int CallNextHookEx(IntPtr hhook, int code, IntPtr wParam, IntPtr lParam); // ************************************************************************ #endregion } #endregion } ================================================ FILE: EverythingToolbar/Helpers/ShellUtils.cs ================================================ using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; namespace EverythingToolbar.Helpers { internal abstract class ShellUtils { private ShellUtils() { } [DllImport("shell32.dll", CharSet = CharSet.Auto)] private static extern bool ShellExecuteEx(ref ShellExecuteInfo lpExecInfo); [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct ShellExecuteInfo { public int cbSize; public uint fMask; public IntPtr hwnd; [MarshalAs(UnmanagedType.LPTStr)] public string lpVerb; [MarshalAs(UnmanagedType.LPTStr)] public string lpFile; [MarshalAs(UnmanagedType.LPTStr)] public string lpParameters; [MarshalAs(UnmanagedType.LPTStr)] public string lpDirectory; public int nShow; public IntPtr hInstApp; public IntPtr lpIDList; [MarshalAs(UnmanagedType.LPTStr)] public string lpClass; public IntPtr hkeyClass; public uint dwHotKey; public IntPtr hIcon; public IntPtr hProcess; } public static void ShowFileProperties(string path) { var info = new ShellExecuteInfo(); info.cbSize = Marshal.SizeOf(info); info.lpVerb = "properties"; info.lpFile = path; info.nShow = 5; info.fMask = 12; ShellExecuteEx(ref info); } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] private struct StartupInfo { public Int32 cb; public string lpReserved; public string lpDesktop; public string lpTitle; public Int32 dwX; public Int32 dwY; public Int32 dwXSize; public Int32 dwYSize; public Int32 dwXCountChars; public Int32 dwYCountChars; public Int32 dwFillAttribute; public Int32 dwFlags; public Int16 wShowWindow; public Int16 cbReserved2; public IntPtr lpReserved2; public IntPtr hStdInput; public IntPtr hStdOutput; public IntPtr hStdError; } [StructLayout(LayoutKind.Sequential)] private struct ProcessInformation { public IntPtr hProcess; public IntPtr hThread; public int dwProcessId; public int dwThreadId; } [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool CreateProcess( string? lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string? lpCurrentDirectory, [In] ref StartupInfo lpStartupInfo, out ProcessInformation lpProcessInformation ); public static void CreateProcessFromCommandLine(string commandLine, string? workingDirectory = null) { var si = new StartupInfo(); CreateProcess( null, commandLine, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, workingDirectory, ref si, out var _ ); } public static void OpenWithDialog(string path) { var args = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "shell32.dll"); args += ",OpenAs_RunDLL " + path; Process.Start("rundll32.exe", args); } [DllImport("shell32.dll", SetLastError = true)] private static extern int SHOpenFolderAndSelectItems( IntPtr pidlFolder, uint cidl, [In, MarshalAs(UnmanagedType.LPArray)] IntPtr[] apidl, uint dwFlags ); [DllImport("shell32.dll", SetLastError = true)] private static extern void SHParseDisplayName( [MarshalAs(UnmanagedType.LPWStr)] string name, IntPtr bindingContext, [Out] out IntPtr pidl, uint sfgaoIn, [Out] out uint psfgaoOut ); public static void OpenParentFolderAndSelect(string path) { var parentFolder = Path.GetDirectoryName(path); if (string.IsNullOrEmpty(parentFolder)) return; SHParseDisplayName(parentFolder, IntPtr.Zero, out var nativeFolder, 0, out _); if (nativeFolder == IntPtr.Zero) return; var itemToSelect = Path.GetFileName(path); SHParseDisplayName(Path.Combine(parentFolder, itemToSelect), IntPtr.Zero, out var nativeFile, 0, out _); var fileArray = new[] { nativeFile == IntPtr.Zero ? nativeFolder : nativeFile }; SHOpenFolderAndSelectItems(nativeFolder, (uint)fileArray.Length, fileArray, 0); Marshal.FreeCoTaskMem(nativeFolder); if (nativeFile != IntPtr.Zero) Marshal.FreeCoTaskMem(nativeFile); } } } ================================================ FILE: EverythingToolbar/Helpers/ShortcutManager.cs ================================================ using System; using System.Windows.Input; using EverythingToolbar.Controls; using EverythingToolbar.Properties; using NHotkey; using NHotkey.Wpf; using NLog; namespace EverythingToolbar.Helpers { public class ShortcutManager { private const string HotkeyName = "EverythingToolbarHotkey"; private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private static EventHandler? _handler; public static void Initialize(EventHandler handler) { _handler = handler; var shortcutKey = (Key)ToolbarSettings.User.ShortcutKey; var shortcutModifiers = (ModifierKeys)ToolbarSettings.User.ShortcutModifiers; if (shortcutKey == Key.None && shortcutModifiers == ModifierKeys.None) return; TrySetShortcut(shortcutKey, shortcutModifiers); } public static void TrySetShortcut(Key key, ModifierKeys modifiers) { try { HotkeyManager.Current.AddOrReplace(HotkeyName, key, modifiers, _handler); UpdateSettings(key, modifiers); } catch (HotkeyAlreadyRegisteredException e) { UpdateSettings(Key.None, ModifierKeys.None); Logger.Error(e, "Failed to register hotkey {0} with modifiers {1}", key, modifiers); FluentMessageBox .CreateError(Resources.MessageBoxFailedToRegisterHotkey, Resources.MessageBoxErrorTitle) .ShowDialogAsync(); } } public static void UpdateSettings(Key key, ModifierKeys mods) { ToolbarSettings.User.ShortcutKey = (int)key; ToolbarSettings.User.ShortcutModifiers = (int)mods; } } } ================================================ FILE: EverythingToolbar/Helpers/StartMenuIntegration.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.InteropServices; using System.Text; using System.Windows.Input; using System.Windows.Threading; using NLog; namespace EverythingToolbar.Helpers { public class StartMenuIntegration { public static readonly StartMenuIntegration Instance = new(); private static readonly Queue RecordedInputs = new(); private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private static WinEventDelegate? _focusedWindowChangedCallback; private static LowLevelKeyboardProc? _startMenuKeyboardHookCallback; private static IntPtr _focusedWindowChangedHookId = IntPtr.Zero; private static IntPtr _startMenuKeyboardHookId = IntPtr.Zero; private static IntPtr _searchAppHwnd = IntPtr.Zero; private static bool _isNativeSearchActive; private static bool _isInterceptingKeys; private static bool _initialAnimationsEnabledState; private readonly DispatcherTimer _cleanupTimer = new() { Interval = TimeSpan.FromSeconds(1) }; private const int WhKeyboardLl = 13; private const int WmKeyDown = 0x0100; private const int WmSyskeyDown = 0x0104; private const int InputKeyboard = 1; private const uint KeyeventFKeyup = 0x0002; private StartMenuIntegration() { _cleanupTimer.Tick += OnCleanupTimerElapsed; ToolbarSettings.User.PropertyChanged += OnSettingsChanged; } public void Initialize() { if (ToolbarSettings.User.IsReplaceStartMenuSearch) Enable(); } private void OnSettingsChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(ToolbarSettings.User.IsReplaceStartMenuSearch)) { if (ToolbarSettings.User.IsReplaceStartMenuSearch) Enable(); else Disable(); } } public void Enable() { _initialAnimationsEnabledState = Utils.GetSystemAnimationsEnabled(); UnhookWinEvent(_focusedWindowChangedHookId); _focusedWindowChangedCallback = OnFocusedWindowChanged; _focusedWindowChangedHookId = SetWinEventHook(3, 3, IntPtr.Zero, _focusedWindowChangedCallback, 0, 0, 0); CancelCleanupTimer(); } public void Disable() { UnhookWinEvent(_focusedWindowChangedHookId); _focusedWindowChangedHookId = IntPtr.Zero; ResetHandoverState(); } private void OnFocusedWindowChanged( IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime ) { GetForegroundWindowAndProcess(out var foregroundHwnd, out var foregroundProcessName); Logger.Debug($"Foreground process: {foregroundProcessName}"); if ( foregroundProcessName.EndsWith("SearchApp.exe") || foregroundProcessName.EndsWith("SearchUI.exe") || foregroundProcessName.EndsWith("SearchHost.exe") ) { if (_isInterceptingKeys) { Logger.Debug("Native search regained the foreground during handover. Resetting intercepted state."); ResetHandoverState(); } else { Utils.SetSystemAnimationsEnabled(_initialAnimationsEnabledState); } _searchAppHwnd = foregroundHwnd; HookStartMenuInput(); CancelCleanupTimer(); } else { if (_isInterceptingKeys) { TriggerSearchWindow(); StartCleanupTimer(); } else { UnhookStartMenuInput(); } _isNativeSearchActive = false; } } private IntPtr StartMenuKeyboardHookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && !_isNativeSearchActive) { var virtualKeyCode = (uint)Marshal.ReadInt32(lParam); var isKeyDown = wParam is WmKeyDown or WmSyskeyDown; // We never want to block the Windows keys and Escape if (virtualKeyCode == 0x5B || virtualKeyCode == 0x5C || virtualKeyCode == 0x1B) { return CallNextHookEx(_startMenuKeyboardHookId, nCode, wParam, lParam); } // Check for exception key (LALT) if (virtualKeyCode == 0xA4) { _isNativeSearchActive = true; return CallNextHookEx(_startMenuKeyboardHookId, nCode, wParam, lParam); } // Queue keypress for replay in EverythingToolbar _isInterceptingKeys = true; RecordedInputs.Enqueue( new Input { type = InputKeyboard, u = new InputUnion { ki = new KeybdInput { wVk = (ushort)virtualKeyCode, dwFlags = isKeyDown ? 0 : KeyeventFKeyup, }, }, } ); CloseStartMenu(); return 1; } return CallNextHookEx(_startMenuKeyboardHookId, nCode, wParam, lParam); } private void OnAnySearchBoxGotKeyboardFocus(object? sender, EventArgs e) { if (!_isInterceptingKeys) return; EventDispatcher.Instance.SearchBoxFocused -= OnAnySearchBoxGotKeyboardFocus; Logger.Debug("Search box got keyboard focus. Replaying recorded inputs..."); UnhookStartMenuInput(); ReplayRecordedInputs(); _isInterceptingKeys = false; _searchAppHwnd = IntPtr.Zero; } private void StartCleanupTimer() { _cleanupTimer.Stop(); _cleanupTimer.Start(); } private void CancelCleanupTimer() { _cleanupTimer.Stop(); } private void OnCleanupTimerElapsed(object? sender, EventArgs e) { Logger.Debug("Cleanup timer elapsed. Clearing recorded inputs and unhooking keyboard hook."); ResetHandoverState(); } private void TriggerSearchWindow() { EventDispatcher.Instance.SearchBoxFocused -= OnAnySearchBoxGotKeyboardFocus; EventDispatcher.Instance.SearchBoxFocused += OnAnySearchBoxGotKeyboardFocus; SearchWindow.Instance.Dispatcher.BeginInvoke( new Action(() => { SearchWindow.Instance.Show(); EventDispatcher.Instance.InvokeSearchBoxFocused(this, EventArgs.Empty); }), DispatcherPriority.Input ); } private void ReplayRecordedInputs() { while (RecordedInputs.Count > 0) { var input = RecordedInputs.Dequeue(); keybd_event((byte)input.u.ki.wVk, (byte)input.u.ki.wScan, input.u.ki.dwFlags, input.u.ki.dwExtraInfo); } } private void CloseStartMenu() { if (_searchAppHwnd != IntPtr.Zero) { Utils.SetSystemAnimationsEnabled(false); PostMessage(_searchAppHwnd, 0x0010, 0, 0); _searchAppHwnd = IntPtr.Zero; } } private void ResetHandoverState() { CancelCleanupTimer(); RecordedInputs.Clear(); UnhookStartMenuInput(); _searchAppHwnd = IntPtr.Zero; _isInterceptingKeys = false; _isNativeSearchActive = false; Utils.SetSystemAnimationsEnabled(_initialAnimationsEnabledState); } private void HookStartMenuInput() { UnhookStartMenuInput(); _startMenuKeyboardHookCallback = StartMenuKeyboardHookCallback; _startMenuKeyboardHookId = SetWindowsHookEx(WhKeyboardLl, _startMenuKeyboardHookCallback, IntPtr.Zero, 0); } private void UnhookStartMenuInput() { UnhookWindowsHookEx(_startMenuKeyboardHookId); _startMenuKeyboardHookId = IntPtr.Zero; } private static void GetForegroundWindowAndProcess(out IntPtr foregroundHwnd, out string foregroundProcessName) { foregroundHwnd = GetForegroundWindow(); GetWindowThreadProcessId(foregroundHwnd, out var processId); var processHandle = OpenProcess(0x0410, false, processId); var processNameBuilder = new StringBuilder(1000); GetModuleFileNameEx(processHandle, IntPtr.Zero, processNameBuilder, processNameBuilder.Capacity); CloseHandle(processHandle); foregroundProcessName = processNameBuilder.ToString(); } private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); private delegate void WinEventDelegate( IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime ); [DllImport("kernel32.dll")] static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId); [DllImport("kernel32.dll")] static extern bool CloseHandle(IntPtr handle); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc? lpfn, IntPtr hMod, uint dwThreadId); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool UnhookWindowsHookEx(IntPtr hhk); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); [DllImport("user32.dll")] static extern IntPtr SetWinEventHook( uint eventMin, uint eventMax, IntPtr hmodWinEventProc, WinEventDelegate? lpfnWinEventProc, uint idProcess, uint idThread, uint dwFlags ); [DllImport("user32.dll")] static extern bool UnhookWinEvent(IntPtr hWinEventHook); [DllImport("user32.Dll")] static extern int PostMessage(IntPtr hWnd, UInt32 msg, int wParam, int lParam); [DllImport("psapi.dll")] static extern uint GetModuleFileNameEx(IntPtr hWnd, IntPtr hModule, StringBuilder lpFileName, int nSize); [DllImport("user32.dll", SetLastError = true)] private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, IntPtr dwExtraInfo); [StructLayout(LayoutKind.Sequential)] private struct Input { public int type; public InputUnion u; } [StructLayout(LayoutKind.Explicit)] private struct InputUnion { [FieldOffset(0)] public KeybdInput ki; } [StructLayout(LayoutKind.Sequential)] private struct KeybdInput { public ushort wVk; public ushort wScan; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; } } } ================================================ FILE: EverythingToolbar/Helpers/TaskbarStateManager.cs ================================================ using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows; namespace EverythingToolbar.Helpers { public enum Edge : uint { Left, Top, Right, Bottom, } public class TaskbarStateManager : INotifyPropertyChanged { public static readonly TaskbarStateManager Instance = new TaskbarStateManager(); private TaskbarStateManager() { } private Edge _taskbarEdge = Edge.Bottom; public Edge TaskbarEdge { get => _taskbarEdge; set { _taskbarEdge = value; NotifyPropertyChanged(); } } private Size _taskbarSize; public Size TaskbarSize { get => _taskbarSize; set { _taskbarSize = value; NotifyPropertyChanged(); } } private bool _isIcon; public bool IsIcon { get => _isIcon; set { _isIcon = value; NotifyPropertyChanged(); } } public event PropertyChangedEventHandler? PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } ================================================ FILE: EverythingToolbar/Helpers/ToolbarLogger.cs ================================================ using System; using System.IO; using System.Reflection; using System.Windows; using NLog; using NLog.Config; using NLog.Targets; namespace EverythingToolbar.Helpers { public static class ToolbarLogger { private static readonly string DebugFlagFileName = Path.Combine(Utils.GetConfigDirectory(), "debug.txt"); private static readonly LogFactory LogFactory = new LogFactory(); public static ILogger GetLogger(string name) { return LogFactory.GetLogger(name); } public static ILogger GetLogger() { return LogFactory.GetLogger(typeof(T).FullName); } private static LogLevel GetLogLevel() { return File.Exists(DebugFlagFileName) ? LogLevel.Debug : LogLevel.Info; } private static void LogVersionInformation(ILogger logger) { logger.Debug("Debug logging enabled."); logger.Info( $"EverythingToolbar {Assembly.GetExecutingAssembly().GetName().Version} started. OS: {Environment.OSVersion}" ); if (ToolbarSettings.User.ForceWin10Behavior) logger.Info("Using Windows 10 behavior."); } private static void InitializeExceptionLoggers(ILogger logger) { AppDomain.CurrentDomain.FirstChanceException += (_, e) => { logger.Debug(e.Exception, "Unhandled first chance exception"); }; AppDomain.CurrentDomain.UnhandledException += (_, args) => { logger.Error((Exception)args.ExceptionObject, "Unhandled exception"); }; if (Application.Current != null) { // Not applicable for deskband Application.Current.DispatcherUnhandledException += (_, args) => { logger.Error(args.Exception, "Unhandled exception on UI thread"); }; } } private static void ConfigureLogger() { var logfile = new FileTarget("logfile") { FileName = Path.Combine(Path.GetTempPath(), "EverythingToolbar.log"), ArchiveEvery = FileArchivePeriod.Day, ArchiveNumbering = ArchiveNumberingMode.Date, MaxArchiveFiles = 3, KeepFileOpen = true, OpenFileCacheTimeout = 30, ConcurrentWrites = true, Layout = "${longdate}|${level:uppercase=true}|${logger}|${message}|${exception:format=tostring}", }; var fileRule = new LoggingRule("*", GetLogLevel(), logfile); var config = new LoggingConfiguration(); config.LoggingRules.Add(fileRule); LogFactory.Configuration = config; } public static void Initialize(string name) { ConfigureLogger(); var logger = GetLogger(name); LogVersionInformation(logger); InitializeExceptionLoggers(logger); } } } ================================================ FILE: EverythingToolbar/Helpers/Utils.cs ================================================ using System; using System.IO; using System.Runtime.InteropServices; using Microsoft.Win32; using NLog; using Wpf.Ui.Appearance; namespace EverythingToolbar.Helpers { public static class Utils { private static readonly ILogger Logger = ToolbarLogger.GetLogger(nameof(Utils)); public static string GetConfigDirectory() { return Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "EverythingToolbar" ); } public static bool GetWindowsSearchEnabledState() { using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Search"); var searchboxTaskbarMode = key?.GetValue("SearchboxTaskbarMode"); return searchboxTaskbarMode != null && (int)searchboxTaskbarMode > 0; } public static void SetWindowsSearchEnabledState(bool enabled) { using var key = Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Windows\CurrentVersion\Search", RegistryKeyPermissionCheck.ReadWriteSubTree ); try { key?.SetValue("SearchboxTaskbarMode", enabled ? 1 : 0); } catch (Exception e) { Logger.Error(e, "Failed to set taskbar search icon mode."); } } public static Version GetWindowsVersion() { if (ToolbarSettings.User.ForceWin10Behavior) return WindowsVersion.Windows10Anniversary; return Environment.OSVersion.Version; } public static class WindowsVersion { public static readonly Version Windows10 = new Version(10, 0, 10240); public static readonly Version Windows10Anniversary = new Version(10, 0, 14393); public static readonly Version Windows11 = new Version(10, 0, 22000); } public static string GetHumanReadableFileSize(long length) { var absolute = length < 0 ? -length : length; string suffix; double readable; if (absolute >= 0x1000000000000000) { suffix = "EB"; readable = length >> 50; } else if (absolute >= 0x4000000000000) { suffix = "PB"; readable = length >> 40; } else if (absolute >= 0x10000000000) { suffix = "TB"; readable = length >> 30; } else if (absolute >= 0x40000000) { suffix = "GB"; readable = length >> 20; } else if (absolute >= 0x100000) { suffix = "MB"; readable = length >> 10; } else if (absolute >= 0x400) { suffix = "KB"; readable = length; } else { return length.ToString("0 B"); } readable /= 1024; // Limit to 3 significant digits if (readable >= 100) return readable.ToString($"0 {suffix}"); if (readable >= 10) return readable.ToString($"0.# {suffix}"); else return readable.ToString($"0.## {suffix}"); } public static bool IsWindowsTransparencyEnabled() { try { using var key = Registry.CurrentUser.OpenSubKey( @"SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" ); var value = key?.GetValue("EnableTransparency"); return value is int intValue && intValue == 1; } catch { return true; } } public static bool IsLightTheme() { if (ToolbarSettings.User.ThemeOverride.ToLower() == "light") return true; if (ToolbarSettings.User.ThemeOverride.ToLower() == "dark") return false; return SystemThemeManager.GetCachedSystemTheme() == SystemTheme.Light; } private const int SpiGetclientareaanimation = 0x1042; private const int SpiSetclientareaanimation = 0x1043; private const int SpifSendchange = 0x0002; public static bool IsEffectiveAnimationsDisabled { get { if (ToolbarSettings.User.IsAnimationsDisabled) return true; return !GetSystemAnimationsEnabled(); } } public static bool GetSystemAnimationsEnabled() { SystemParametersInfo(SpiGetclientareaanimation, 0, out var enabled, 0); return enabled; } public static void SetSystemAnimationsEnabled(bool enabled) { SystemParametersInfo(SpiSetclientareaanimation, 0, enabled, SpifSendchange); } [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SystemParametersInfo(int uiAction, int uiParam, out bool pvParam, int fWinIni); [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SystemParametersInfo(int uiAction, int uiParam, bool pvParam, int fWinIni); } } ================================================ FILE: EverythingToolbar/Images/WinUIGallery/LICENSE ================================================ MIT License Copyright (c) Microsoft Corporation. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE ================================================ FILE: EverythingToolbar/ItemTemplates/Compact.xaml ================================================  ================================================ FILE: EverythingToolbar/ItemTemplates/CompactDetailed.xaml ================================================  ================================================ FILE: EverythingToolbar/ItemTemplates/Normal.xaml ================================================  ================================================ FILE: EverythingToolbar/ItemTemplates/NormalDetailed.xaml ================================================  ================================================ FILE: EverythingToolbar/Properties/Resources.Designer.cs ================================================ //------------------------------------------------------------------------------ // // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace EverythingToolbar.Properties { using System; /// /// A strongly-typed resource class, for looking up localized strings, etc. /// // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EverythingToolbar.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// /// Looks up a localized string similar to Custom actions. /// public static string AboutCustomActions { get { return ResourceManager.GetString("AboutCustomActions", resourceCulture); } } /// /// Looks up a localized string similar to Everything integration for the Windows taskbar.. /// public static string AboutDescription { get { return ResourceManager.GetString("AboutDescription", resourceCulture); } } /// /// Looks up a localized string similar to Make a donation. /// public static string AboutDonation { get { return ResourceManager.GetString("AboutDonation", resourceCulture); } } /// /// Looks up a localized string similar to Frequently Asked Questions. /// public static string AboutFAQ { get { return ResourceManager.GetString("AboutFAQ", resourceCulture); } } /// /// Looks up a localized string similar to Links. /// public static string AboutLinks { get { return ResourceManager.GetString("AboutLinks", resourceCulture); } } /// /// Looks up a localized string similar to Search settings. /// public static string AboutSearchSettings { get { return ResourceManager.GetString("AboutSearchSettings", resourceCulture); } } /// /// Looks up a localized string similar to Source Code (GitHub). /// public static string AboutSourceCode { get { return ResourceManager.GetString("AboutSourceCode", resourceCulture); } } /// /// Looks up a localized string similar to Star on GitHub. /// public static string AboutStarOnGitHub { get { return ResourceManager.GetString("AboutStarOnGitHub", resourceCulture); } } /// /// Looks up a localized string similar to User interface. /// public static string AboutUserInterface { get { return ResourceManager.GetString("AboutUserInterface", resourceCulture); } } /// /// Looks up a localized string similar to Version. /// public static string AboutVersion { get { return ResourceManager.GetString("AboutVersion", resourceCulture); } } /// /// Looks up a localized string similar to Copy. /// public static string ContextMenuCopy { get { return ResourceManager.GetString("ContextMenuCopy", resourceCulture); } } /// /// Looks up a localized string similar to Copy. /// public static string ContextMenuCopyFile { get { return ResourceManager.GetString("ContextMenuCopyFile", resourceCulture); } } /// /// Looks up a localized string similar to Copy Full Name to Clipboard. /// public static string ContextMenuCopyFullName { get { return ResourceManager.GetString("ContextMenuCopyFullName", resourceCulture); } } /// /// Looks up a localized string similar to Cut. /// public static string ContextMenuCut { get { return ResourceManager.GetString("ContextMenuCut", resourceCulture); } } /// /// Looks up a localized string similar to Open. /// public static string ContextMenuOpen { get { return ResourceManager.GetString("ContextMenuOpen", resourceCulture); } } /// /// Looks up a localized string similar to Open Path. /// public static string ContextMenuOpenPath { get { return ResourceManager.GetString("ContextMenuOpenPath", resourceCulture); } } /// /// Looks up a localized string similar to Show more options. /// public static string ContextMenuOpenWinContext { get { return ResourceManager.GetString("ContextMenuOpenWinContext", resourceCulture); } } /// /// Looks up a localized string similar to Open with.... /// public static string ContextMenuOpenWith { get { return ResourceManager.GetString("ContextMenuOpenWith", resourceCulture); } } /// /// Looks up a localized string similar to Choose app. /// public static string ContextMenuOpenWithChooseApp { get { return ResourceManager.GetString("ContextMenuOpenWithChooseApp", resourceCulture); } } /// /// Looks up a localized string similar to No actions defined. /// public static string ContextMenuOpenWithNoCustomActions { get { return ResourceManager.GetString("ContextMenuOpenWithNoCustomActions", resourceCulture); } } /// /// Looks up a localized string similar to Paste. /// public static string ContextMenuPaste { get { return ResourceManager.GetString("ContextMenuPaste", resourceCulture); } } /// /// Looks up a localized string similar to Properties. /// public static string ContextMenuProperties { get { return ResourceManager.GetString("ContextMenuProperties", resourceCulture); } } /// /// Looks up a localized string similar to Run as admin. /// public static string ContextMenuRunAsAdmin { get { return ResourceManager.GetString("ContextMenuRunAsAdmin", resourceCulture); } } /// /// Looks up a localized string similar to Show in Everything. /// public static string ContextMenuShowInEverything { get { return ResourceManager.GetString("ContextMenuShowInEverything", resourceCulture); } } /// /// Looks up a localized string similar to Automatically apply actions based on type and regular expression. /// public static string CustomActionsAutoApply { get { return ResourceManager.GetString("CustomActionsAutoApply", resourceCulture); } } /// /// Looks up a localized string similar to Command. /// public static string CustomActionsCommand { get { return ResourceManager.GetString("CustomActionsCommand", resourceCulture); } } /// /// Looks up a localized string similar to Use %file%, %filename% and %path% as placeholders in commands.. /// public static string CustomActionsHelpText { get { return ResourceManager.GetString("CustomActionsHelpText", resourceCulture); } } /// /// Looks up a localized string similar to Name. /// public static string CustomActionsName { get { return ResourceManager.GetString("CustomActionsName", resourceCulture); } } /// /// Looks up a localized string similar to Regular Expression. /// public static string CustomActionsRegularExpression { get { return ResourceManager.GetString("CustomActionsRegularExpression", resourceCulture); } } /// /// Looks up a localized string similar to Type. /// public static string CustomActionsType { get { return ResourceManager.GetString("CustomActionsType", resourceCulture); } } /// /// Looks up a localized string similar to All. /// public static string DefaultFilterAll { get { return ResourceManager.GetString("DefaultFilterAll", resourceCulture); } } /// /// Looks up a localized string similar to File. /// public static string DefaultFilterFile { get { return ResourceManager.GetString("DefaultFilterFile", resourceCulture); } } /// /// Looks up a localized string similar to Folder. /// public static string DefaultFilterFolder { get { return ResourceManager.GetString("DefaultFilterFolder", resourceCulture); } } /// /// Looks up a localized string similar to Clamp. /// public static string FocusBehaviorClamp { get { return ResourceManager.GetString("FocusBehaviorClamp", resourceCulture); } } /// /// Looks up a localized string similar to Repeat. /// public static string FocusBehaviorRepeat { get { return ResourceManager.GetString("FocusBehaviorRepeat", resourceCulture); } } /// /// Looks up a localized string similar to Repeat with search. /// public static string FocusBehaviorRepeatWithSearch { get { return ResourceManager.GetString("FocusBehaviorRepeatWithSearch", resourceCulture); } } /// /// Looks up a localized string similar to Compact. /// public static string ItemTemplateCompact { get { return ResourceManager.GetString("ItemTemplateCompact", resourceCulture); } } /// /// Looks up a localized string similar to Compact (detailed). /// public static string ItemTemplateCompactDetailed { get { return ResourceManager.GetString("ItemTemplateCompactDetailed", resourceCulture); } } /// /// Looks up a localized string similar to Normal. /// public static string ItemTemplateNormal { get { return ResourceManager.GetString("ItemTemplateNormal", resourceCulture); } } /// /// Looks up a localized string similar to Normal (detailed). /// public static string ItemTemplateNormalDetailed { get { return ResourceManager.GetString("ItemTemplateNormalDetailed", resourceCulture); } } /// /// Looks up a localized string similar to Alt. /// public static string KeyAlt { get { return ResourceManager.GetString("KeyAlt", resourceCulture); } } /// /// Looks up a localized string similar to Ctrl. /// public static string KeyCtrl { get { return ResourceManager.GetString("KeyCtrl", resourceCulture); } } /// /// Looks up a localized string similar to Shift. /// public static string KeyShift { get { return ResourceManager.GetString("KeyShift", resourceCulture); } } /// /// Looks up a localized string similar to Win. /// public static string KeyWin { get { return ResourceManager.GetString("KeyWin", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to copy the exception content to clipboard?. /// public static string MessageBoxCopyException { get { return ResourceManager.GetString("MessageBoxCopyException", resourceCulture); } } /// /// Looks up a localized string similar to A custom action name cannot be empty.. /// public static string MessageBoxCustomActionsNameEmpty { get { return ResourceManager.GetString("MessageBoxCustomActionsNameEmpty", resourceCulture); } } /// /// Looks up a localized string similar to Error. /// public static string MessageBoxErrorTitle { get { return ResourceManager.GetString("MessageBoxErrorTitle", resourceCulture); } } /// /// Looks up a localized string similar to Failed to copy file.. /// public static string MessageBoxFailedToCopyFile { get { return ResourceManager.GetString("MessageBoxFailedToCopyFile", resourceCulture); } } /// /// Looks up a localized string similar to Failed to copy path.. /// public static string MessageBoxFailedToCopyPath { get { return ResourceManager.GetString("MessageBoxFailedToCopyPath", resourceCulture); } } /// /// Looks up a localized string similar to Failed to open search result.. /// public static string MessageBoxFailedToOpen { get { return ResourceManager.GetString("MessageBoxFailedToOpen", resourceCulture); } } /// /// Looks up a localized string similar to Failed to open dialog.. /// public static string MessageBoxFailedToOpenDialog { get { return ResourceManager.GetString("MessageBoxFailedToOpenDialog", resourceCulture); } } /// /// Looks up a localized string similar to Failed to open path.. /// public static string MessageBoxFailedToOpenPath { get { return ResourceManager.GetString("MessageBoxFailedToOpenPath", resourceCulture); } } /// /// Looks up a localized string similar to Failed to register hotkey. It might be in use by another application.. /// public static string MessageBoxFailedToRegisterHotkey { get { return ResourceManager.GetString("MessageBoxFailedToRegisterHotkey", resourceCulture); } } /// /// Looks up a localized string similar to Failed to run command. /// public static string MessageBoxFailedToRunCommand { get { return ResourceManager.GetString("MessageBoxFailedToRunCommand", resourceCulture); } } /// /// Looks up a localized string similar to To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings.. /// public static string MessageBoxFastSortUnavailable { get { return ResourceManager.GetString("MessageBoxFastSortUnavailable", resourceCulture); } } /// /// Looks up a localized string similar to Fast sorting not enabled. /// public static string MessageBoxFastSortUnavailableTitle { get { return ResourceManager.GetString("MessageBoxFastSortUnavailableTitle", resourceCulture); } } /// /// Looks up a localized string similar to OK. /// public static string MessageBoxOk { get { return ResourceManager.GetString("MessageBoxOk", resourceCulture); } } /// /// Looks up a localized string similar to At least one regular expression is invalid.. /// public static string MessageBoxRegExInvalid { get { return ResourceManager.GetString("MessageBoxRegExInvalid", resourceCulture); } } /// /// Looks up a localized string similar to Please select Everything.exe.... /// public static string MessageBoxSelectEverythingExe { get { return ResourceManager.GetString("MessageBoxSelectEverythingExe", resourceCulture); } } /// /// Looks up a localized string similar to Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters.. /// public static string MessageBoxSelectFiltersCsv { get { return ResourceManager.GetString("MessageBoxSelectFiltersCsv", resourceCulture); } } /// /// Looks up a localized string similar to Filters.csv not found. /// public static string MessageBoxSelectFiltersCsvTitle { get { return ResourceManager.GetString("MessageBoxSelectFiltersCsvTitle", resourceCulture); } } /// /// Looks up a localized string similar to Unhandled exception occured. /// public static string MessageBoxUnhandledExceptionTitle { get { return ResourceManager.GetString("MessageBoxUnhandledExceptionTitle", resourceCulture); } } /// /// Looks up a localized string similar to File path. /// public static string PreviewPaneFilePath { get { return ResourceManager.GetString("PreviewPaneFilePath", resourceCulture); } } /// /// Looks up a localized string similar to Nothing selected. /// public static string PreviewPaneSelectResult { get { return ResourceManager.GetString("PreviewPaneSelectResult", resourceCulture); } } /// /// Looks up a localized string similar to Size. /// public static string PreviewPaneSize { get { return ResourceManager.GetString("PreviewPaneSize", resourceCulture); } } /// /// Looks up a localized string similar to object. /// public static string SearchResult { get { return ResourceManager.GetString("SearchResult", resourceCulture); } } /// /// Looks up a localized string similar to objects. /// public static string SearchResults { get { return ResourceManager.GetString("SearchResults", resourceCulture); } } /// /// Looks up a localized string similar to Advanced. /// public static string SettingsAdvanced { get { return ResourceManager.GetString("SettingsAdvanced", resourceCulture); } } /// /// Looks up a localized string similar to Disable UI animations for improved performance. /// public static string SettingsAnimationsHelp { get { return ResourceManager.GetString("SettingsAnimationsHelp", resourceCulture); } } /// /// Looks up a localized string similar to Appearance. /// public static string SettingsAppearance { get { return ResourceManager.GetString("SettingsAppearance", resourceCulture); } } /// /// Looks up a localized string similar to Behavior. /// public static string SettingsBehavior { get { return ResourceManager.GetString("SettingsBehavior", resourceCulture); } } /// /// Looks up a localized string similar to Check for updates automatically. /// public static string SettingsCheckForUpdates { get { return ResourceManager.GetString("SettingsCheckForUpdates", resourceCulture); } } /// /// Looks up a localized string similar to Check now. /// public static string SettingsCheckNow { get { return ResourceManager.GetString("SettingsCheckNow", resourceCulture); } } /// /// Looks up a localized string similar to Clear now. /// public static string SettingsClearHistoryNow { get { return ResourceManager.GetString("SettingsClearHistoryNow", resourceCulture); } } /// /// Looks up a localized string similar to Custom Actions. /// public static string SettingsCustomActions { get { return ResourceManager.GetString("SettingsCustomActions", resourceCulture); } } /// /// Looks up a localized string similar to Custom shortcuts. /// public static string SettingsCustomShortcuts { get { return ResourceManager.GetString("SettingsCustomShortcuts", resourceCulture); } } /// /// Looks up a localized string similar to Default instance. /// public static string SettingsDefaultInstance { get { return ResourceManager.GetString("SettingsDefaultInstance", resourceCulture); } } /// /// Looks up a localized string similar to Disable animations. /// public static string SettingsDisableAnimations { get { return ResourceManager.GetString("SettingsDisableAnimations", resourceCulture); } } /// /// Looks up a localized string similar to Require double-click to open results. /// public static string SettingsDoubleClickHelp { get { return ResourceManager.GetString("SettingsDoubleClickHelp", resourceCulture); } } /// /// Looks up a localized string similar to Double-click to open. /// public static string SettingsDoubleClickToOpen { get { return ResourceManager.GetString("SettingsDoubleClickToOpen", resourceCulture); } } /// /// Looks up a localized string similar to Download latest version. /// public static string SettingsDownloadLatestVersion { get { return ResourceManager.GetString("SettingsDownloadLatestVersion", resourceCulture); } } /// /// Looks up a localized string similar to Enable search history. /// public static string SettingsEnableHistory { get { return ResourceManager.GetString("SettingsEnableHistory", resourceCulture); } } /// /// Looks up a localized string similar to Enable system tray icon. /// public static string SettingsEnableSystemTrayIcon { get { return ResourceManager.GetString("SettingsEnableSystemTrayIcon", resourceCulture); } } /// /// Looks up a localized string similar to Enables the system tray icon to be able to quit EverythingToolbar easily. /// public static string SettingsEnableSystemTrayIconHelp { get { return ResourceManager.GetString("SettingsEnableSystemTrayIconHelp", resourceCulture); } } /// /// Looks up a localized string similar to Synchronize Everything's custom filters. /// public static string SettingsEverythingFiltersHelp { get { return ResourceManager.GetString("SettingsEverythingFiltersHelp", resourceCulture); } } /// /// Looks up a localized string similar to Filter order. /// public static string SettingsFilterOrder { get { return ResourceManager.GetString("SettingsFilterOrder", resourceCulture); } } /// /// Looks up a localized string similar to Filters. /// public static string SettingsFilters { get { return ResourceManager.GetString("SettingsFilters", resourceCulture); } } /// /// Looks up a localized string similar to Force Windows 10 styles. /// public static string SettingsForceWin10Styles { get { return ResourceManager.GetString("SettingsForceWin10Styles", resourceCulture); } } /// /// Looks up a localized string similar to Uses Windows 10 styles to match certain legacy taskbar modifications. /// public static string SettingsForceWin10StylesHelp { get { return ResourceManager.GetString("SettingsForceWin10StylesHelp", resourceCulture); } } /// /// Looks up a localized string similar to Hide empty search. /// public static string SettingsHideEmptyResults { get { return ResourceManager.GetString("SettingsHideEmptyResults", resourceCulture); } } /// /// Looks up a localized string similar to Hide results when search term is empty. /// public static string SettingsHideEmptyResultsHelp { get { return ResourceManager.GetString("SettingsHideEmptyResultsHelp", resourceCulture); } } /// /// Looks up a localized string similar to Hide Windows search icon. /// public static string SettingsHideWindowsSearchIcon { get { return ResourceManager.GetString("SettingsHideWindowsSearchIcon", resourceCulture); } } /// /// Looks up a localized string similar to Hides the original Windows search icon from the taskbar. /// public static string SettingsHideWindowsSearchIconHelp { get { return ResourceManager.GetString("SettingsHideWindowsSearchIconHelp", resourceCulture); } } /// /// Looks up a localized string similar to History. /// public static string SettingsHistory { get { return ResourceManager.GetString("SettingsHistory", resourceCulture); } } /// /// Looks up a localized string similar to Remember previous search terms for quick access. /// public static string SettingsHistoryHelp { get { return ResourceManager.GetString("SettingsHistoryHelp", resourceCulture); } } /// /// Looks up a localized string similar to Home. /// public static string SettingsHome { get { return ResourceManager.GetString("SettingsHome", resourceCulture); } } /// /// Looks up a localized string similar to Home/End keys navigate results. /// public static string SettingsHomeEndNavigateResults { get { return ResourceManager.GetString("SettingsHomeEndNavigateResults", resourceCulture); } } /// /// Looks up a localized string similar to Home/End keys will navigate search results instead of moving the cursor. /// public static string SettingsHomeEndNavigateResultsHelp { get { return ResourceManager.GetString("SettingsHomeEndNavigateResultsHelp", resourceCulture); } } /// /// Looks up a localized string similar to Everything instance name. /// public static string SettingsInstanceName { get { return ResourceManager.GetString("SettingsInstanceName", resourceCulture); } } /// /// Looks up a localized string similar to Set the name of the Everything instance to use. /// public static string SettingsInstanceNameHelp { get { return ResourceManager.GetString("SettingsInstanceNameHelp", resourceCulture); } } /// /// Looks up a localized string similar to You are already using the latest version.. /// public static string SettingsLatestVersionMessage { get { return ResourceManager.GetString("SettingsLatestVersionMessage", resourceCulture); } } /// /// Looks up a localized string similar to Result list focus. /// public static string SettingsListFocusBehavior { get { return ResourceManager.GetString("SettingsListFocusBehavior", resourceCulture); } } /// /// Looks up a localized string similar to Controls how the focus behaves when navigating the result list. /// public static string SettingsListFocusBehaviorHelp { get { return ResourceManager.GetString("SettingsListFocusBehaviorHelp", resourceCulture); } } /// /// Looks up a localized string similar to Match Case. /// public static string SettingsMatchCase { get { return ResourceManager.GetString("SettingsMatchCase", resourceCulture); } } /// /// Looks up a localized string similar to Match Path. /// public static string SettingsMatchPath { get { return ResourceManager.GetString("SettingsMatchPath", resourceCulture); } } /// /// Looks up a localized string similar to Match Whole Word. /// public static string SettingsMatchWholeWord { get { return ResourceManager.GetString("SettingsMatchWholeWord", resourceCulture); } } /// /// Looks up a localized string similar to Number of filter tabs. /// public static string SettingsMaxTabItems { get { return ResourceManager.GetString("SettingsMaxTabItems", resourceCulture); } } /// /// Looks up a localized string similar to Controls the number of visible filter tabs. /// public static string SettingsMaxTabItemsHelp { get { return ResourceManager.GetString("SettingsMaxTabItemsHelp", resourceCulture); } } /// /// Looks up a localized string similar to Named Instance. /// public static string SettingsNamedInstance { get { return ResourceManager.GetString("SettingsNamedInstance", resourceCulture); } } /// /// Looks up a localized string similar to Open search window. /// public static string SettingsOpenSearchWindow { get { return ResourceManager.GetString("SettingsOpenSearchWindow", resourceCulture); } } /// /// Looks up a localized string similar to Other. /// public static string SettingsOther { get { return ResourceManager.GetString("SettingsOther", resourceCulture); } } /// /// Looks up a localized string similar to Other shortcuts. /// public static string SettingsOtherShortcuts { get { return ResourceManager.GetString("SettingsOtherShortcuts", resourceCulture); } } /// /// Looks up a localized string similar to Preferences. /// public static string SettingsPreferences { get { return ResourceManager.GetString("SettingsPreferences", resourceCulture); } } /// /// Looks up a localized string similar to Show preview pane. /// public static string SettingsPreviewPaneEnabled { get { return ResourceManager.GetString("SettingsPreviewPaneEnabled", resourceCulture); } } /// /// Looks up a localized string similar to Show a Start menu style side pane for the selected result. /// public static string SettingsPreviewPaneHelp { get { return ResourceManager.GetString("SettingsPreviewPaneHelp", resourceCulture); } } /// /// Looks up a localized string similar to Show quick toggle buttons for search options in the search bar. /// public static string SettingsQuickTogglesHelp { get { return ResourceManager.GetString("SettingsQuickTogglesHelp", resourceCulture); } } /// /// Looks up a localized string similar to Regular Expressions. /// public static string SettingsRegularExpressions { get { return ResourceManager.GetString("SettingsRegularExpressions", resourceCulture); } } /// /// Looks up a localized string similar to Remember filter. /// public static string SettingsRememberFilter { get { return ResourceManager.GetString("SettingsRememberFilter", resourceCulture); } } /// /// Looks up a localized string similar to Remember the most recently used filter for future searches. /// public static string SettingsRememberFilterHelp { get { return ResourceManager.GetString("SettingsRememberFilterHelp", resourceCulture); } } /// /// Looks up a localized string similar to Replace the default Windows Start menu search with EverythingToolbar. /// public static string SettingsReplaceStartMenuHelp { get { return ResourceManager.GetString("SettingsReplaceStartMenuHelp", resourceCulture); } } /// /// Looks up a localized string similar to Replace start menu search (experimental). /// public static string SettingsReplaceStartMenuSearch { get { return ResourceManager.GetString("SettingsReplaceStartMenuSearch", resourceCulture); } } /// /// Looks up a localized string similar to Report a problem. /// public static string SettingsReportProblem { get { return ResourceManager.GetString("SettingsReportProblem", resourceCulture); } } /// /// Looks up a localized string similar to Display the total number of search results. /// public static string SettingsResultsCountHelp { get { return ResourceManager.GetString("SettingsResultsCountHelp", resourceCulture); } } /// /// Looks up a localized string similar to Search. /// public static string SettingsSearch { get { return ResourceManager.GetString("SettingsSearch", resourceCulture); } } /// /// Looks up a localized string similar to Search as you type. /// public static string SettingsSearchAsYouType { get { return ResourceManager.GetString("SettingsSearchAsYouType", resourceCulture); } } /// /// Looks up a localized string similar to Start searching as you type, without pressing Enter. /// public static string SettingsSearchAsYouTypeHelp { get { return ResourceManager.GetString("SettingsSearchAsYouTypeHelp", resourceCulture); } } /// /// Looks up a localized string similar to Search icon. /// public static string SettingsSearchIcon { get { return ResourceManager.GetString("SettingsSearchIcon", resourceCulture); } } /// /// Looks up a localized string similar to Changes the style of the taskbar icon (requires explorer restart). /// public static string SettingsSearchIconHelp { get { return ResourceManager.GetString("SettingsSearchIconHelp", resourceCulture); } } /// /// Looks up a localized string similar to Select first result. /// public static string SettingsSelectFirstResult { get { return ResourceManager.GetString("SettingsSelectFirstResult", resourceCulture); } } /// /// Looks up a localized string similar to Automatically select the first result while keeping the search bar focused. /// public static string SettingsSelectFirstResultHelp { get { return ResourceManager.GetString("SettingsSelectFirstResultHelp", resourceCulture); } } /// /// Looks up a localized string similar to Shortcuts. /// public static string SettingsShortcuts { get { return ResourceManager.GetString("SettingsShortcuts", resourceCulture); } } /// /// Looks up a localized string similar to Show quick toggles. /// public static string SettingsShowQuickToggles { get { return ResourceManager.GetString("SettingsShowQuickToggles", resourceCulture); } } /// /// Looks up a localized string similar to Show results count. /// public static string SettingsShowResultsCount { get { return ResourceManager.GetString("SettingsShowResultsCount", resourceCulture); } } /// /// Looks up a localized string similar to Sort By. /// public static string SettingsSortBy { get { return ResourceManager.GetString("SettingsSortBy", resourceCulture); } } /// /// Looks up a localized string similar to Taskbar integration. /// public static string SettingsTaskbarIntegration { get { return ResourceManager.GetString("SettingsTaskbarIntegration", resourceCulture); } } /// /// Looks up a localized string similar to Enable thumbnails. /// public static string SettingsThumbnailsEnabled { get { return ResourceManager.GetString("SettingsThumbnailsEnabled", resourceCulture); } } /// /// Looks up a localized string similar to Show thumbnails for image files. /// public static string SettingsThumbnailsHelp { get { return ResourceManager.GetString("SettingsThumbnailsHelp", resourceCulture); } } /// /// Looks up a localized string similar to Updates. /// public static string SettingsUpdates { get { return ResourceManager.GetString("SettingsUpdates", resourceCulture); } } /// /// Looks up a localized string similar to Notify when a new version is available. /// public static string SettingsUpdatesHelp { get { return ResourceManager.GetString("SettingsUpdatesHelp", resourceCulture); } } /// /// Looks up a localized string similar to Use Everything filters. /// public static string SettingsUseEverythingFilters { get { return ResourceManager.GetString("SettingsUseEverythingFilters", resourceCulture); } } /// /// Looks up a localized string similar to User Interface. /// public static string SettingsUserInterface { get { return ResourceManager.GetString("SettingsUserInterface", resourceCulture); } } /// /// Looks up a localized string similar to View. /// public static string SettingsView { get { return ResourceManager.GetString("SettingsView", resourceCulture); } } /// /// Looks up a localized string similar to Choose the layout for search results. /// public static string SettingsViewLayoutHelp { get { return ResourceManager.GetString("SettingsViewLayoutHelp", resourceCulture); } } /// /// Looks up a localized string similar to Language. /// public static string SettingsUILanguage { get { return ResourceManager.GetString("SettingsUILanguage", resourceCulture); } } /// /// Looks up a localized string similar to Choose the UI language. Restart the application to apply changes.. /// public static string SettingsUILanguageHelp { get { return ResourceManager.GetString("SettingsUILanguageHelp", resourceCulture); } } /// /// Looks up a localized string similar to Copy full path to clipboard. /// public static string ShortcutCopyFullPath { get { return ResourceManager.GetString("ShortcutCopyFullPath", resourceCulture); } } /// /// Looks up a localized string similar to Cycle through filters. /// public static string ShortcutCycleFilters { get { return ResourceManager.GetString("ShortcutCycleFilters", resourceCulture); } } /// /// Looks up a localized string similar to File properties. /// public static string ShortcutFileProperties { get { return ResourceManager.GetString("ShortcutFileProperties", resourceCulture); } } /// /// Looks up a localized string similar to Navigate search history (if enabled). /// public static string ShortcutNavigateHistory { get { return ResourceManager.GetString("ShortcutNavigateHistory", resourceCulture); } } /// /// Looks up a localized string similar to Navigate search results. /// public static string ShortcutNavigateResults { get { return ResourceManager.GetString("ShortcutNavigateResults", resourceCulture); } } /// /// Looks up a localized string similar to Open. /// public static string ShortcutOpen { get { return ResourceManager.GetString("ShortcutOpen", resourceCulture); } } /// /// Looks up a localized string similar to Open in Everything. /// public static string ShortcutOpenInEverything { get { return ResourceManager.GetString("ShortcutOpenInEverything", resourceCulture); } } /// /// Looks up a localized string similar to Open path. /// public static string ShortcutOpenPath { get { return ResourceManager.GetString("ShortcutOpenPath", resourceCulture); } } /// /// Looks up a localized string similar to Open system context menu. /// public static string ShortcutOpenSystemContextMenu { get { return ResourceManager.GetString("ShortcutOpenSystemContextMenu", resourceCulture); } } /// /// Looks up a localized string similar to Preview file in QuickLook. /// public static string ShortcutPreviewQuickLook { get { return ResourceManager.GetString("ShortcutPreviewQuickLook", resourceCulture); } } /// /// Looks up a localized string similar to Run as admin. /// public static string ShortcutRunAsAdmin { get { return ResourceManager.GetString("ShortcutRunAsAdmin", resourceCulture); } } /// /// Looks up a localized string similar to Select filter. /// public static string ShortcutSelectFilter { get { return ResourceManager.GetString("ShortcutSelectFilter", resourceCulture); } } /// /// Looks up a localized string similar to Ascending. /// public static string SortAscending { get { return ResourceManager.GetString("SortAscending", resourceCulture); } } /// /// Looks up a localized string similar to Attributes. /// public static string SortByAttributes { get { return ResourceManager.GetString("SortByAttributes", resourceCulture); } } /// /// Looks up a localized string similar to Date accessed. /// public static string SortByDateAccessed { get { return ResourceManager.GetString("SortByDateAccessed", resourceCulture); } } /// /// Looks up a localized string similar to Date created. /// public static string SortByDateCreated { get { return ResourceManager.GetString("SortByDateCreated", resourceCulture); } } /// /// Looks up a localized string similar to Date modified. /// public static string SortByDateModified { get { return ResourceManager.GetString("SortByDateModified", resourceCulture); } } /// /// Looks up a localized string similar to Date recently changed. /// public static string SortByDateRecentlyChanged { get { return ResourceManager.GetString("SortByDateRecentlyChanged", resourceCulture); } } /// /// Looks up a localized string similar to Date run. /// public static string SortByDateRun { get { return ResourceManager.GetString("SortByDateRun", resourceCulture); } } /// /// Looks up a localized string similar to Extension. /// public static string SortByExtension { get { return ResourceManager.GetString("SortByExtension", resourceCulture); } } /// /// Looks up a localized string similar to File list filename. /// public static string SortByFileListFilename { get { return ResourceManager.GetString("SortByFileListFilename", resourceCulture); } } /// /// Looks up a localized string similar to Name. /// public static string SortByName { get { return ResourceManager.GetString("SortByName", resourceCulture); } } /// /// Looks up a localized string similar to Path. /// public static string SortByPath { get { return ResourceManager.GetString("SortByPath", resourceCulture); } } /// /// Looks up a localized string similar to Run count. /// public static string SortByRunCount { get { return ResourceManager.GetString("SortByRunCount", resourceCulture); } } /// /// Looks up a localized string similar to Size. /// public static string SortBySize { get { return ResourceManager.GetString("SortBySize", resourceCulture); } } /// /// Looks up a localized string similar to Type name. /// public static string SortByTypeName { get { return ResourceManager.GetString("SortByTypeName", resourceCulture); } } /// /// Looks up a localized string similar to Descending. /// public static string SortDescending { get { return ResourceManager.GetString("SortDescending", resourceCulture); } } /// /// Looks up a localized string similar to Search with Everything. /// public static string TextBoxWatermark { get { return ResourceManager.GetString("TextBoxWatermark", resourceCulture); } } /// /// Looks up a localized string similar to Download. /// public static string UpdateBannerDownload { get { return ResourceManager.GetString("UpdateBannerDownload", resourceCulture); } } /// /// Looks up a localized string similar to Skip. /// public static string UpdateBannerSkip { get { return ResourceManager.GetString("UpdateBannerSkip", resourceCulture); } } /// /// Looks up a localized string similar to Update available:. /// public static string UpdateBannerText { get { return ResourceManager.GetString("UpdateBannerText", resourceCulture); } } /// /// Looks up a localized string similar to Dismiss. /// public static string UpdateSuccessfulBannerDismiss { get { return ResourceManager.GetString("UpdateSuccessfulBannerDismiss", resourceCulture); } } /// /// Looks up a localized string similar to Donate. /// public static string UpdateSuccessfulBannerDonate { get { return ResourceManager.GetString("UpdateSuccessfulBannerDonate", resourceCulture); } } /// /// Looks up a localized string similar to EverythingToolbar {version} was updated successfully!. /// public static string UpdateSuccessfulBannerHeader { get { return ResourceManager.GetString("UpdateSuccessfulBannerHeader", resourceCulture); } } /// /// Looks up a localized string similar to If it makes your life easier, consider donating to support future updates.. /// public static string UpdateSuccessfulBannerText { get { return ResourceManager.GetString("UpdateSuccessfulBannerText", resourceCulture); } } /// /// Looks up a localized string similar to Audio. /// public static string UserFilterAudio { get { return ResourceManager.GetString("UserFilterAudio", resourceCulture); } } /// /// Looks up a localized string similar to Compressed. /// public static string UserFilterCompressed { get { return ResourceManager.GetString("UserFilterCompressed", resourceCulture); } } /// /// Looks up a localized string similar to Document. /// public static string UserFilterDocument { get { return ResourceManager.GetString("UserFilterDocument", resourceCulture); } } /// /// Looks up a localized string similar to Executable. /// public static string UserFilterExecutable { get { return ResourceManager.GetString("UserFilterExecutable", resourceCulture); } } /// /// Looks up a localized string similar to Picture. /// public static string UserFilterPicture { get { return ResourceManager.GetString("UserFilterPicture", resourceCulture); } } /// /// Looks up a localized string similar to More. /// public static string UserFilterPlaceholder { get { return ResourceManager.GetString("UserFilterPlaceholder", resourceCulture); } } /// /// Looks up a localized string similar to Video. /// public static string UserFilterVideo { get { return ResourceManager.GetString("UserFilterVideo", resourceCulture); } } /// /// Looks up a localized string similar to Use System Language. /// public static string SettingsUseSystemLanguage { get { return ResourceManager.GetString("SettingsUseSystemLanguage", resourceCulture); } } /// /// Looks up a localized string similar to Restart required. /// public static string MessageBoxRestartTitle { get { return ResourceManager.GetString("MessageBoxRestartTitle", resourceCulture); } } /// /// Looks up a localized string similar to A restart is required for the language changes to take effect. Do you want to restart now?. /// public static string MessageBoxRestartMessage { get { return ResourceManager.GetString("MessageBoxRestartMessage", resourceCulture); } } } } ================================================ FILE: EverythingToolbar/Properties/Resources.af.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.af.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.ar.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.ar.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 الإصدار نسخ نسخ ملف إنسخ الاسم الكامل إلى الحافظة قص إفتح فتح المسار إظهار خيارات أكثر فتح باستخدام... اختر تطبيق لصق خصائص تشغيل كمسؤول اعرض في Everything الكل ملف مجلد مضغوط مضغوط (مفصل) عادي عادي (مفصل) Alt Ctrl Shift Win هل ترغب في نسخ المحتوى المُستثنى إلى الحافظة؟ حدث خطأ فشل فى نسخ الملف. فشل في نسخ المسار. فشل في فتح نتيجة البحث. فشل فتح مربع الحوار. فشل فتح المسار. فشل في تسجيل مفتاح الاختصار. قد يكون قيد الاستخدام من قبل تطبيق آخر. فشل في تشغيل الأمر لاستخدام هذا الفرز، يجب تمكين "الفرز السريع" في الإعدادات. الفرز السريع غير مفعل عبارة عادية واحدة على الأقل غير صحيحة. الرجاء تحديد Everything.exe... الرجاء تحديد ملف "Filters.csv". افتراضيًا يمكن العثور عليه في "%APPDATA%\Everything". قد يختلف موقع هذا الملف وفقاً لخياراتك الخاصة عند التثبيت. إذا كان الملف غير موجود، فهذا يعني أنك لم تقم بإجراء تغييرات على الفلاتر الافتراضية. لم يتم العثور على الملف Filters.csv حدث استثناء غير معالج أمر الإسم تعبير عادي نوع استخدم %file%و %filename% و %path% كعناصر النائبة في الأوامر. بحث باستخدام Everything عنصر العناصر تعطيل المؤثرات تمكين تاريخ البحث إخفاء البحث الفارغ مراعاة حجم الحرف مطابقة المسار طابق كل الكلمات الإعدادات تعبيرات نمطية تذكر التصفية استبدال البحث في قائمة إبداء الخاصه Windows (تجريبي) عرض التبديلات سريعة عرض عدد النتائج Show preview pane الفرز حسب تمكين الصور المصغرة استخدام فلاتر Everything عرض الخصائص تاريخ الوصول تاريخ الإنشاء تاريخ التعديل تاريخ آخر تغيير تاريخ التشغيل الإضافات اسم مِلَفّ قائمة الملفات الاسم المسار عدد التشغيلات الحجم اسم النوع الصوت مضغوط مستند قابل للتنفيذ صورة أكثر فيديو التحديث متوفر: تخطي تحميل التحقق تلقائياً من التحديثات تحديد النتيجة الأولى Home/End keys navigate results النقر المزدوج للفتح تنازليًا تصاعديًا البحث خلال الكتابة User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar موافق No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.ca.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.ca.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.cs.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.cs.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Verze Kopírovat Kopírovat Kopírovat název do schránky Vyjmout Otevřít Otevřít cestu Zobrazit více možností Otevřít v aplikaci... Zvolit aplikaci Vložit Vlastnosti Spustit jako správce Zobrazit v Everything Vše Soubor Složka Kompaktní Kompaktní (podrobný) Normální Normální (podrobný) Alt Ctrl Shift Win Chcete zkopírovat obsah chyby do schránky? Chyba Kopírování souboru se nezdařilo. Kopírování cesty se nezdařilo. Nepodařilo se otevřít výsledek vyhledávání. Otevření dialogového okna se nezdařilo. Otevření cesty se nezdařilo. Nepodařilo se zaregistrovat klávesovou zkratku. Může být používána jinou aplikací. Příkaz se nepodařilo spustit Chcete-li použít tento způsob třídění, musí mít povolené rychlé třídění. Může být povoleno v nastavení Everything. Rychlé třídění není povoleno Alespoň jeden regulární výraz je neplatný. Prosím vyberte Everything.exe... Vyberte prosím soubor Filters.csv. Ve výchozím nastavení jej lze nalézt v %APPDATA%\Everything. Jeho umístění se může lišit v závislosti na vaší instalaci. Pokud pro vás soubor neexistuje, znamená to, že jste neprovedli žádné změny ve výchozích filtrech Everything. Filters.csv nebyl nalezen Došlo k neošetřené výjimce Příkaz Název Regulární výraz Typ Použijte %file%, %filename% a %path% jako zástupné symboly v příkazech. Hledat pomocí Everything objekt objekty Zakázat animace Povolit historii vyhledávání Skrýt prázdné vyhledávání Rozlišovat malá a velká písmena Rozlišovat cestu Pouze celá slova Předvolby Regulární výrazy Zapamatovat si poslední filtr Nahradit vyhledávání Start (experimentální) Zobrazit rychlé možnosti Zobrazit počet výsledků Show preview pane Seřadit dle Povolit náhledy Použít Everything filtry Zobrazit Atributy Datum otevření Datum vytvoření Datum změny Datum poslední změny Datum spuštění Přípona Název souboru Název Cesta Počet spouštění Velikost Název typu Audio Komprimované Dokumenty Spustitelné Obrázky Více Videa Je dostupná aktualizace: Přeskočit Stáhnout Kontrolovat aktualizace automaticky Vybrat první výsledek Home/End keys navigate results Klepnout dvakrát pro otevření Sestupně Vzestupně Hledat při psaní Uživatelské rozhraní Vzhled Ostatní Klávesové zkratky Vlastní zkratky Další klávesové zkratky Otevřít vyhledávací okno Navigovat výsledky hledání Navigovat historii vyhledávání (je-li povolená) Otevřít Otevřít cestu Zobrazit v Everything Spustit jako správce Vlastnosti souboru Zkopírovat celou cestu Přepínání mezi filtry Vybrat filtr Náhled souboru v QuickLook Hlavní stránka Vyhledávání Vlastní akce Pokročilé Nahlásit problém Chování Historie Filtry Vymazat Aktualizace Zkontrolovat nyní Stáhnout nejnovější verzi Již používáte nejnovější verzi. Název instance Název instance Everything Nastavte název instance Everything, kterou chcete použít Výchozí instance Integrace Everything do hlavního panelu Windows. Nastavení vyhledávání Uživatelské rozhraní Vlastní akce Odkazy Často kladené otázky (FAQ) Zdrojový kód (GitHub) Přidat hvězdičku na GitHubu Přispět Vyberte rozložení výsledků vyhledávání Zobrazovat náhledy obrázků Zobrazovat celkový počet výsledků Zobrazovat tlačítka pro možnosti vyhledávání v vyhledávacím řádku Show a Start menu style side pane for the selected result File path Nothing selected Size Zakázat animace UI pro zlepšení výkonu Skrýt výsledky, pokud je hledaný výraz prázdný Začne vyhledávat při tom co píšete, bez stisknutí Enter Automaticky vybrat první výsledek při zachování zaměření vyhledávacího panelu Home/End keys will navigate search results instead of moving the cursor Vyžadovat dvojklik pro otevření výsledků Zapamatovat si předchozí hledané výrazy pro rychlý přístup Synchronizovat vlastní filtry Everything Pamatovat si naposledy použitý filtr pro budoucí hledání Upozornit, když je dostupná nová verze Nahradit výchozí vyhledávač ve Windows Start menu s EverythingToolbar OK Nebyly definovány žádné akce Název vlastní akce nesmí být prázdný. Automaticky aplikovat akce na základě typu a regulárního výrazu Integrace s hlavním panelem Skrýt ikonu vyhledávání Windows Skryje původní ikonu hledání Windows z hlavního panelu Zobrazovat ikonu v systémové liště Zobrazuje ikonu v systémové liště pro jednoduché ukončení EverythingToolbar Vyhledávací ikona Změní styl ikony na hlavním panelu (vyžaduje restartování explorer.exe) Řazení filtrů Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.da.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.da.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.de.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.de.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Kopieren Kopieren Pfad mit Namen kopieren Ausschneiden Öffnen Pfad öffnen Weitere Optionen anzeigen Öffnen mit... Andere App auswählen Einfügen Eigenschaften Als Administrator ausführen In Everything anzeigen Alle Dateien Ordner Kompakt Kompakt (detailliert) Normal Normal (detailliert) Alt Strg Shift Win Möchten Sie den Ausnahmentext in die Zwischenablage kopieren? Fehler Das Kopieren der Datei ist fehlgeschlagen. Das Kopieren des Pfades ist fehlgeschlagen. Das Öffnen des Suchergebnisses ist fehlgeschlagen. Das Öffnen des Dialogfensters ist fehlgeschlagen. Das Öffnen des Pfades ist fehlgeschlagen. Das Tastenkürzel konnte nicht registriert werden. Möglicherweise wird es bereits von einer anderen Anwendung verwendet. Ausführen des Befehls ist fehlgeschlagen. Schnelle Sortierung ist für diese Sortiermethode nicht aktiviert. Bitte aktivieren Sie sie in den Everything-Einstellungen, um diese Sortiermethode verwenden zu können. Schnelle Sortierung nicht verfügbar Mindestens ein regulärer Ausdruck ist nicht gültig. Everything.exe wählen... Bitte wählen Sie die Filters.csv-Datei aus. Standardmäßig kann sie in %APPDATA%\Everything gefunden werden. Je nach Ihrer Installation kann dieser Pfad abweichen. Falls noch keine Änderungen an den Standardfiltern in Everything vorgenommen wurden, existiert diese Datei nicht. Filters.csv nicht gefunden Unbehandelte Ausnahme eingetreten Befehl Name Regulärer Ausdruck Typ Nutzen Sie %file%, %filename% und %path% als Platzhalter für Befehle. Suchen mit Everything Eintrag Einträge Animationen deaktivieren Suchverlauf aktivieren Leere Suche ausblenden Groß- und Kleinschreibung beachten Pfad beachten Ganzes Wort beachten Einstellungen RegEx aktivieren Filtereinstellung merken Startmenüsuche ersetzen (experimentell) Suchoptionen anzeigen Ergebnisanzahl anzeigen Show preview pane Sortieren nach Miniaturansicht aktivieren Everything-Filter verwenden Ansicht Attribute Letzter Zugriff am Erstellt am Geändert am Kürzlich geändert Ausführungsdatum Erweiterung Name der Dateiliste Name Pfad Anzahl der Ausführungen Größe Typ Audio Archive Dokumente Ausführbare Dateien Bilder Mehr Videos Update verfügbar: Überspringen Herunterladen Automatisch nach Updates suchen Erstes Ergebnis auswählen Home/End-Tasten navigieren Ergebnisse Doppelklick zum Öffnen Absteigend Aufsteigend Suche bereits bei Eingabe starten Benutzeroberfläche Erscheinungsbild Sonstiges Tastaturkürzel Benutzerdefinierte Tastaturkürzel Andere Tastaturkürzel Suchfenster öffnen Suchergebnisse navigieren Suchverlauf navigieren (falls aktiviert) Öffnen Pfad öffnen In Everything anzeigen Als Administrator ausführen Dateieigenschaften Pfad mit Namen kopieren Filter wechseln Filter auswählen Datei in QuickLook anzeigen Startseite Suche Benutzerdefinierte Aktionen Fortgeschritten Ein Problem melden Verhaltensweise Suchverlauf Filter Jetzt löschen Updates Jetzt prüfen Neueste Version herunterladen Sie verwenden bereits die aktuellste Version. Instanzname Name der Everything-Instanz Legt den Namen der zu verwendenden Everything-Instanz fest Standardinstanz Everything-Integration für die Windows Taskleiste. Sucheinstellungen Benutzeroberfläche Benutzerdefinierte Aktionen Links Häufig gestellte Fragen Quellcode (GitHub) Einen Stern auf GitHub geben Spenden Legt die Darstellungsweise von Suchergebnissen fest Vorschaubilder für Bilddateien anzeigen Gesamtanzahl der Suchergebnisse anzeigen Schnellschalter für Suchoptionen in der Suchleiste anzeigen Show a Start menu style side pane for the selected result File path Nothing selected Size UI-Animationen für verbesserte Leistung deaktivieren Ergebnisse ausblenden, wenn der Suchbegriff leer ist Bereits bei der Eingabe suchen, ohne Enter zu drücken Wählt das erste Ergebnis aus, während die Suchleiste aktiv bleibt Home/End-Tasten navigieren die Suchergebnisse statt den Cursor zu bewegen Erfordert einen Doppelklick zum Öffnen von Ergebnissen Vorherige Suchbegriffe für den schnellen Zugriff merken Benutzerdefinierte Filter aus Everything synchronisieren Den zuletzt verwendeten Filter für zukünftige Suchen merken Benachrichtigen, wenn eine neue Version verfügbar ist Ersetzt die standardmäßige Startmenüsuche durch EverythingToolbar OK Keine Aktionen definiert Ein Aktionsname darf nicht leer sein. Aktionen basierend auf Typ und regulärem Ausdruck automatisch anwenden Taskleisten-Integration Windows-Suchsymbol ausblenden Versteckt das ursprüngliche Windows-Suchsymbol in der Taskleiste Infobereichsymbol aktivieren Aktiviert das Symbol im Infobereich um die EverythingToolbar zu beenden Suchsymbol Ändert den Stil des Taskleisten-Symbols (erfordert einen Neustart des Explorers) Filterreihenfolge Anzahl der Filtertabs Steuert die Anzahl der sichtbaren Filtertabs Windows 10-Styles erzwingen Verwendet Windows 10-Styles, um gewissen Taskleistenmodifikationen besser zu entsprechen EverythingToolbar {version} wurde erfolgreich aktualisiert! Falls Sie Freude an der neuen Version haben, unterstützen Sie gerne die weitere Entwicklung. Spenden Schließen Systemkontextmenü öffnen Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.el.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.el.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Έκδοση Αντιγραφή Αντιγραφή Αντιγραφή πλήρους ονόματος στο πρόχειρο Αποκοπή Άνοιγμα Άνοιγμα Διαδρομής Περισσότερες Επιλογές Άνοιγμα με... Επιλέξτε εφαρμογή Επικόλληση Ιδιότητες Εκτέλεση ως διαχειριστής Εμφάνιση στο Everything Όλα Αρχείο Φάκελος Συμπαγές Συμπαγές (λεπτομερές) Κανονική Κανονικό (λεπτομερές) Alt Ctrl Shift Win Θέλετε να αντιγράψετε το περιεχόμενο της εξαίρεσης στο πρόχειρο; Σφάλμα Η αντιγραφή αρχείου απέτυχε. Αποτυχία αντιγραφής διαδρομής. Αποτυχία ανοίγματος του αποτελέσματος αναζήτησης. Αποτυχία ανοίγματος διαλόγου. Αποτυχία ανοίγματος διαδρομής. Αποτυχία καταχώρησης συντόμευσης. Μπορεί να είναι σε χρήση από άλλη εφαρμογή. Αποτυχία εκτέλεσης της εντολής Για να χρησιμοποιηθεί αυτή η μέθοδος ταξινόμησης, πρέπει να έχετε ενεργοποιημένη τη γρήγορη ταξινόμηση. Μπορεί να ενεργοποιηθεί στις ρυθμίσεις του Everything. Η γρήγορη ταξινόμηση δεν είναι ενεργοποιημένη Τουλάχιστον μία κανονική έκφραση δεν είναι έγκυρη. Παρακαλώ επιλέξτε το Everything.exe... Παρακαλώ επιλέξτε το αρχείο Filters.csv. Εξ ορισμού μπορεί να βρεθεί στο %APPDATA%\Everything. Η τοποθεσία του μπορεί να είναι διαφορετική ανάλογα με την εγκατάστασή σας. Εάν το αρχείο δεν υπάρχει για εσάς αυτό σημαίνει ότι δεν εκτελέσατε καμία αλλαγή στα προεπιλεγμένα φίλτρα του Everything. Το Filters.csv δεν βρέθηκε Παρουσιάστηκε εξαίρεση χωρίς χειρισμό Εντολή Όνομα Κανονική Έκφραση Τύπος Χρησιμοποίησε %file%, %filename% και %path% ως σύμβολα κράτησης θέσης στις εντολές. Αναζήτηση με το Everything αντικείμενο αντικείμενα Απενεργοποίηση εφέ κίνησης Ενεργοποίηση ιστορικού αναζήτησης Απόκρυψη κενής αναζήτησης Ταίριασμα Πεζών/Κεφαλαίων Ταίριασμα Διαδρομής Ταίριασμα Ολόκληρης Λέξης Προτιμήσεις Κανονικές Εκφράσεις Αποθηκευση φιλτρου Αντικατάσταση αναζήτησης μενού έναρξης (πειραματικό) Εμφάνιση γρήγορων ρυθμίσεων Εμφάνιση πλήθους αποτελεσμάτων Show preview pane Ταξινόμηση Κατά Ενεργοποίηση επισκόπησης Χρήση φίλτρων Everything Εμφάνιση Ιδιότητες Ημερομηνία πρόσβασης Ημερομηνία Δημιουργίας Ημερομηνία τροποποίησης Date recently changed Ημερομηνία εκτέλεσης Επέκταση Όνομα αρχείου λίστας αρχείων Όνομα Διαδρομή Αριθμός εκτελέσεων Μέγεθος Type name Ήχος Συμπιεσμένο Έγγραφο Εκτελέσιμο Εικόνα Περισσότερα Βίντεο Διαθέσιμη ενημέρωση: Παράλειψη Λήψη Αυτόματος έλεγχος για ενημερώσεις Επιλογή πρώτου αποτελέσματος Home/End keys navigate results Διπλό κλικ για άνοιγμα Φθίνουσα Αύξουσα Αναζήτηση κατά την πληκτρολόγηση Διεπαφή χρήστη Εμφάνιση Λοιπά Συντομεύσεις Προσαρμοσμένες συντομεύσεις Άλλες συντομεύσεις Άνοιγμα παραθύρου αναζήτησης Πλοήγηση αποτελεσμάτων αναζήτησης Πλοήγηση στο ιστορικό αναζήτησης (αν είναι ενεργοποιημένο) Άνοιγμα Άνοιγμα διαδρομής Άνοιγμα στο Everything Εκτέλεση ως διαχειριστής Ιδιότητες αρχείου Αντιγραφή πλήρους διαδρομής στο πρόχειρο Cycle through filters Επιλογή φίλτρου Προεπισκόπηση αρχείου στο QuickLook Αρχική Αναζήτηση Προσαρμοσμένες ενέργειες Για προχωρημένους Αναφορά προβλήματος Συμπεριφορά Ιστορικό Φίλτρα Καθαρισμός τώρα Ενημερώσεις Έλεγχος τώρα Κατεβάστε τη τελευταία έκδοση Χρησιμοποιείτε ήδη την τελευταία έκδοση. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Αναζήτηση ρυθμίσεων Διεπαφή χρήστη Προσαρμοσμένες ενέργειες Σύνδεσμοι Συχνές ερωτήσεις Πηγαίος Κώδικας (Github) Star on GitHub Κάντε μια δωρεά Επιλέξτε τη διάταξη για τα αποτελέσματα αναζήτησης Εμφάνιση εικόνων επισκόπησης για αρχεία εικόνας Εμφάνιση του συνολικού αριθμού των αποτελεσμάτων αναζήτησης Εμφάνιση κουμπιών γρήγορης εναλλαγής για επιλογές αναζήτησης στη γραμμή αναζήτησης Show a Start menu style side pane for the selected result File path Nothing selected Size Απενεργοποίηση εφέ κίνησης UI για βελτιωμένη απόδοση Απόκρυψη αποτελεσμάτων όταν ο όρος αναζήτησης είναι κενός Εκκίνηση αναζήτησης καθώς πληκτρολογείτε, χωρίς να πατήσετε Enter Αυτόματη επιλογή του πρώτου αποτελέσματος διατηρώντας τη γραμμή αναζήτησης εστιασμένη Home/End keys will navigate search results instead of moving the cursor Απαιτείται διπλό κλικ για άνοιγμα αποτελεσμάτων Απομνημόνευση προηγούμενων όρων αναζήτησης για γρήγορη πρόσβαση Συγχρονισμός προσαρμοσμένων φίλτρων Everything Θυμηθείτε το πιο πρόσφατα χρησιμοποιούμενο φίλτρο για μελλοντικές αναζητήσεις Ειδοποίηση όταν μια νέα έκδοση είναι διαθέσιμη Αντικαταστήστε την προεπιλεγμένη αναζήτηση μενού Έναρξη των Windows με το EverythingToolbar ΟΚ Δεν έχουν οριστεί ενέργειες A custom action name cannot be empty. Automatically apply actions based on type and regular expression Ενσωμάτωση γραμμής εργασιών Απόκρυψη εικονιδίου αναζήτησης των Windows Κρύβει το αρχικό εικονίδιο αναζήτησης των Windows από τη γραμμή εργασιών Ενεργοποίηση εικονιδίου πλαισίου συστήματος Enables the system tray icon to be able to quit EverythingToolbar easily Εικονίδιο Αναζήτησης Αλλάζει το στυλ του εικονιδίου της γραμμής εργασιών (απαιτεί επανεκκίνηση του εξερευνητή) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Δωρεά Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Επανάληψη Επανάληψη με αναζήτηση ================================================ FILE: EverythingToolbar/Properties/Resources.es.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.es.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versión Copiar Copiar Copiar nombre completo al portapapeles Cortar Abrir Abrir ubicación Mostrar más opciones Abrir con... Elegir aplicación Pegar Propiedades Ejecutar como administrador Mostrar en Everything Todo Archivo Carpeta Compacta Compacta (detallada) Normal Normal (detallada) Alt Ctrl Shift Win ¿Desea copiar el contenido de la excepción al portapapeles? Error Error al copiar archivo. Error al copiar ubicación. Error al abrir resultado de búsqueda. Error al abrir diálogo. Error al abrir ubicación. Error al registrar atajo de teclado. Puede estar utilizado por otra aplicación. Error al ejecutar el comando Para utilizar este método de clasificación tiene que tener activada la clasificación rápida. Se puede habilitar en la configuración de Everything. Clasificación rápida no activada Al menos una expresión regular no es válida. Por favor seleccione Everything.exe... Seleccione el archivo Filters.csv. Por defecto se encuentra en %APPDATA%\Everything. Su ubicación puede ser diferente dependiendo de su instalación. Si el archivo no existe, significa que no ha realizado ningún cambio en los filtros por defecto de Everything. Filters.csv no encontrado Ha ocurrido una excepción inesperada Comando Nombre Expresión regular Tipo Utilice %file%, %filename% y %path% como marcadores de posición en los comandos. Buscar con Everything objeto objetos Desactivar animaciones Activar el historial de búsqueda Ocultar búsqueda vacía Coincidir mayúsculas Coincidir ubicación Coincidir palabra completa Preferencias Expresiones regulares Recordar filtro Reemplazar la búsqueda de menú de inicio (experimental) Mostrar botones de acceso rápido Mostrar número de resultados Show preview pane Ordenar por Habilitar miniaturas Usar filtros de Everything Ver Atributos Fecha de acceso Fecha de creación Fecha de modificación Fecha de cambio reciente Fecha de ejecución Extensión Nombre del archivo de lista Nombre Ruta Número de ejecuciones Tamaño Escribir nombre Audio Comprimido Documento Ejecutable Imagen Más Vídeo Actualización disponible: Saltar Descargar Buscar actualizaciones automáticamente Seleccionar primer resultado Home/End keys navigate results Doble clic para abrir Descendente Ascendente Buscar mientras se escribe User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar Aceptar No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.fa.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 نسخه رونوشت رونوشت رونوشت کل نام به بریده‌دان برش باز کردن باز کردن مسیر نمایش گزینه‌های بیشتر باز کردن با... انتخاب نرم‌افزار جای‌گذاری مشخصات به عنوان سرپرست اجرا شود در "Everything" نمایش بده همه‌ی موارد پرونده پوشه فشرده فشرده (همراه با داده‌ها) ساده ساده (همراه با داده‌ها) کلید دگرساز کلید مهار کلید تبدیل کلید ویندوز آیا می خواهید محتوای استثنا شده را در بریده‌دان رونوشت کنید؟ خطا رونوشت پرونده‌ها شکست خورد. رونوشت مسیر شکست خورد. باز کزدن نتیجه‌ی جستجو شکست خورد. باز کردن پنجره‌ی گفتگو شکست خورد. باز کردن مسیر شکست خورد. ثبت کلید میانبر شکست خورد. ممکن است که یک نرم‌افزار دیگر به کار رفته باشد. اجرای دستور شکست خورد برای استفاده از این روش مرتب‌سازی باید مرتب‌سازی سریع را فعال کنید. می‌توانید آن را در تنظیمات "Everything" فعال کرد. مرتب‌سازی سریع فعال نیست حداقل یک عبارت منظم نامعتبر است. لطفاً "Everything.exe" را انتخاب کنید... لطفاً پرونده‌ی "Filters.csv" را انتخاب کنید. به صورت پیش فرض می‌توان آن را در "%APPDATA%" پوشه‌ی "Everything" یافت. مکان آن ممکن است بسته به نصب شما متفاوت باشد. اگر پرونده‌ برای شما وجود نداشته باشد، به این معنی است که هیچ تغییری در پالایه‌های پیش‌فرض "Everything" انجام نداده‌اید. "Filters.csv" پیدا نشد خطای غیر منتظره‌ای رخ داده است دستور نام عبارت منظم نوع از %filename%, %file% و %path% به عنوان متغیرهایی در دستورها استفاده کنید. چستجو با "Everything" موضوع موضوعات خاموش کردن پویانمایی‌ها فعال کردن جستجوی تاریخچه پنهان کردن جستجوهای خالی همخوانی بزرگ و کوچکی واج‌های تایپ شده همخوانی واج‌های تایپ شده با مسیر نمونه‌ها همحوانی با کل واژه تنظیمات عبارات با قاعده پالایه را به خاطر داشته باش جایگزینی جستجوی فهرست شروع (آزمایشی) نمایش سریع قواعد پالایه‌ای نمایش شمار نتیجه‌ها Show preview pane چینش بر اساس Enable thumbnails استفاده از پالایه‌های "Everything" نمایش Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name آوا فشرده شده اسناد اجراپذیر عکس‌ها بیشتر ویدئو Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar پذیرش No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.fi.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.fi.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.fr.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.fr.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copier Copier Copier le nom dans le presse-papier Couper Ouvrir Ouvrir le chemin Afficher plus d’options Ouvrir avec... Choisir une application Coller Propriétés Exécuter en tant qu'admin Afficher dans Everything Tous Fichier Dossier Compact Compact (détaillé) Normal Normal (détaillé) Alt Ctrl Maj Win Voulez-vous copier le contenu de l'exception dans le presse-papier? Erreur Impossible de copier le fichier. Impossible de copier le chemin. Impossible d'ouvrir le résultat de recherche. Impossible d'ouvrir la fenêtre de dialogue. Impossible d'ouvrir le chemin. Impossible d'enregistrer le raccourci-clavier. Il est peut-être utilisé par une autre application. Impossible d'exécuter la commande. Afin d'utiliser cette méthode de tri, le tri rapide doit être activé. Il peut être activé dans les paramètres de Everything. Le tri rapide n'est pas activé. Au moins une expression régulière est invalide. Veuillez sélectionner Everything.exe... Veuillez sélectionner le fichier Filters.csv. Par défaut, il se trouve dans le dossier %APPDATA%\Everything. Sa localisation pourrait être différente en fonction de votre installation. Si le fichier n'existe pas, c'est parce que vous n'avez effectuer aucun changement aux filtres par défaut de Everything. Filters.csv non trouvé Une exception non-gérée est survenue Commande Nom Expression régulière Type Utiliser %file%, %filename% et %path% en tant que balises dans les commandes. Rechercher avec Everything objet objets Désactiver les animation Activer l'historique des recherches Masquer les résultats de recherche vides Respecter la casse Respecter le chemin Respecter le mot entier Préférences Expressions régulières Mémoriser le filtre Remplacer la recherche du menu Démarrer (expérimental) Afficher les options rapides Afficher le nombre de résultats Afficher le panneau d’aperçu Trier par Activer les miniatures Utiliser les filtres de Everything Affichage Attributs Date d'accès Date de création Date de modification Date de modification récente Date d'exécution Extension Nom du fichier de la liste Nom Chemin d'accès Nombre d'exécutions Taille Nom du type Audio Compressé Document Exécutable Image Plus Vidéo Mise à jour disponible : Ignorer Télécharger Vérifier automatiquement les mises à jour Sélectionner le premier résultat Les touches Accueil/Fin naviguent les résultats Double-cliquer pour ouvrir Décroissant Croissant Rechercher à chaque caractère tapé Interface utilisateur Apparence Autre Raccourcis Raccourcis personnalisés Autres raccourcis Ouvrir la fenêtre de recherche Naviguer dans les résultats de recherche Naviguer dans l'historique de recherche (si activé) Ouvrir Ouvrir le chemin Ouvrir dans Everything Exécuter en tant qu'admin Propriétés du fichier Copier le chemin du fichier dans le presse-papier Parcourir les filtres Sélectionner un filtre Prévisualiser le fichier dans QuickLook Accueil Recherche Actions personnalisées Avancé Signaler un problème Comportement Historique Filtres Effacer maintenant Mises à jour Vérifier maintenant Télécharger la dernière version Vous utilisez déjà la dernière version. Instance nommée Nom de l'instance Everything Définir le nom de l'instance Everything Instance par défaut Intégration de Everything dans la barre des tâches Windows. Paramètres de recherche Interface utilisateur Actions personnalisées Liens Foire aux questions Code source (GitHub) Mettez une étoile sur GitHub Faire un don Choisir la mise en page des résultats de recherche Afficher les miniatures pour les fichiers image Afficher le nombre total de résultats de recherche Afficher les boutons rapides pour les options de recherche dans la barre de recherche Afficher un panneau latéral du style menu Démarrer pour le résultat sélectionné Emplacement du fichier Rien de sélectionné Taille Désactiver les animations de l'interface utilisateur pour de meilleures performances Masquer les résultats lorsque le terme de recherche est vide Commencez à rechercher au fur et à mesure que vous tapez, sans appuyer sur Entrée Sélectionner automatiquement le premier résultat tout en gardant la barre de recherche mise en avant Les touches Accueil/Fin afficheront les résultats de recherche au lieu de déplacer le curseur Nécessite un double-clic pour ouvrir les résultats Se souvenir des termes de recherche précédents pour un accès rapide Synchroniser les filtres personnalisés Everything Se souvenir du filtre le plus récent pour les recherches futures Notifier lorsqu'une nouvelle version est disponible Remplacer la recherche par défaut dans le menu Démarrer de Windows par la barre de recherche de EverythingToolbar OK Aucune action définie Un nom d'action personnalisé ne peut pas être vide. Appliquer automatiquement les actions basées sur le type et l'expression régulière Intégration dans la barre des tâches Masquer la recherche Windows Masque l'icône de recherche Windows originale de la barre des tâches Activer l'icône de la barre d'état système Permet à l'icône de la barre d'état système de quitter EverythingToolbar facilement Icône de recherche Change le style de l'icône de la barre des tâches (nécessite le redémarrage de l'explorateur) Ordre des filtres Nombre d'onglets de filtres Contrôle le nombre d'onglets de filtres visibles Forcer les styles Windows 10 Utilise les styles Windows 10 pour correspondre à certaines anciennes modifications de la barre des tâches EverythingToolbar {version} a été mis à jour avec succès ! Si cela vous simplifie la vie, pensez à faire un don pour soutenir les mises à jour futures. Faire un don Ignorer Ouvrir le menu contextuel du système Focus sur la liste des résultats Contrôle du comportement du focus lors de la navigation de la liste des résultats Borner Répétition Répétition avec recherche ================================================ FILE: EverythingToolbar/Properties/Resources.he.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.he.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 גירסה העתקה העתקה העתקת שם מלא ללוח גזירה פתיחה פתיחת נתיב התיקיה הצגת אפשרויות נוספות פתיחה באמצעות... בחירת יישום הדבקה מאפיינים הפעלה כמנהל הצגה ב-Everything הכל קובץ תיקייה ממוקד ממוקד (פרטים) רגיל רגיל (פרטים) Alt Ctrl Shift Win האם אתם מעוניינים להעתיק את התוכן החריג ללוח? שגיאה העתקת קובץ נכשלה. העתקת נתיב הקובץ נכשלה. שגיאה בפתיחת תוצאות החיפוש. פתיחת החלון נכשלה. פתיחת נתיב הקובץ נכשלה. שגיאה בהגדרת צירוף המקשים, יתכן ונמצא כבר בשימוש ביישום אחר. שגיאה בהרצת הפקודה כדי להשתמש בשיטת מיון זאת נדרש הפעלת המיון המהיר, ניתן להפעילו דרך הגדרות Everything. המיון המהיר לא הופעל לפחות אחד מהביטויים הרגולריים אינו תקף. נא לבחור את Everything.exe... בבקשה בחר את הקובץ Filters.csv. הנתיב ברירת מחדל ניתן למצוא אותו ב- %APPDATA%\Everything. המיקום יכול להשתנות לפי מצב ההתקנה. אם הקובץ לא נמצא זה אומר שהכללים של Everything לא שונו מהברירת מחדל. Filters.csv לא נמצא אירעה שגיאה לא צפויה פקודה שם ביטוי רגיל סוּג השתמש ב- %file%, %filename% ו-%path% כתחליף מיקום הנוכחי בפקודות. חפש באמצעות Everything אובייקט אובייקטים השבת הנפשות הפעל היסטוריית חיפוש הסתר תוצאות כאשר החיפוש ריק רגישות לאות גדולה התאם נתיב התאם מילים שלמות העדפות ביטויים רגילים זכור מסנן החלף את החיפוש בלחצן ההפעל (נסיוני) הצג הגדרות מהירות הצג את מספר תוצאות החיפוש Show preview pane מיין לפי הפעל תצוגה מקדימה השתמש במסנני Everything תצוגה תכונות תאריך גישה תאריך יצירה תאריך שינוי אחרון תאריך שינוי אחרון תאריך הרצה הרחבה קובץ רשימת קבצים שם נתיב ספירת הפעלות גודל שם סוג אודיו קבצים דחוסים מסמך קבצי הרצה תמונה עוד וידאו עדכון זמין: דלג הורד בדוק אם יש עדכונים באופן אוטומטי בחר תוצאה ראשונה Home/End keys navigate results לחץ פעמיים כדי לפתוח סדר יורד סדר עולה חפש תוך כדי הקלדה ממשק משתמש מראה אחר קיצורי דרך קיצורי דרך מותאמים אישית קיצורי דרך אחרים פתח חלון חיפוש ניווט בין תוצאות החיפוש ניווט בהיסטוריית החיפוש (אם מופעל) פתח פתח נתיב פתח בEverything הפעל כמנהל מאפייני קובץ העתק נתיב מלא ללוח מעבר בין מסננים בחר מסנן תצוגה מקדימה של קובץ ב-QuickLook בית חפש פעולות מותאמות אישית מתקדם דווח על בעיה התנהגות היסטוריה מסננים נקה כעת עדכונים בדוק עכשיו הורד גרסה אחרונה אתה כבר משתמש בגרסה האחרונה. מופע בשם שם מופע Everything קבע את שם מופע ה-Everything לשימוש מופע ברירת מחדל שילוב Everything עבור שורת המשימות של Windows. הגדרות חיפוש ממשק משתמש פעולות מותאמות אישית קישורים שאלות נפוצות קוד מקור (GitHub) ככב ב-GitHub תרום בחר את הפריסה עבור תוצאות החיפוש הצג תמונות ממוזערות לקבצי תמונה הצג את המספר הכולל של תוצאות החיפוש הצג לחצני הפעלה מהירה לאפשרויות חיפוש בשורת החיפוש Show a Start menu style side pane for the selected result File path Nothing selected Size השבת אנימציות ממשק משתמש לשיפור ביצועים הסתר תוצאות כאשר מונח החיפוש ריק התחל לחפש תוך כדי הקלדה, ללא צורך בלחיצה על Enter בחר אוטומטית את התוצאה הראשונה תוך שמירה על מיקוד בשורת החיפוש Home/End keys will navigate search results instead of moving the cursor דרוש לחיצה כפולה לפתיחת תוצאות זכור מונחי חיפוש קודמים לגישה מהירה סנכרן את המסננים המותאמים אישית של Everything זכור את המסנן שנעשה בו שימוש לאחרונה עבור חיפושים עתידיים הודע כאשר גרסה חדשה זמינה החלף את חיפוש תפריט ההתחלה של Windows כברירת מחדל עם EverythingToolbar אישור לא הוגדרו פעולות שם פעולה מותאמת אישית לא יכול להיות ריק. החל אוטומטית פעולות על בסיס סוג וביטוי רגולרי שילוב שורת המשימות הסתר סמל החיפוש של Windows מסתיר את סמל החיפוש המקורי של Windows משורת המשימות הפעל סמל מגש המערכת מאפשר את סמל מגש המערכת כדי שניתן יהיה לסגור את EverythingToolbar בקלות סמל חיפוש משנה את סגנון הסמל בשורת המשימות (דורש הפעלה מחדש של Explorer) סדר מסננים מספר לשוניות מסנן שולט במספר לשוניות המסנן הנראות כפה סגנונות Windows 10 משתמש בסגנונות Windows 10 כדי להתאים לשינויים מסוימים בשורת המשימות הישנה EverythingToolbar {version} עודכן בהצלחה! אם זה מקל על חייך, שקול לתרום כדי לתמוך בעדכונים עתידיים. תרום התעלם פתח את תפריט ההקשר של המערכת Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.hu.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.hu.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Verzió Másolás Másolás Fájlnév másolása a vágólapra Kivágás Megnyitás Megnyitás Továbbiak megjelenítése Megnyitás ezzel... Alkalmazás választása Beillesztés Tulajdonságok Futtatás rendszergazdaként Mutasd Everything-ben Mind Fájl Mappa Kompakt Kompakt (részletes) Normál Normál (részletes) Alt Ctrl Shift Win Szeretnéd a kivételt a vágólapra másolni? Hiba Fájlmásolás sikertelen. Az útvonalmásolás sikertelen. Sikertelen keresés megnyitás. Sikertelen dialógus megnyitás. Sikertelen útvonal megnyitás. Sikertelen gyorsbillentyű regisztráció. Talán egy másik alkalmazás használja. Sikertelen parancs futtatás Ezen rendezési mód használatához engedélyezni kell a gyors rendezést. Ez az Everything beállításokban megtehető. Gyors rendezés nincs engedélyezve Legalább egy alapértelmezett kifejezés érvénytelen. Kérem válassza az Everything.exe-t... Kérem válassza ki a Filters.csv fájlt. Alapértelmezetten az %APPDATA%\Everything elérési úton található, ez esetenként eltérhet. Ha nem létezik a fájl, az azt jelenti, hogy nem módosította a beállításokat. Filters.csv nem található Váratlan kivétel történt Parancs Név Reguláris kifejezés Típus Használja a %file%, %filename% és %path% helyőrzőt a parancsokban. Keresés az Everything-el objektum objektum Animációk tiltása Keresési előzmények be Üres keresés elrejtése Egyező eset Útvonal egyezés Teljes szó egyezése Preferenciák Reguláris kifejezés Szűrő megjegyzése A start menü keresésének lecserélése (kísérleti) Gyorskapcsolók megjelenítése A találatok száma Show preview pane Rendezés Mutasson miniatűröket Everything szűrők használata Megjelenít Kat ide EvrythingToolbar fordításához Hozzáférés ideje Létehozás dátuma Módosítás dátuma Utolsó módósítás dátuma Futtatás dátuma Kiterjesztés File lista neve Név Elérési út Futás számláló Méret Tipus Audió Tömörített Dokumentum Futtatható Kép Továbbiak Videó Frissítés elérhető: Kihagyás Letöltés Frissítések autómatikus keresése Első eredmény választása Home/End keys navigate results Dupla kattintás a megnyitáshoz Csökkenő Növekvő Keresés gépelés közben Felhasználói felület Kinézet Egyéb Gyorsbillentyűk Egyéni gyorsbillentyűk Egyéb gyorsbillentyűk Keresőablak megnyitása Navigate search results Navigate search history (if enabled) Megnyitás Fájl helyének megnyitása Megnyitás Everythingben Futtatás rendszergazdaként Tulajdonságok Másolás elérési útként Cycle through filters Szűrő kiválasztása Preview file in QuickLook Kezdőlap Keresés Egyéni műveletek Haladó Probléma jelentése Viselkedés Előzmények Szűrők Törlés Frissítések Ellenőrzés most Legújabb verzió letöltése Már a legújabb verziót használod. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Keresési beállítások Felhasználói felület Egyéni műveletek Linkek Gyakran ismételt kérdések Forráskód (GitHub) Csillagozás a GitHub-on Támogatás Choose the layout for search results Bélyegképek mutatása képfájloknál Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Értesítés új verziókról Replace the default Windows Start menu search with EverythingToolbar OK Nincs beállítva művelet A custom action name cannot be empty. Automatically apply actions based on type and regular expression Tálca integráció Windows kereső elrejtése Elrejti a Windows keresőt az tálcáról Rejtett ikon engedélyezése Engedélyezi a rejtett ikont, amivel könnyen ki lehet lépni az EverythingToolbarból Keresés ikon Kicseréli a tálcaikon stílusát (újra kell indítani a fájlkezelőt) Szűrők rendezése Number of filter tabs Controls the number of visible filter tabs Windows 10 stílus kényszerítése Uses Windows 10 styles to match certain legacy taskbar modifications Az EverythingToolbar {version} sikeresen frissítve! Ha megkönnyítjük az életed, fontold meg az támogatást a jövőbeli frissítésekért. Támogatás Elvetés Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.it.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.it.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versione Copia Copia Copia il nome intero negli appunti Taglia Apri Apri il percorso Mostra più opzioni Apri con... Scegli l'applicazione Incolla Proprietà Esegui come amministratore Mostra in Everything Tutti File Cartella Compatto Compatto (dettagliato) Normale Normale (dettagliato) Alt Ctrl Shift Win Vuoi copiare il contenuto dell'eccezione negli appunti? Errore Copia del file fallita. Copia del percorso fallita. Apertura risultato della ricerca fallita. Apertura finestra di dialogo fallita. Apertura percorso fallita. Registrazione hotkey fallita. Potrebbe essere in uso in un'altra applicazione. Esecuzione del comando fallita Per utilizzare questo metodo di ordinamento, deve essere abilitato il riordino veloce. Può essere abilitato nei settaggi di Everything. Riordino veloce non abilitato Almeno una espressione regolare non è valida. Seleziona Everything.exe... Seleziona il file Filters.csv. Per default può essere trovato in %APPDATA%\Everything. La sua posizione potrebbe essere diversa in base alla tua installazione. Se il file non esiste significa che non hai eseguito nessun cambiamento ai filtri di Everything. Filters.csv non trovato Si è verificata un'eccezione non gestita Comando Nome Espressione regolare Scrivi Usa %file%, %filename% e %path% come segnaposto nei comandi. Cerca con Everything oggetto oggetti Disabilita animazioni Abilita la cronologia delle ricerche Nascondi la ricerca vuota Corrispondenza maiuscolo/minuscolo Corrispondenza percorso Corrispondenza parola intera Impostazioni Espressioni regolari Ricorda il filtro Sostituisci la ricerca nel menu start (sperimentale) Mostra impostazioni rapide Mostra conteggio risultati Show preview pane Ordina Abilita miniature Usa i filtri di Everything Visualizzazione Attributi Data di accesso Data creazione Data modifica Data modificata di recente Data di esecuzione Estensione Nome del file di Elenco file Nome Percorso Conta eseguiti Dimensione Tipo nome Audio Archivio compresso Documento Eseguibile Immagine Altro Video Aggiornamento disponibile: Salta Scarica Controlla automaticamente la disponibilità di aggiornamenti Seleziona il primo risultato I tasti Home/Fine consentono di navigare tra i risultati Doppio click per aprire Decrescente Crescente Durante la ricerca Interfaccia Utente Aspetto Altro Scorciatoie Scorciatoie personalizzate Altre scorciatoie Apri la finestra di ricerca Naviga i risultati di ricerca Naviga nella cronologia di ricerca (se abilitata) Apri Apri percorso Apri in Everything Esegui come amministratore Proprietà del file Copia il percorso completo negli appunti Ciclo attraverso i filtri Seleziona filtro Anteprima del file in QuickLook Home Cerca Azioni personalizzate Avanzate Segnala un problema Comportamento Cronologia Filtri Svuota ora Aggiornamenti Controlla ora Scarica l'ultima versione Stai già usando l'ultima versione. Istanza Nominata Istanza Nominata di Everything Imposta il nome dell'istanza di Everything da usare Istanza predefinita L'integrazione di Everything per la barra delle applicazioni di Windows. Cerca impostazioni Interfaccia utente Azioni personalizzate Collegamenti Domande Frequenti Codice Sorgente (GitHub) Stella su Github Fai una donazione Scegli il layout per i risultati della ricerca Mostra le miniature per i file immagine Mostra il numero totale dei risultati della ricerca Mostra i pulsanti di scelta rapida per le opzioni di ricerca nella barra di ricerca Show a Start menu style side pane for the selected result File path Nothing selected Size Disabilita le animazioni dell'interfaccia utente per migliorare le prestazioni Nascondi i risultati quando il termine di ricerca è vuoto Inizia la ricerca mentre scrivi, senza premere Invio Seleziona automaticamente il primo risultato mantenendo la barra di ricerca focalizzata Home/Fine dei tasti sposterà i risultati della ricerca invece di spostare il cursore Richiede un doppio clic per aprire i risultati Ricorda i termini di ricerca precedenti per l'accesso rapido Sincronizza i filtri personalizzati di Everything Ricorda il filtro usato più di recente per ricerche future Notifica quando è disponibile una nuova versione Sostituisci la ricerca predefinita del menu Windows Start con EverythingToolbar OK Nessuna azione definita Un nome di azione personalizzato non può essere vuoto. Applica automaticamente le azioni in base al tipo e all'espressione regolare Integrazione nella barra delle applicazioni Nascondi icona ricerca Windows Nasconde l'icona di ricerca originale di Windows dalla barra delle applicazioni Abilita icona area di notifica Abilita l'icona area di notifica di uscire facilmente da EverythingToolbar Icona cerca Cambia lo stile dell'icona della barra delle applicazioni (richiede il riavvio dell'explorer) Ordine filtro Numero di schede filtro Controlla il numero di schede dei filtri visibili Forza stili Windows 10 Usa gli stili di Windows 10 per abbinare alcune modifiche alla barra delle applicazioni legacy EverythingToolbar {version} è stato aggiornato con successo! Se rende la tua vita più facile, considera la donazione per supportare gli aggiornamenti futuri. Dona Disattiva Apri menu contestuale di sistema Focus elenco risultati Controlla come si comporta il focus quando si naviga nella lista dei risultati Clamp Ripeti Ripeti con ricerca ================================================ FILE: EverythingToolbar/Properties/Resources.ja.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.ja.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 バージョン コピー コピー 完全名をクリップボードにコピー 切り取り 開く パスを開く 詳細設定を表示 アプリで開く アプリを選択 貼り付け プロパティ 管理者として実行 Everything で表示 すべて ファイル フォルダ コンパクト コンパクト (詳細) 標準 標準 (詳細) Alt Ctrl Shift Win 例外の内容をクリップボードにコピーしますか? エラー ファイルのコピーに失敗しました。 パスのコピーに失敗しました。 検索結果を開けませんでした。 ダイアログを開けませんでした。 パスを開けませんでした。 ホットキーの登録に失敗しました。他のアプリケーションで使用されている可能性があります。 コマンドの実行に失敗しました。 このソート方法を利用するには高速ソートが有効になっている必要があります。Everything の設定から有効化できます。 高速ソートが有効になっていません 少なくともひとつ以上の正規表現が無効です。 Everything.exe を選択... Filters.csv を選択してください。デフォルトでは %APPDATA%\Everything にあります。この場所はインストール時の設定で変化する場合があります。このファイルが存在しない場合、Everything のデフォルトのフィルターに変更を加えていないということを意味します。 Filters.csv が見つかりません ハンドルされていない例外が発生しました コマンド 名前 正規表現 タイプ コマンドのプレースホルダーとして %file%、%filename% または %path% を使用します。 Everything で検索 項目 項目 アニメーションを無効化 検索履歴を有効 空の検索結果を非表示 大文字小文字を区別してマッチ パスにマッチ 単語単位でマッチ 設定 正規表現 フィルターを保存 スタートメニューの検索を置き換える (実験的) 検索時にクイックトグルを表示 検索結果の数を表示 Show preview pane ソート サムネイルを有効化 Everything のフィルタを使用 表示 属性 アクセス日時 作成日時 変更日時 更新日時 実行日時 拡大 ファイルの名前 ファイル名 ファイルパス 実行回数 サイズ タイプ名 オーディオ 圧縮ファイル ドキュメント 実行可能ファイル 写真 その他 ビデオ 利用可能なアップデート: スキップ ダウンロード アップデートを自動で確認する 最初の結果を選択する Home/Endキーで結果を移動 ダブルクリックで開く 降順 昇順 入力して検索 ユーザーインターフェース 外観 その他 ショートカット カスタムショートカット その他のショートカット 検索ウィンドウを開く 検索結果を移動 検索履歴を移動 (有効な場合) 開く パスを開く Everything で開く 管理者として実行 ファイルのプロパティ 完全なパスをクリップボードにコピー フィルターの切り替え フィルターを選択 QuickLookでファイルをプレビューする ホーム 検索 カスタムアクション 詳細 問題を報告する 操作 履歴 フィルター 今すぐ消去 アップデート 今すぐ確認 最新バージョンをダウンロード 既に最新バージョンを使用しています。 名前付きインスタンス Everything のインスタンス名 Everything で使用するインスタンスの名前を設定します デフォルトのインスタンス Windows タスクバーに Everything を統合。 検索設定 ユーザーインターフェース カスタムアクション リンク よくある質問 (英語) ソースコード (GitHub) Github でスターをつける 寄付する 検索結果のレイアウトを選択します 画像ファイルのサムネイルを表示します 検索結果の総数を表示します 検索バーに検索オプションのクイック切り替えボタンを表示します Show a Start menu style side pane for the selected result File path Nothing selected Size パフォーマンスを向上させるために UI アニメーションを無効にします 検索語が空の場合は結果を非表示にします Enter キーを押さずに、入力して検索を開始します 検索バーのフォーカスを維持しながら最初の結果を自動的に選択します Home/Endキーでカーソルを移動する代わりに検索結果をナビゲートします 結果を開くときにダブルクリックを必要にします クイックアクセスのために以前の検索語を保存します Everything のカスタムフィルターを同期します 今後の検索に最後使用したフィルターを記憶します 新しいバージョンが利用可能になった時に通知します デフォルトの Windows スタートメニュー検索を EverythingToolbar に置き換えます OK アクションが定義されていません カスタムアクション名は空欄にできません。 型と正規表現に基づいてアクションを自動的に適用する タスクバー連携 Windows の検索アイコンを隠す 元の Windows の検索アイコンをタスクバーから非表示にします システムトレイアイコンを有効にする システムトレイアイコンを有効にして、EverythingToolbar を簡単に終了します 検索アイコン タスクバーアイコンのスタイルを変更します (エクスプローラーの再起動が必要です) フィルターの順番 フィルタータブの数 表示されるフィルタータブの数を制御します Windows 10 スタイルを強制する Windows 10 スタイルを使用して、従来のタスクバーの変更に一致します EverythingToolbar {version} は正常に更新されました! それがあなたの人生をより簡単にするなら、将来の更新をサポートするために寄付を検討してください。 寄付する 閉じる システムのコンテキストメニューを開く Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.ko-KR.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.ko-KR.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 버전 복사 복사 전체 이름을 클립보드에 복사 잘라내기 열기 경로 열기 옵션 더 보기 다른 프로그램으로 열기 앱 선택 붙여넣기 속성 관리자로 실행 Everything에서 보기 전체 파일 폴더 간단 간단 (자세히) 기본 기본 (자세히) Alt Ctrl Shift Win 예외 항목을 클립보드에 복사하시겠습니까? 에러 파일 복사에 실패했습니다. 경로 복사에 실패했습니다. 검색 결과를 여는 데 실패했습니다. 대화창을 여는 데 실패했습니다. 경로 열기에 실패했습니다. 단축키 등록에 실패했습니다. 다른 프로그램에서 사용 중일 수 있습니다. 명령 실행에 실패했습니다. 이 정렬 방법을 사용하기 위해서는 빠른 정렬이 활성화되어야 합니다. 이는 Everything 설정에서 활성화 할 수 있습니다. 빠른 정렬이 활성화되지 않음 적어도 하나의 정규식이 유효하지 않습니다. Everything.exe를 선택해주세요... Filters.csv 파일을 선택해주세요. %APPDATA%\Everything 에서 찾을 수 있습니다. 설치 방법에 따라 다른 경로에 위치할 수 있습니다. 파일이 존재하지 않는다면 Everything의 기본 필터를 변경하지 않은 것입니다. Filters.csv를 찾을 수 없습니다 처리되지 않은 예외 발생 명령 이름 정규식 종류 명령에서 %파일%, %파일명%, %경로% 를 자리 지시자로 사용해주세요. Everything으로 검색 항목 항목 애니메이션 비활성화 검색 기록 사용함 빈 검색 숨기기 대/소문자 일치 경로 일치 전체 단어 일치 속성 정규식 필터 기억 시작 메뉴 검색 기능 대체 (실험적 기능) 빠른 전환 표시 검색 결과 수 표시 Show preview pane 정렬 기준 썸네일 사용함 Everything 필터 사용 보기 Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name 오디오 압축 파일 문서 실행 파일 사진 더 보기 비디오 업데이트 사용 가능: 건너뛰기 다운로드 자동으로 업데이트 확인 첫 번째 결과 선택 Home/End keys navigate results 두 번 클릭으로 열기 Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar 확인 No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.nl.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.nl.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versie Kopiëren Kopiëren Kopieer de volledige naam naar het klembord Knippen Openen Open pad Toon meer opties Open met... Kies app Plakken Eigenschappen Voer als admin uit Toon in Everything Alle Bestand Map Compact Compact (gedetailleerd) Normaal Normaal (gedetailleerd) Alt Ctrl Shift Win Wilt u de uitzonderingsinhoud naar het klembord kopiëren? Fout Kan bestand niet kopiëren. Kan pad niet kopiëren. Kan zoekresultaat niet openen. Kan dialoogvenster niet openen. Kan pad niet openen. Registreren van sneltoets is mislukt. Mogelijk is deze in gebruik door een ander programma. Commando uitvoeren mislukt Om deze sorteermethode te gebruiken, moet snel sorteren zijn ingeschakeld. Het kan worden ingeschakeld in je Everything instellingen. Snel sorteren niet ingeschakeld Minstens één reguliere expressie is ongeldig. Selecteer Everything.exe... Selecteer het bestand Filters.csv. Het is standaard te vinden in% APPDATA% \ Everything. De locatie kan verschillen, afhankelijk van uw installatie. Als het bestand niet bestaat, betekent dit dat je geen wijzigingen hebt aangebracht in de standaardfilters van Everything. Filters.csv niet gevonden Er is een onverwerkte uitzondering opgetreden Opdracht Naam Reguliere Expressie Soort Gebruik %file%, %filename% en %path% als placeholder in de opdracht. Zoeken met Everything object objecten Animaties uitschakelen Zoekgeschiedenis inschakelen Verberg lege zoekopdracht Hoofdlettergevoelig Overeenkomend pad Volledig woord Voorkeuren Reguliere Expressies Filter onthouden Start menu zoeken vervangen (experimenteel) Snel schakelen weergeven Toon aantal resultaten Show preview pane Sorteer op Miniaturen inschakelen Gebruik Everything filters Uiterlijk Kenmerken Datum geopend Aanmaakdatum Wijzigingsdatum Datum onlangs gewijzigd Uitvoerdatum Extensies Bestandsnaam van folder Naam URL Aantal keer uitgevoerd Grootte Typenaam Audio Gecomprimeerd Document Uitvoerbaar Afbeelding Meer Video Update beschikbaar: Overslaan Download Automatisch controleren op updates Eerste resultaat selecteren Home/End keys navigate results Dubbelklik om te openen Aflopend Oplopend Zoeken terwijl u typt User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar Ok No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.no.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.no.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versjon Kopier Kopier Kopier navn til utklippstavlen Klipp ut Åpen Åpne bane Vis flere alternativer Åpne med... Velg apper Lim inn Egenskaper Kjør som administrator Vis i Everything Alle Fil Mappe Kompakt Kompakt (detaljert) Normal Normal (detaljert) Alt Ctrl Shift Win Vil du kopiere unntaksinnholdet til utklippstavlen? Feil Kopiering feilet. Kunne ikke kopiere banen. Kunne ikke åpne søkeresultatet. Kunne ikke åpne dialog. Kan ikke åpne stien. Failed to register hotkey. It might be in use by another application. Kunne ikke kjøre kommando To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.pl.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.pl.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Wersja Kopiuj Kopiuj Kopuj pełną nazwę do schowka Wytnij Otwórz Otwórz ściężkę Pokaż więcej opcji Otwórz z... Wybierz aplikację Wklej Właściwości Uruchom jako administrator Pokaż w Everything Wszystko Plik Folder Kompaktowy Kompaktowy (szczegółowy) Normalny Normalny (szczegółowy) Alt Ctrl Shift Win Czy chcesz skopiować treść wyjątku do schowka? Błąd Kopiowanie pliku zakończone niepowodzeniem. Kopiowanie ścieżki zakończone niepowodzeniem. Otwieranie wyników wyszukiwania zakończone niepowodzeniem. Otwieranie okna dialogowego zakończone niepowodzeniem. Otwieranie ścieżki zakończone niepowodzeniem. Rejestrowanie skrótu klawiszowego zakończone niepowodzeniem. Możliwe, że jest używany przez inną aplikację. Uruchomienie komendy zakończone niepowodzeniem. Aby użyć tej metody sortowania musi mieć włączoną opcję szybkiego sortowania. Może być ona włączona w twoich ustawieniach Everything. Szybkie sortowanie nie jest włączone. Przynajmniej jedno wyrażenie regularne jest nieprawidłowe. Wybierz Everything.exe... Wybierz plik Filters.csv. Domyślnie można go znaleźć w %APPDATA%\Everything. Jego lokalizacja może się różnić w zależności od twojej instalacji. Jeśli plik nie istnieje, oznacza to, że nie wprowadziłeś żadnych zmian w domyślnych filtrach Everything. Nie znaleziono pliku Filters.csv Wystąpił nieobsługiwany wyjątek Komenda Nazwa Wyrażenie regularne Typ Użyj %file%, %filename% i %path% jako symbole wieloznaczne (placeholdery) w komandach. Szukaj z Everything obiekt obiekty Wyłącz animacje Włącz historię wyszukiwania Ukryj puste wyszukanie Uwzględniaj wielkość liter Uwzględniaj ścieżkę Uwzględniaj całe wyrazy Preferencje Wyrażenie Regularne Pamiętaj filtry Zastąp wyszukiwanie w menu Start (eksperymentalne) Pokaż szybkie przełączniki Pokaż liczbę wyników Show preview pane Sortuj według Włącz miniatury Użuj filtrów Everything Widok Atrybuty Data dostępu Data utworzenia Data modyfikacji Data ostatniej zmiany Data uruchomienia Rozszerzenie Nazwa listy plików Nazwa Ścieżka Liczba uruchomień Rozmiar Typ Dźwięki Skompresowane Dokumenty Wykonywalne Obrazy Więcej Wideo Dostępna aktualizacja: Pomiń Pobierz Automatycznie sprawdzaj aktualizacje Wybierz pierwszy wynik Nawigowanie rezultatów klawiszami Home/End Kliknij dwukrotnie, aby otworzyć Malejąco Rosnąco Wyszukuj podczas pisania Interfejs Wygląd Inne Skróty Niestandardowe skróty Inne skróty Otwórz okno wyszukiwania Przejdź do wyników wyszukiwania Przeglądaj historię wyszukiwania (jeśli jest włączona) Otwórz Otwórz ścieżkę Otwórz w Everything Uruchom jako administrator Właściwości pliku Skopiuj pełną ścieżkę do schowka Przełączanie między filtrami Wybierz filtr Podgląd pliku w QuickLook Strona Główna Szukaj Akcje niestandardowe Zaawansowane Zgłoś problem Zachowanie Historia Filtry Wyczyść teraz Aktualizacje Sprawdź teraz Pobierz najnowszą wersję Używasz już najnowszej wersji. Nazwa instancji Nazwa instancji Everything Ustaw nazwę instancji Everything do użycia Domyślna instancja Integracja Everything dla paska zadań Windows. Ustawienia wyszukiwania Interfejs Akcje niestandardowe Linki Najczęściej zadawane pytania Kod źródłowy (GitHub) Daj gwiazdkę na GitHubie Przekaż darowiznę Wybierz układ wyników wyszukiwania Pokaż miniatury dla wyszukanych obrazów Wyświetl całkowitą liczbę wyników wyszukiwania Pokaż przyciski do szybkiego przełączania dla opcji na pasku wyszukiwania Show a Start menu style side pane for the selected result File path Nothing selected Size Wyłącz animacje interfejsu użytkownika, aby poprawić wydajność Ukryj wyniki, gdy pole wyszukiwania jest puste Rozpocznij wyszukiwanie w trakcie pisania, bez naciskania Enter Automatycznie wybierz pierwszy wynik, pozostawiając fokus na pasku wyszukiwania Klawisze Home/End będą używane do nawigacji wyników wyszukiwania zamiast kursora Wymagaj dwukrotnego kliknięcia, aby otworzyć wyniki Zapamiętaj poprzednie warunki wyszukiwania, aby umożliwić szybki dostęp Synchronizuj niestandardowe filtry aplikacji Everything Pamiętaj ostatnio używany filtr do przyszłych wyszukiwań Powiadom, gdy nowa wersja jest dostępna Zastąp domyślne wyszukiwanie w menu Start tym z EverythingToolbar OK Nie zdefiniowano działania Niestandardowa nazwa akcji nie może być pusta. Automatycznie zastosuj akcje na podstawie typu i wyrażenia regularnego Integracja z paskiem zadań Ukryj ikonę wyszukiwarki Windows Ukrywa oryginalną ikonę wyszukiwania Windows z paska zadań Wyświetlaj ikonę w zasobniku systemowym Włącza wyświetlanie ikony w zasobniku systemowym, aby ułatwić wyłączenie EverythingToolbar Ikona wyszukiwania Zmienia styl ikony na pasku zadań (wymaga restartu eksploratora) Kolejność filtrowania Liczba kart filtrów Kontroluje liczbę widocznych kart filtrów Wymuś styl Windows 10 Używa stylu Windows 10, aby wpasować się w niektóre starsze modyfikacje paska zadań EverythingToolbar {version} został zaktualizowany pomyślnie! Jeśli to narzędzie ułatwia Twoje życie, rozważ darowiznę, aby wesprzeć przyszłe aktualizacje. Wspomóż Odrzuć Otwórz systemowe menu kontekstowe Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.pt-BR.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.pt-BR.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versão Copiar Copiar Copiar Nome Completo para Área de Transferência Recortar Abrir Abrir Caminho Mostrar mais opções Abrir com... Escolher aplicativo Colar Propriedades Executar como administrador Mostrar no Everything Tudo Arquivo Pasta Compacto Compacto (detalhado) Normal Normal (detalhado) Alt Ctrl Shift Win Você deseja copiar o conteúdo de exceção para a área de transferência? Erro Falha ao copiar o arquivo. Falha ao copiar o caminho. Falha ao abrir o resultado da pesquisa. Falha ao abrir a caixa de diálogo. Falha ao abrir o caminho. Falha ao registrar a tecla de atalho. Ela pode estar sendo usada por outro aplicativo. Falha ao executar o comando Para utilizar este método de classificação, a classificação rápida deve estar ativada. Ele pode ser ativado nas suas configurações do Everything. A classificação rápida não está ativada Ao menos uma expressão regular é inválida. Selecione Everything.exe... Selecione o arquivo Filters.csv. Por padrão, ele pode ser encontrado em %APPDATA%\Everything. Seu local pode ser diferente dependendo de sua instalação. Se o arquivo não existe para você, isso significa que você não realizou nenhuma alteração nos filtros padrão do Everything. Filters.csv não encontrado Ocorreu uma exceção não tratada Comando Nome Expressão Regular Tipo Use %file%, %filename% e %path% como espaços reservados nos comandos. Pesquisar com o Everything objeto objetos Desativar animações Ativar histórico de pesquisa Ocultar pesquisa sem resultados Diferenciar Maiúsculas e Minúsculas Corresponder Caminho Corresponder Palavra Inteira Preferências Expressões Regulares Lembrar o filtro Substituir a pesquisa do menu iniciar (experimental) Mostrar opções rápidas Mostrar contagem de resultados Show preview pane Classificar por Habilitar miniaturas Usar filtros do Everything Visualizar Atributos Data de acesso Data de criação Data de modificação Data de alteração recente Data de execução Extensão Nome do arquivo da lista de arquivos Nome Caminho Contagem de execuções Tamanho Nome do tipo Áudio Comprimido Documento Executável Imagem Mais Vídeo Atualização disponível: Ignorar Baixar Verificar atualizações automaticamente Selecionar o primeiro resultado Home/End keys navigate results Clique duas vezes para abrir Decrescente Crescente Pesquisar enquanto digita Interface Aparência Outros Atalhos Atalhos personalizados Outros atalhos Abrir janela de pesquisa Navegar pelos resultados da pesquisa Navegar pelo histórico de pesquisa (se ativado) Abrir Abrir caminho Abrir no Everything Executar como administrador Propriedades do arquivo Copiar caminho para área de transferência Alternar entre filtros Selecionar filtro Visualizar arquivo no QuickLook Início Pesquisar Ações Personalizadas Avançado Reportar um problema Comportamento Histórico Filtros Limpar agora Atualizações Verificar agora Baixar a última versão Você já está usando a versão mais recente. Instância Nomeada Nome da instância do Everything Definir o nome da instância usada pelo Everything Instância padrão Everything integration for the Windows taskbar. Configurações de pesquisa Interface Ações personalizadas Links Preguntas frequentes Código Fonte (GitHub) Adicione uma estrela no GitHub Fazer uma doação Escolha o layout para os resultados da pesquisa Mostrar miniaturas para arquivos de imagens Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Sincronizar filtros customizados do Everything Remember the most recently used filter for future searches Notify when a new version is available Substitua a pesquisa padrão do menu Iniciar do Windows pelo EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Ativa o ícone da bandeja do sistema para poder sair do EverythingToolbar facilmente Ícone de Pesquisa Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications O EverythingToolbar foi atualizado com sucesso para a versão {version}! If it makes your life easier, consider donating to support future updates. Donate Dispensar Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.pt.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versão Copiar Cópia Copiar o Nome Completo para a Área de Transferência Cortar Abrir Caminho aberto Mais opções Abrir com... Escolha a aplicação Colar Propriedades Executar como administrador Mostrar em Tudo Todo Arquivo Pasta Compacto Compacto (com detalhes) Normal Normal (detalhado) Alt Ctrl Shift Win Deseja copiar o conteúdo do erro para área de transferência? Erro Falha ao copiar o ficheiro. Falha ao copiar o caminho. Falha ao abrir o resultado da pesquisa. Falha ao abrir caixa de diálogo. Falha ao abrir o caminho. Falha ao registar a tecla de atalho: talvez já está em uso por outro aplicativo. Falha ao executar o comando Para utilizar este método de ordenação precisa de ter a ordenação rápida ativada. Pode ser ativado nas suas configurações de Tudo. A classificação rápida não está ativada Pelo menos uma expressão regular está inválida. Por favor, Selecione Everything.exe... Por favor, selecione o ficheiro Filters.csv. Por defeito pode ser encontrado em %APPDATA%\Everything. A sua localização pode ser diferente, dependendo da sua instalação. Se o ficheiro não existir para você, isso significa que você não realizou nenhuma alteração nos filtros padrão de Tudo. Filtros.csv não encontrado Unhandled exception occured Comando Nome Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Language Choose the UI language. Restart the application to apply changes. Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search Use System Language Restart required A restart is required for the language changes to take effect. Do you want to restart now? ================================================ FILE: EverythingToolbar/Properties/Resources.ro.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.ro.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Versiune Copiere Copiere Copiază Întreg Numele în Clipboard Tăiere Deschide Deschide Cale Arată opțiuni multiple Deschide cu Alege aplicație Lipire Proprietăți Rulați ca administrator Afișează în Everything Tot Fișier Dosar Compact Compact(detaliat) Normal Normal(detaliat) Executabil Poză Mai multe Video Alt Ctrl Shift Win Doriți copierea excepției in clipboard? Eroare Copiere fișier nereușită. Copiere cale nereușită. Deschidere a rezultatelor căutării nereușită. Deschidere a ferestrei nereușită. Deschidere a căii nereușită. Înregistrare hotkey nereușită. Ar putea fi folosită de către altă aplicație. Pentru a putea utiliza această metodă de sortare trebuie să aibă sortare rapidă activată. Poate fi activată în setările Everything. Sortarea rapidă nu este activată. Cel puțin una din expresiile regulate este invalidă. Numele regulii nu poate fi goală. Fișierul Filters.csv nu a fost găsit. A avut loc o excepție necontrolată Aplică reguli în mod automat în funcție de condiție Comandă Nume Salvare item itemuri Reguli Activare istoric căutare Caută cu Everything Despre EverythingToolbar... Schimbă Scurtătură... Dezactivează animații Ascunde căutare goală Potrivire Majuscule/Minuscule Memorează filtrul Înlocuiți căutarea în meniu de pornire (experimental) Afișați opțiunile rapide Afișați numărul de rezultate Show preview pane Potrivire Cuvânt Întreg Activare previzualizare Expresii Regulate Reguli... Proprietăți Data accesării Data creării Data modificării Data modificării recente Data rulării Extensie Nume fișier listă Nume Cale Număr rulări Dimensiune Nume Tip Mărime ascendent Mărime descendent Denumire tip ascendent Denumire tip descendent Audio Comprimat Document Actualizare disponibilă Omite Descarcă Verificați automat dacă există actualizări Selectează primul rezultat Home/End keys navigate results Dublu-clic pentru a deschide Descrescător Crescător Caută pe măsură ce tastezi Interfața utilizator Aspect Altele Comenzi rapide Comenzi rapide personalizate Alte comenzi rapide Deschide fereastra de căutare Navighează rezultatele căutării Navigați istoricul căutărilor (dacă este activat) Deschide Deschide calea Deschide în Everything Rulează ca administrator Proprietăți fișier Copiază calea completă în clip board Opțiuni filtre Selectare filtru Previzualizare fișier în QuickLook Panou principal Căutare Acțiuni personalizate Setări avansate Raportează o problema Setări de comportament Istoric Filtre Ștergeți istoricul Actualizări Verifică acum Descarcă cea mai recentă versiune Folosești deja cea mai recentă versiune. Denumire Instanță Numele instanțe Everything Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar Sortare După No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.ru.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.ru.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Версия Скопировать Скопировать Скопировать полное имя в буфер обмена Вырезать Открыть Открыть путь Больше настроек Открыть с помощью... Выбрать приложение Вставить Свойства Запуск от имени администратора Показать в Everything Все Файлы Папки Компактный Компактный (детально) Обычный Обычный (детально) Alt Ctrl Shift Win Скопировать описание исключения в буфер обмена? Ошибка Не удалось скопировать файл. Не удалось скопировать путь. Не удалось открыть результат поиска. Не удалось открыть окно. Не удалось открыть путь. Не удалось изменить сочетание клавиш. Возможно, оно используется в другом приложении. Не удалось выполнить команду Для использования этого метода сортировки требуется быстрая сортировка. Включите её в настройках Everything. Быстрая сортировка отключена Одно из регулярных выражений указано неверно Выберите файл Everything.exe... Выберите файл Filters.csv. По умолчанию он находится в папке %APPDATA%\Everything. Его расположение может отличаться в зависимости от пути установки. Если файл отсутствует, это означает, что вы не вносили никаких изменений в стандартные фильтры Everything. Filters.csv не найден Произошло необработанное исключение Команда Название Регулярное выражение Тип Используйте шаблоны %file%, %filename% и %path% в командах. Найти с помощью Everything элемент элем. Отключить анимации Включить историю поиска Не показывать результаты пустого запроса Учитывать регистр Учитывать путь Только слова целиком Настройки Регулярные выражения Запомнить фильтр Замена поиска меню "Пуск" (экспериментально) Показывать переключатели Показывать количество результатов Show preview pane Сортировка Показывать миниатюры Использовать фильтры Everything Вид Атрибуты Дата доступа Дата создания Дата изменения Дата последнего изменения Дата запуска Расширение Имя файла со списком файлов Имя Путь Количество запусков Размер Тип Аудио Архивы Документы Программы Картинки Другие Видео Есть обновление: Пропустить Загрузить Проверять обновления автоматически Выберите первый результат Навигация клавишами Home/End Двойной щелчок - открыть По убыванию По возрастанию Поиск при вводе Интерфейс Внешний вид Другое Горячие клавиши Свои горячие клавиши Другие горячие клавиши Открыть окно поиска Навигация по результатам поиска Навигация по истории поиска (если включена) Открыть Открыть путь Показать в Everything Запуск от имени администратора Свойства файла Скопировать полный путь в буфер обмена Циклически через фильтры Выбрать фильтр Просмотр файла в QuickLook Главная Поиск Свои действия Дополнительно Сообщить о проблеме Поведение История Фильтры Очистить Обновления Проверить Скачать последнюю версию У вас новейшая версия. Именованный экземпляр Имя экземпляра Everything Задать имя экземпляра Everything для использования Экземпляр по умолчанию Интеграция Everything в панель задач Windows. Настройки поиска Интерфейс Свои действия Ссылки Часто задаваемые вопросы Исходный код (GitHub) Поставить звезду на GitHub Поддержать Выберите макет для результатов поиска Показывать миниатюры изображений Показывать общее количество результатов поиска Показывать кнопки быстрого переключения в строке поиска Show a Start menu style side pane for the selected result File path Nothing selected Size Отключить анимацию интерфейса для повышения производительности Скрывать результаты при пустой строке поиска Начинать поиск по мере ввода, без нажатия Enter Автоматически выбирать первый результат, сохраняя активной строку поиска Клавиши Home/End будут перемещать результаты поиска, а не курсор Открывать результаты по двойному щелчку Запоминать условия предыдущего поиска для быстрого доступа Синхронизировать пользовательские фильтры Everything Запоминать последний фильтр для будущих поисков Уведомлять о наличии новой версии Заменить стандартный поиск в меню Windows на EverythingToolbar ОК Действия не определены Имя своего действия не может быть пустым. Автоматически применять действия, основанные на типе и регулярном выражении Интеграция с панелью задач Скрыть значок поиска Windows Скрывает исходный значок поиска Windows в панели задач Показывать значок в области уведомлений Показ значка в области уведомлений для быстрого выхода из EverythingToolbar Значок поиска Изменяет стиль значка в панели задач (требуется перезапуск проводника) Порядок фильтров Количество вкладок фильтрации Определяет количество видимых вкладок фильтра Использовать стили Windows 10 Использует стили Windows 10 для совпадения с некоторыми предыдущими модификациями панели задач Панель EverythingToolbar {version} успешно обновлена. Если этот продукт упрощает вам жизнь, финансово поддержите разработчиков! Поддержать Отказаться Открыть системное контекстное меню Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.sr.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.sr.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.sv.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.sv.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Kopiera Kopiera Kopiera fullständigt namn till urklipp Klipp ut Öppna Öppna sökväg Visa fler alternativ Öppna med... Välj program Klistra in Egenskaper Kör som administratör Visa i Everything Alla Fil Mapp Kompakt Kompakt (detaljerad) Normal Normal (detaljerad) Alt Ctrl Skift Win Vill du kopiera undantagets innehåll till urklipp? Fel Kunde inte kopiera fil. Kunde inte kopiera sökväg. Kunde inte öppna sökresultat. Kunde inte öppna dialogruta. Kunde inte öppna sökväg. Kunde inte registrera kortkommando. Används möjligen av ett annat program. Kunde inte köra kommando För att använda denna sorteringsmetod måste snabbsortering vara aktiverat. Detta kan aktiveras i inställningarna för Everything. Snabbsortering inte aktiverat Minst ett reguljärt uttryck är ogiltigt. Vänligen välj Everything.exe... Vänligen välj filen Filters.csv. Som standard finns den i %APPDATA%\Everything. Platsen kan variera beroende på din installation. Om filen inte existerar i ditt system betyder det att du inte utfört några ändringar i Everythings standardfilter. Filters.csv hittades inte Ohanterat undantag påträffades Kommando Namn Reguljära uttryck Typ Använd %file%, %filename% och %path% som variabler i kommandon. Sök med Everything objekt objekt Inaktivera animationer Aktivera sökhistorik Dölj tom sökning Matcha versaler/gemener Matcha sökväg Matcha hela ord Preferenser Reguljära uttryck Kom ihåg filter Ersätt sökning i startmenyn (experimentell) Visa snabbskiftning Visa resultatantal Show preview pane Sortera efter Aktivera miniatyrer Använd Everythings filter Visa Attribut Senast använd Skapad Senast ändrad Datum nyligen ändrat Senast kört Filändelse Filnamn för fillista Namn Sökväg Antal körningar Storlek Typnamn Ljud Komprimerad fil Dokument Körbar fil Bild Mer Video Uppdatering tillgänglig: Hoppa över Ladda ner Sök efter uppdateringar automatiskt Välj första resultatet Home/End keys navigate results Dubbelklicka för att öppna Fallande Stigande Sök när du skriver User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.tr.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.tr.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Sürüm Kopyala Kopyala Dosya ismini panoya kopyala Kes Klasörde Göster Daha fazla seçenek göster Birlikte aç... Uygulama seç Yapıştır Özellikler Yönetici olarak çalıştır Everything programı içinde göster Tümü Dosya Klasör Kompakt Kompakt (detaylı) Normal Normal (detaylı) Alt Ctrl Shift Windows Tuşu İstisna içeriğini panoya kopyalamak ister misiniz? Hata Dosya kopyalama başarısız. Klasör yolu kopyalama başarısız. Arama sonuçlarını açarken hata. Diyalogu açarken hata. Klasör yolunu açarken hata. Kısayol tuşunu kaydederken hata. Kısayol başka bir uygulama tarafından kullanılıyor olabilir. Komut çalıştırılamadı. Bu sıralama yöntemini kullanmak için hızlı sıralamayı aktifleştirmeniz gerekir. Bu ayarı Everything ayarlarından aktifleştirebilirsiniz. Hızlı sıralama aktif değil En az bir düzenli ifade geçersiz. Lütfen Everything.exe'yi seçiniz... Lütfen Filters.csv dosyasını seçiniz. Bu dosyayı %APPDATA%\Everything konumunda bulabilirsiniz. Kurulumunuza bağlı olarak dosyanın yeri farklı olabilir. Eğer bu dosya sizde bulunmuyorsa, bu Everything'in varsayılan filtrelerinde bir değişiklik yapmadığınız anlamına gelir. Filters.csv bulunamadı Beklenmeyen bir hata oluştu Komut İsim Düzenli ifade Tür Komutlarda yer tutucu olarak %file%, %filename% ve %path% kullanın. Her şeyi ara nesne nesneler Animasyonları devre dışı bırak Arama Geçmişini etkinleştir Boş arama'yı gizle Büyük-Küçük Harfe Duyarlı Klasör Yolu Eşleştir Tüm kelimeleri eşleştir Tercihler Düzenli ifadeler Filtreyi hatırla Başlat menüsü aramasında kullan (deneme aşamasında) Hızlı düğmeleri göster Sonuç sayısını göster Show preview pane Sıralama Ölçütü Küçük resimleri etkinleştir Everything filtrelerini kullan Göster Özellikler Erişim tarihi Oluşturulma tarihi Değiştirilme tarihi Yakın zamanda değiştirilenler Çalıştırılma tarihi Uzantı Dosya listesindeki dosya adı Ad Yol Çalıştırılma miktarı Boyut Dosya tipi adı Ses Sıkıştırılmış Belge Yürütülebilir dosyalar Görüntü Daha fazla Video Güncelleme mevcut: Atla İndir Güncellemeleri otomatik olarak kontrol et İlk sonucu seç Home/End keys navigate results Açmak için çift tıklayın Azalan Artan Yazarken ara Kullanıcı Arayüzü Görünüm Diğer Kısayollar Özel kısayollar Diğer kısayollar Arama penceresini aç Arama sonuçlarında gez Arama geçmişini gez (etkinleştirilmişse) Dizini aç Everything içinde Aç Yönetici olarak çalıştır Dosya özellikleri Dosya yolunu kopyala Filtreler arasında geçiş yapın Filtre seç QuickLook'ta dosyayı önizle Ana Sayfa Ara Özel Eylemler Gelişmiş Bir sorun bildir Davranış Geçmiş Filtreler Şimdi temizle Güncellemeler Kontrol Et En son sürümü indir Zaten en son sürümü kullanıyorsunuz. İsimlendirilmiş Örnek Everything örnek adı Everything örneğinin adını ayarla Varsayılan örnek Windows görev çubuğu için Everything entegrasyonu. Arama ayarları Kullanıcı Arayüzü Özel eylemler Bağlantılar Sıkça Sorulan Sorular Kaynak Kodu (GitHub) GitHub'da Yıldızla Bağış yap Arama sonuçları için düzeni seç Görüntü dosyaları için küçük resimleri göster Arama sonuçlarının toplam sayısını göster Arama çubuğunda arama seçenekleri için hızlı geçiş düğmelerini göster Show a Start menu style side pane for the selected result File path Nothing selected Size Performansı artırmak için UI animasyonlarını devre dışı bırak Arama çubuğu boş olduğunda sonuçları gizle Enter tuşuna basmadan, yazarken aramaya başla Arama çubuğuna odaklanarak ilk sonucu otomatik olarak seç Home/End keys will navigate search results instead of moving the cursor Sonuçları açmak için çift tıklama gerekir Hızlı erişim için önceki arama terimlerini hatırla Everything'in özel filtrelerini senkronize et Gelecekteki aramalar için en son kullanılan filtreyi hatırla Yeni sürüm çıktığında bildir Windows Başlat menüsü aramasını EverythingToolbar ile değiştir Tamam Tanımlı eylem yok Özel eylem adı boş olamaz. Eylemleri türe ve düzenli ifadeye göre otomatik olarak uygula Görev çubuğu entegrasyonu Windows arama simgesini gizle Görev çubuğundan orijinal Windows arama simgesini gizler Sistem tepsisi simgesini etkinleştir EverythingToolbar'dan kolayca çıkmak için sistem tepsisi simgesini etkinleştirir Arama simgesi Görev çubuğu simgesinin stilini değiştirir (Explorer'ın yeniden başlatılması gerekir) Filtre sırası Filtre sekmelerinin sayısı Görünen filtre sekmesi sayısını kontrol eder Windows 10 stillerini zorla Belirli eski görev çubuğu değişikliklerine uyması için Windows 10 stillerini kullanır EverythingToolbar {version} başarıyla güncellendi! Hayatınızı kolaylaştıracaksa, gelecekteki güncellemeleri desteklemek için bağış yapmayı düşünün. Bağış Yapın Kapat Bağlam menüsünü aç Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.ug.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 نەشرى كۆچۈرۈش كۆچۈرۈش تولۇق نامىنى كېسىش تاختىسىغا كۆچۈرۈش كېسىش ئېچىش يولىنى ئېچىش باشقا تاللانمىلارنى كۆرسىتىش بىلەن ئېچىش... ئەپ تاللاش چاپلاش خاسلىقلار باشقۇرغۇچى سالاھىيىتىدە ئىجرا قىلىش Everything دە كۆرسىتىش ھەممە ھۆججەت قىسقۇچ ئىخچام ئىخچام (تەپسىلىي) نورمال نورمال (تەپسىلىي) Alt Ctrl Shift Win نورمالسىزلىق مەزمۇنىنى كېسىش تاختىسىغا كۆچۈرەمسىز؟ خاتالىق ھۆججەتنى كۆچۈرەلمىدى. يولىنى كۆچۈرەلمىدى. ئىزدەش نەتىجىسىنى ئاچالمىدى. دىيالوگنى ئاچالمىدى. يولىنى ئاچالمىدى. تېزلەتمە كۇنۇپكىنى تىزىملىتالمىدى. بەلكىم باشقا دېتال ئىشلىتىۋاتقان بولۇشى مۇمكىن. بۇيرۇقنى ئىجرا قىلالمىدى بۇ تىزىش ئۇسۇلىنى ئىشلىتىش ئۈچۈن، تېز تىزىشنى قوزغىتىش كېرەك. بۇنى Everything نىڭ تەڭشىكىدىن قوزغاتقىلى بولىدۇ. تېز تىزىش قوزغىتىلمىدى كەم دېگەندە بىر مۇنتىزىم ئىپادە ئۈنۈمسىز. Everything.exe تاللاڭ... Filters.csv ھۆججىتىنى تاللاڭ. ئادەتتە %APPDATA%\Everything دىن تاپقىلى بولىدۇ. قاچىلىغىنىڭىزغا ئاساسەن ئورنى پەرقلىق بولۇشى مۇمكىن. ئەگەر بۇ ھۆججەت بولمىسا، Everything نىڭ سۈكۈتتىكى سۈزگۈچىگە ھېچقانداق ئۆزگەرتىش قىلمىغانلىقىڭىزنى بىلدۈرىدۇ. Filters.csv تېپىلمىدى بىرتەرەپ قىلىنمىغان نورمالسىزلىق كۆرۈلدى بۇيرۇق نامى مۇنتىزىم ئىپادە تىپى بۇيرۇقلاردا %file%، %filename% ۋە %path% لەرنى تولدۇرۇلما قىلىپ ئىشلىتىش. Everything بىلەن ئىزدەش ئەزا ئەزا ھەرىكەت ئۈنۈملىرىنى چەكلەش ئىزدەش تارىخىنى قوزغىتىش قۇرۇق ئىزدەشنى يوشۇرۇش چوڭلۇقى ماس كېلىش يولى ماس كېلىش پۈتۈن سۆز ماس كېلىش تاللانمىلار مۇنتىزىم ئىپادىلەر سۈزگۈچنى ئەستە ساقلاش باشلاش تىزىملىكىدىكى ئىزدەشنى ئالماشتۇرۇش (سىناق) تېز ئالماشتۇرغۇچنى كۆرسىتىش نەتىجىلەر سانىنى كۆرسىتىش Show preview pane تىزىش شەكلى سىنبەلگىلەرنى قوزغىتىش Everything نىڭ سۈزگۈچلىرىنى ئىشلىتىش كۆرۈنۈش Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name ئۈن پىرېسلانغان ھۆججەت ئىجرا بولىدىغان رەسىم تېخىمۇ كۆپ سىن Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar ماقۇل No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.uk.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.uk.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Версія Копіювати Копіювати Скопіювати повну назву в буфер обміну Вирізати Відкрити Відкрити шлях Показати додаткові параметри Відкрити за допомогою... Вибрати програму Вставити Властивості Запустити як адміністратор Показати в Everything Усі Файл Тека Компактний Компактний (детально) Звичайний Звичайний (детально) Alt Ctrl Shift Win Ви хочете скопіювати помилку у буфер обміну? Помилка Не вдалося скопіювати файл. Не вдалося скопіювати шлях. Не вдалось відкрити результат пошуку. Не вдалося відкрити діалогове вікно. Не вдалося відкрити шлях. Не вдалося зареєструвати скорочення клавіш. Можливо, воно використовується іншою програмою. Не вдалося виконати команду Щоб використовувати цей метод сортування, потрібно ввімкнути швидке сортування. Його можна ввімкнути у налаштуваннях Everything. Швидке сортування не увімкнено Якийсь регулярний вираз неправильний. Будь ласка, виберіть Everything.exe... Будь ласка, виберіть файл Filters.csv. Він зазвичай знаходиться у %APPDATA%\Everything. Його знаходження може відрізнятися. Якщо файлу нема, ви не вносили ніяких змін у стандартні фільтри Everything. Filters.csv не знайдено Сталася непередбачена помилка Команда Назва Регулярний вираз Тип Використовуйте %file%, %filename% та %path% як заповнювачі у командах. Шукати за допомогою Everything об’єкт об’єкти Вимкнути анімації Увімкнути історію пошуку Не показувати результати пустого запиту Враховувати регістр Враховувати шлях Шукати ціле слово Налаштування Регулярні вирази Запам'ятати фільтр Замінити пошук в меню "Пуск" (експериментально) Показувати перемикачі Показувати кількість результатів Show preview pane Сортувати за Увімкнути ескізи Використовувати фільтри Everything Вигляд Атрибути Дата доступу Дата створення Дата змінення Дата нещодавніх змін Дата виконання Розширення Ім'я списку файлів Ім'я Шлях Кількість виконань Розмір Введіть ім'я Аудіо Архіви Документи Програми Зображення Інші Відео Доступне оновлення: Пропустити Завантажити Автоматично перевіряти наявність оновлень Вибирати перший результат Home/End використовуються для навігації результатами пошуку Подвійний клік, щоб відкрити За спаданням За зростанням Пошук при наборі Користувацький інтерфейс Зовнішній вигляд Інше Гарячі клавіші Користувацькі гарячі клавіші Інші гарячі клавіші Відкрити вікно пошуку Навігація результатами пошуку Навігація історією пошуку (якщо ввімкнено) Відкрити Відкрити шлях Відкрити в Everything Запустити як адміністратор Властивості файлу Скопіювати повний шлях до буфера обміну Перемикання фільтрів Оберіть фільтр Попередній перегляд файлу в QuickLook Головна Пошук Користувацькі дії Розширені Повідомити про проблему Поведінка Історія Фільтри Очистити зараз Оновлення Перевірити зараз Завантажити останню версію Ви вже використовуєте останню версію. Іменований екземпляр Ім'я екземпляра Everything Встановіть ім'я використовуваного екземпляра Everything Default instance Everything integration for the Windows taskbar. Налаштування пошуку Інтерфейс користувача Custom actions Посилання Поширені запитання Джерело коду (GitHub) Поставити зірочку на GitHub Зробити внесок Виберіть макет для результатів пошуку Показувати мініатюри для файлів зображень Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Вимкнути анімацію інтерфейсу для підвищення продуктивності Приховати результати, якщо пошуковий запит порожній Починати пошук під час введення тексту, не натискаючи Enter Автоматично вибирати перший результат, залишаючи фокус на панелі пошуку Home/End keys will navigate search results instead of moving the cursor Потрібен подвійний клік для відкривання результату Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK Не визначено жодних дій A custom action name cannot be empty. Автоматично застосовувати дії на основі типу та регулярного виразу Інтеграція з панеллю завдань Сховати піктограму пошуку Windows Приховує оригінальну піктограму пошуку Windows з панелі завдань Відображати піктограму в системному треї Enables the system tray icon to be able to quit EverythingToolbar easily Піктограма пошук Змінює стиль піктограми панелі завдань (потрібно перезапустити Провідник) Порядок фільтрів Number of filter tabs Controls the number of visible filter tabs Примусово застосувати стилі Windows 10 Використовує стилі Windows 10 для відповідності певним застарілим змінам панелі завдань EverythingToolbar {version} було успішно оновлено! Якщо це полегшить ваше життя, зробіть внесок для підтримки майбутніх оновлень. Підтримати Відхилити Відкрити системне контекстне меню Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.uz.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Version Copy Copy Copy Full Name to Clipboard Cut Open Open Path Show more options Open with... Choose app Paste Properties Run as admin Show in Everything All File Folder Compact Compact (detailed) Normal Normal (detailed) Alt Ctrl Shift Win Do you want to copy the exception content to clipboard? Error Failed to copy file. Failed to copy path. Failed to open search result. Failed to open dialog. Failed to open path. Failed to register hotkey. It might be in use by another application. Failed to run command To utilize this sorting method it has to have fast sorting enabled. It can be enabled in your Everything settings. Fast sorting not enabled At least one regular expression is invalid. Please select Everything.exe... Please select the Filters.csv file. By default it can be found in %APPDATA%\Everything. Its location might be different depending on your installation. If the file does not exist for you that means you didn't perform any changes to Everything's default filters. Filters.csv not found Unhandled exception occured Command Name Regular Expression Type Use %file%, %filename% and %path% as placeholders in commands. Search with Everything object objects Disable animations Enable search history Hide empty search Match Case Match Path Match Whole Word Preferences Regular Expressions Remember filter Replace start menu search (experimental) Show quick toggles Show results count Show preview pane Sort By Enable thumbnails Use Everything filters View Attributes Date accessed Date created Date modified Date recently changed Date run Extension File list filename Name Path Run count Size Type name Audio Compressed Document Executable Picture More Video Update available: Skip Download Check for updates automatically Select first result Home/End keys navigate results Double-click to open Descending Ascending Search as you type User Interface Appearance Other Shortcuts Custom shortcuts Other shortcuts Open search window Navigate search results Navigate search history (if enabled) Open Open path Open in Everything Run as admin File properties Copy full path to clipboard Cycle through filters Select filter Preview file in QuickLook Home Search Custom Actions Advanced Report a problem Behavior History Filters Clear now Updates Check now Download latest version You are already using the latest version. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings User interface Custom actions Links Frequently Asked Questions Source Code (GitHub) Star on GitHub Make a donation Choose the layout for search results Show thumbnails for image files Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.vi.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.vi.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Phiên bản Sao Chép Sao Chép Sao chép tên đầy đủ vào bộ nhớ tạm Cắt Mở Mở đường dẫn Hiển thị thêm tùy chọn Mở bằng... Chọn ứng dụng Dán Thuộc tính Chạy với quyền admin Hiện trong Everything Tất cả Tệp Thư mục Thu gọn Thu gọn (chi tiết) Bình thường Bình thường (chi tiết) Alt Ctrl Shift Win Bạn có muốn sao chép nội dung ngoại lệ tới bộ nhớ tạm? Lỗi Sao chép tệp tin thất bại. Sao chép đường dẫn tệp tin thất bại. Không thể mở kết quả tìm kiếm. Mở hộp thoại thất bại. Mở đường dẫn thất bại. Đăng ký phím thất bại. Có vẻ như nút đó đã được sử dụng bởi chương trình khác. Chạy lệnh thất bại Để tận dụng phương pháp sắp xếp này, tùy chọn sắp xếp nhanh phải được bật. Nó có thể được bật trong cài đặt phần mềm Everything của bạn. Sắp xếp nhanh không được bật Ít nhất một cú pháp không hợp pháp. Vui lòng chọn Everything.exe... Vui lòng chọn tệp Filters.csv. Mặc định, nó có thể được tìm ở %APPDATA%\Everything. Vị trí của nó có thể khác biệt dựa trên bản cài đặt của bạn. Nếu tệp này không có sẵn cho bạn thì có nghĩa rằng bạn chưa thay đổi gì tới bộ lọc mặc định của Everything. Không tìm thấy Filters.csv Ngoại lệ ngoài ý muốn đã xảy ra Lệnh Tên Cú pháp thường dùng Kiểu Dùng %file%, %filename% và %path% làm khung giữ chỗ trong các lệnh. Tìm kiếm bằng Everything đối tượng đối tượng Tắt hiệu ứng Bật lịch sử tìm kiếm Ẩn kết quả tìm kiếm trống Khớp chữ hoa/thường Khớp đường dẫn Khớp toàn bộ từ Tùy chọn Cú pháp thường dùng Ghi nhớ bộ lọc Thay thế thanh tìm kiếm của start menu (thử nghiệm) Hiển thị công tắc nhanh Hiển thị số đếm kết quả Show preview pane Sắp xếp theo Bật hình nhỏ Sử dụng bộ lọc của Everything Hiển thị Thuộc tính Ngày truy cập Ngày tạo Ngày chỉnh sửa Ngày thay đổi gần đây Ngày chạy Đuôi tên tệp Tên tệp danh sách tập tin Tên Sao chép đường dẫn Số lần chạy Kích cỡ Tên loại tệp Âm thanh Tệp nén Tài liệu Phần mềm Hình ảnh Thêm Video Có bản cập nhật: Bỏ qua Tải về Tự động kiểm tra bản cập nhật mới Chọn kết quả đầu tiên Home/End keys navigate results Nhấp đúp để mở Giảm dần Tăng dần Tìm kiếm trong lúc nhập Giao diện người dùng Giao diện Khác Phím tắt Phím tắt tùy chỉnh Phím tắt khác Open search window Navigate search results Navigate search history (if enabled) Mở Mở đường dẫn Mở bằng Everything Chạy với tư cách quản trị viên Thuộc tính của tệp Chép đường dẫn tệp vào bộ nhớ tạm Cycle through filters Chọn bộ lọc Preview file in QuickLook Trang chủ Tìm kiếm Custom Actions Nâng cao Báo cáo vấn đề Behavior Lịch sử Bộ lọc Clear now Cập nhật Kiểm tra ngay Tải phiên bản mới nhất Bạn đang sử dụng phiên bản mới nhất. Named Instance Everything instance name Set the name of the Everything instance to use Default instance Everything integration for the Windows taskbar. Search settings Giao diện người dùng Custom actions Liên kết Các câu hỏi thường gặp Mã nguồn (GitHub) Star on GitHub Quyên góp Choose the layout for search results Hiện hình thu nhỏ cho các tệp hình ảnh Display the total number of search results Show quick toggle buttons for search options in the search bar Show a Start menu style side pane for the selected result File path Nothing selected Size Disable UI animations for improved performance Hide results when search term is empty Start searching as you type, without pressing Enter Automatically select the first result while keeping the search bar focused Home/End keys will navigate search results instead of moving the cursor Require double-click to open results Remember previous search terms for quick access Synchronize Everything's custom filters Remember the most recently used filter for future searches Notify when a new version is available Replace the default Windows Start menu search with EverythingToolbar OK No actions defined A custom action name cannot be empty. Automatically apply actions based on type and regular expression Taskbar integration Hide Windows search icon Hides the original Windows search icon from the taskbar Enable system tray icon Enables the system tray icon to be able to quit EverythingToolbar easily Search icon Changes the style of the taskbar icon (requires explorer restart) Filter order Number of filter tabs Controls the number of visible filter tabs Force Windows 10 styles Uses Windows 10 styles to match certain legacy taskbar modifications EverythingToolbar {version} was updated successfully! If it makes your life easier, consider donating to support future updates. Donate Dismiss Open system context menu Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/Resources.zh-Hans.Designer.cs ================================================ ================================================ FILE: EverythingToolbar/Properties/Resources.zh-Hans.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 版本 复制 复制 将全名复制到剪贴板 剪切 打开 打开路径 显示更多选项 打开方式…… 选择应用 粘贴 属性 以管理员身份运行 在Everything中显示 所有 文件 文件夹 紧凑 紧凑(详细) 普通 普通(详细) Alt Ctrl Shift Win 是否要将异常内容复制到剪贴板? 错误 无法复制文件。 复制路径失败。 打开搜索结果失败。 打开对话框失败。 打开路径失败。 注册热键失败。它可能正在被另一个应用程序使用。 命令执行失败 要使用此排序方法,必须启用快速排序。可以在Everything设置中启用它。 未启用快速排序 至少有一个正则表达式无效。 请选择 Everything.exe…… 请选择Filters.csv文件。默认情况下,它可以在%APPDATA%\Everything中找到。根据您的安装设置,它的位置可能不同。 未找到Filters.csv 发生未处理的异常 命令 名称 正则表达式 类型 在命令中使用%file%、%filename%和%path%作为占位符。 用 Everything 搜索 个对象 个对象 禁用动画 启用搜索历史 隐藏空搜索 区分大小写 匹配路径 全字匹配 选项 正则表达式 记住过滤规则 替换开始菜单搜索(实验性) 显示快速开关 显示结果数 Show preview pane 排序 启用缩略图 使用Everything筛选器 视图 属性 访问日期 创建日期 修改日期 最近修改日期 运行日期 扩展名 文件列表文件名 文件名 路径 运行次数 大小 类型名称 音频 压缩文件 文档 可执行文件 图片 更多 视频 有可用更新: 跳过 下载 自动检查更新 选择第一个结果 Home/End 键导航结果列表 双击打开 降序 升序 键入时搜索 用户界面 外观 其他 快捷键 自定义快捷键 其他快捷键 打开搜索窗口 导航搜索结果 导航搜索历史(若启用) 打开 打开路径 在Everything中显示 以管理员身份运行 文件属性 复制文件路径到剪贴板 通过筛选器循环 选择筛选器 在 QuickLook 中预览文件 首页 搜索 自定义操作 高级选项 反馈问题 行为 历史 筛选器 立即清除 更新 立即检查 下载最新版本 您已经在使用最新版本。 命名实例 Everything实例名称 设置要使用的Everything实例的名称 默认实例 Windows 任务栏的Everything集成 搜索设置 用户界面 自定义操作 链接 常见问题解答 源代码 (GitHub) 在Github上star 捐助 选择搜索结果的布局 显示图像文件缩略图 显示搜索结果总数 在搜索栏显示快速切换搜索选项按钮 Show a Start menu style side pane for the selected result File path Nothing selected Size 禁用界面动画以提高性能 当搜索词为空时隐藏结果 按您的键入开始搜索,而不需按回车键 保持搜索栏焦点时自动选择第一个结果 Home/End 键将在搜索结果间跳转,而非移动文本光标 需要双击以打开结果 记住上一个快速访问的搜索词 同步Everything自定义过滤器 记住最近使用的筛选器以便将来搜索 当有新版本时通知 使用 EverythingToolbar 替换默认 Windows 开始菜单搜索 确定 未定义操作 自定义操作名称不能为空。 自动应用基于类型和正则表达式的操作 任务栏集成 隐藏 Windows 搜索图标 从任务栏隐藏原始的 Windows 搜索图标 启用系统托盘图标 启用系统托盘图标可以轻松退出 EverythingToolbar 搜索图标 更改任务栏图标的样式 (需要重新启动文件管理器) 过滤器顺序 过滤器标签数量 控制可见过滤选项卡的数量 强制Windows10样式 使用 Windows 10 样式来匹配某些旧任务栏的修改 EverythingToolbar {version} 更新成功! 如果它使您的生活更容易,考虑捐赠以支持未来的更新。 捐助 忽略 打开系统上下文菜单 结果列表焦点移动方式 控制使用方向键浏览搜索结果时焦点的移动方式 边界停止 首尾循环 循环并刷新搜索 ================================================ FILE: EverythingToolbar/Properties/Resources.zh.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 版本 複製 複製 複製完整名稱至剪貼簿 剪下 開啟 開啟路徑 顯示更多選項 開啟方式... 選擇應用程式 貼上 內容 以管理員身分執行 在 Everything 中顯示 全部 檔案 資料夾 緊湊 緊湊 (詳細) 一般 一般 (詳細) Alt 鍵 Ctrl 鍵 Shift 鍵 Windows 鍵 是否要將異常內容複製到剪貼簿? 錯誤 無法複製檔案。 無法複製路徑。 無法開啟搜尋結果。 無法開啟對話方塊。 無法開啟路徑。 無法註冊快速鍵,它可能已被其他應用程式占用。 命令執行失敗 要使用此排序方式,需先啟用快速排序功能。可在 Everything 設定中啟用該選項。 未啟用快速排序 至少有一個正規表示式無效。 請選擇 Everything.exe... 請選擇 Filters.csv文件。預設情況下,它可以在 %APPDATA%\Everything 中找到。依據您的安裝設定,存放位置可能不同。 找不到 Filters.csv 發生未處理的異常 命令 檔名 正規表示式 類型 在命令中使用 %file%、%filename% 和 %path% 作為佔位符。 使用 Everything 搜尋 目標 目標 禁用動畫效果 開啟搜尋記錄 隱藏空的搜尋 區分大小寫 路徑相符 全字相符 偏好設定 正規表示式 儲存篩選條件 替換開始選單搜尋(實驗性) 顯示快速開關 顯示結果計數 Show preview pane 排序依 啟用縮圖 使用 Everything 篩選器 檢視 屬性 最後存取日期 建立日期 最後修改日期 近期變更 最後執行日期 副檔名 檔案清單檔案名稱 檔名 路徑 執行次數 檔案大小 檔案類型 音訊 壓縮檔 文件 執行檔 圖片 更多 影片 可用更新: 跳過 下載 自動檢查更新 選擇第一個結果 Home/End keys navigate results 按兩下開啟 降序 升序 隨打即搜 使用者介面 外觀 其他 快速鍵 自訂快速鍵 其他快速鍵 開啟新搜尋視窗 導航搜尋結果 導航搜尋歷史紀錄 (若啟用) 開啟 開啟路徑 在 Everything 中開啟 以系統管理員身分執行 檔案內容 複製檔案名稱至剪貼簿 透過篩選器循環 選取篩選器 在 QuickLook 中預覽 主頁 搜尋 自訂動作 進階 回報問題 行為 歷史紀錄 篩選器 立即清除 更新 立即檢查 下載最新版本 您目前使用的是最新版本。 命名實例 Everything 實例名稱 設定要使用的 Everything 實例名稱 預設實例 Windows 工作列的 Everything 整合功能。 搜尋設定 使用者介面 自訂動作 連結 常見問題 原始碼 (GitHub) 在 GitHub 上 Star 支持 選擇搜尋結果的顯示版面配置 顯示圖片檔案的縮圖 顯示搜尋結果總數 在搜尋列中顯示快速切換搜尋選項按鈕 Show a Start menu style side pane for the selected result File path Nothing selected Size 停用介面動畫以提升效能 當搜尋詞為空時隱藏結果 輸入時立即搜尋,無需按 Enter 鍵 在搜尋列保持聚焦狀態時自動選取第一個結果 Home/End keys will navigate search results instead of moving the cursor 需要按兩下才能開啟搜尋結果 記住先前搜尋詞彙以便快速取用 同步 Everything 的自訂篩選器 記住最近使用的篩選器供後續搜尋使用 當有新版本時發出通知 使用 EverythingToolbar 替換 Windows 開始選單的預設搜尋功能 確定 未定義動作 自訂動作名稱不可為空白。 依檔案類型與正規表示式自動執行對應動作 工作列整合功能 隱藏 Windows 搜尋圖示 隱藏工作列上原有的 Windows 搜尋圖示 啟用系統匣圖示 啟用系統匣圖示以便快速關閉 EverythingToolbar 搜尋圖示 變更工作列圖示樣式(需重新啟動檔案總管) 篩選器順序 篩選器分頁數量 控制可見篩選分頁的顯示數量 強制使用 Windows 10 風格 使用 Windows 10 風格以相容特定舊版工作列修改 EverythingToolbar {version} 更新成功! 若這個工具讓您的日常使用更便利,歡迎贊助以支持後續的開發更新。 贊助 忽略 開啟系統右鍵選單 Result list focus Controls how the focus behaves when navigating the result list Clamp Repeat Repeat with search ================================================ FILE: EverythingToolbar/Properties/app.manifest ================================================  ================================================ FILE: EverythingToolbar/Search/IItemsProvider.cs ================================================ using System.Collections.Generic; using System.ComponentModel; using System.Threading.Tasks; namespace EverythingToolbar.Search { public interface IItemsProvider : INotifyPropertyChanged { bool IsBusy { get; } Task FetchCount(int pageSize, bool isAsync); Task> FetchRange(int startIndex, int pageSize, bool isAsync); } } ================================================ FILE: EverythingToolbar/Search/SearchResultProvider.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Threading; using EverythingToolbar.Controls; using EverythingToolbar.Data; using EverythingToolbar.Helpers; using EverythingToolbar.Properties; using NLog; using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME; namespace EverythingToolbar.Search { public class SearchResultProvider : IItemsProvider { private class QueryQueueItem { public QueryType Type { get; } public int StartIndex { get; } public TaskCompletionSource CountCompletionSource { get; } = null!; public TaskCompletionSource> RangeCompletionSource { get; } = null!; public QueryQueueItem(TaskCompletionSource completionSource) { Type = QueryType.Count; CountCompletionSource = completionSource; } public QueryQueueItem(TaskCompletionSource> completionSource, int startIndex) { Type = QueryType.Range; StartIndex = startIndex; RangeCompletionSource = completionSource; } public void Cancel() { if (Type == QueryType.Count) CountCompletionSource.TrySetCanceled(); else RangeCompletionSource.TrySetCanceled(); } } private readonly SearchState _searchState; private readonly TaskScheduler _taskScheduler; private static readonly ILogger Logger = ToolbarLogger.GetLogger(); private static readonly object SyncLock = new(); private static readonly Queue QueryQueue = new(); private static QueryQueueItem? _currentQuery; private static IntPtr _responseWindowHandle; private static bool _initialized; private static bool _firstPageAvailable; private bool _isBusy; public bool IsBusy { get => _isBusy; private set { if (_isBusy != value) { _isBusy = value; OnPropertyChanged(nameof(IsBusy)); } } } public SearchResultProvider(SearchState searchState, SynchronizationContext synchronizationContext) { _searchState = searchState; _taskScheduler = new SynchronizationContextTaskScheduler(synchronizationContext); if (!_initialized) _initialized = Initialize(); } private static void InitializeAsyncResponseWindow() { if (_responseWindowHandle == IntPtr.Zero) { const int gwlpWndproc = -4; const IntPtr hwndMessage = -3; // Create a message-only window to receive IPC messages _responseWindowHandle = NativeMethods.CreateWindowEx( 0, "STATIC", null!, 0, 0, 0, 0, 0, hwndMessage, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero ); if (_responseWindowHandle != IntPtr.Zero) { NativeMethods.SetWindowLongPtr( _responseWindowHandle, gwlpWndproc, Marshal.GetFunctionPointerForDelegate(HandleWindowMessage) ); } else { Logger.Error("Failed to create IPC response window."); return; } } Everything_SetReplyWindow(_responseWindowHandle); } private void ClearQueryQueue() { if (_currentQuery != null) { _currentQuery.Cancel(); _currentQuery = null; } while (QueryQueue.Count > 0) { QueryQueue.Dequeue().Cancel(); } } private static void ProcessNextQuery() { lock (SyncLock) { if (_currentQuery != null || QueryQueue.Count == 0) return; _currentQuery = QueryQueue.Dequeue(); switch (_currentQuery.Type) { case QueryType.Count: Everything_SetOffset(0); Everything_SetReplyID((uint)QueryType.Count); break; case QueryType.Range: Everything_SetOffset((uint)_currentQuery.StartIndex); Everything_SetReplyID((uint)QueryType.Range); break; } if (!Query(isAsync: true)) { if (_currentQuery.Type == QueryType.Count) _currentQuery.CountCompletionSource.TrySetResult(0); else _currentQuery.RangeCompletionSource.TrySetResult(new List()); _currentQuery = null; // Try to process the next query in queue Dispatcher.CurrentDispatcher.BeginInvoke(ProcessNextQuery); } } } private static IntPtr HandleWindowMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) { lock (SyncLock) { if (Everything_IsQueryReply(msg, wParam, lParam, (uint)QueryType.Count)) { // We remember the first page query to avoid querying it again when actually fetching data _firstPageAvailable = true; var resultsCount = (int)Everything_GetTotResults(); if (_currentQuery?.Type == QueryType.Count) { var completionSource = _currentQuery.CountCompletionSource; _currentQuery = null; Dispatcher.CurrentDispatcher.BeginInvoke(() => { completionSource.TrySetResult(resultsCount); ProcessNextQuery(); }); } return 1; } if (Everything_IsQueryReply(msg, wParam, lParam, (uint)QueryType.Range)) { IList results = GetResultsFromEverythingQuery(); if (_currentQuery?.Type == QueryType.Range) { var completionSource = _currentQuery.RangeCompletionSource; _currentQuery = null; Dispatcher.CurrentDispatcher.BeginInvoke(() => { completionSource.TrySetResult(results); ProcessNextQuery(); }); } return 1; } } return NativeMethods.DefWindowProc(hWnd, msg, wParam, lParam); } private static IList GetResultsFromEverythingQuery() { var results = new List(); var fullPathAndFilename = new StringBuilder(4096); for (uint i = 0; i < Everything_GetNumResults(); i++) { var highlightedPath = Marshal.PtrToStringUni(Everything_GetResultHighlightedPath(i)); var highlightedFileName = Marshal.PtrToStringUni(Everything_GetResultHighlightedFileName(i)); var isFile = Everything_IsFileResult(i); Everything_GetResultFullPathNameW(i, fullPathAndFilename.Clear(), 4096); Everything_GetResultSize(i, out var fileSize); Everything_GetResultDateModified(i, out var dateModified); results.Add( new SearchResult { HighlightedPath = highlightedPath ?? "", HighlightedFileName = highlightedFileName ?? "", FullPathAndFileName = fullPathAndFilename.ToString(), IsFile = isFile, DateModified = dateModified, FileSize = fileSize, } ); } return results; } public Task FetchCount(int pageSize, bool isAsync) { lock (SyncLock) { var search = _searchState.BuildSearchTerm(); Everything_SetSearchW(search); Everything_SetRequestFlags( (uint)( Flags.FullPathAndFileName | Flags.HighlightedPath | Flags.HighlightedFileName | Flags.RequestSize | Flags.RequestDateModified ) ); SetSortType(_searchState.SortBy, _searchState.IsSortDescending); Everything_SetMatchCase(_searchState.IsMatchCase); Everything_SetMatchPath(_searchState.IsMatchPath); Everything_SetMatchWholeWord(_searchState is { IsMatchWholeWord: true, IsRegExEnabled: false }); Everything_SetRegex(_searchState.IsRegExEnabled); Everything_SetMax((uint)pageSize); // Clear all existing queries since we're starting a new search ClearQueryQueue(); if (isAsync) { IsBusy = true; var countCompletionSource = new TaskCompletionSource(); var countQuery = new QueryQueueItem(countCompletionSource); QueryQueue.Enqueue(countQuery); Dispatcher.CurrentDispatcher.BeginInvoke(ProcessNextQuery); countCompletionSource.Task.ContinueWith(_ => IsBusy = false, _taskScheduler); return countCompletionSource.Task; } else { IsBusy = true; Everything_SetOffset(0); int result = 0; if (Query(isAsync: false)) result = (int)Everything_GetTotResults(); IsBusy = false; return Task.FromResult(result); } } } public Task> FetchRange(int startIndex, int pageSize, bool isAsync) { lock (SyncLock) { if (_firstPageAvailable && startIndex == 0) { return Task.FromResult(GetResultsFromEverythingQuery()); } if (isAsync) { IsBusy = true; var rangeCompletionSource = new TaskCompletionSource>(); var rangeQuery = new QueryQueueItem(rangeCompletionSource, startIndex); QueryQueue.Enqueue(rangeQuery); Dispatcher.CurrentDispatcher.BeginInvoke(ProcessNextQuery); rangeCompletionSource.Task.ContinueWith(_ => IsBusy = false, _taskScheduler); return rangeCompletionSource.Task; } else { IsBusy = true; Everything_SetOffset((uint)startIndex); IList result; if (Query(isAsync: false)) result = GetResultsFromEverythingQuery(); else result = new List(); IsBusy = false; return Task.FromResult(result); } } } private static bool Query(bool isAsync) { if (isAsync) InitializeAsyncResponseWindow(); _firstPageAvailable = false; if (!Everything_QueryW(!isAsync)) { LogLastError(); return false; } return true; } private static void LogLastError() { ErrorCode lastError = (ErrorCode)Everything_GetLastError(); switch (lastError) { case ErrorCode.ErrorMemory: Logger.Error("Failed to allocate memory for the search query."); break; case ErrorCode.ErrorIpc: Logger.Error( "IPC is not available. Is Everything running? If not, go to www.voidtools.com and download Everything." ); break; case ErrorCode.ErrorRegisterClassEx: Logger.Error("Failed to register the search query window class."); break; case ErrorCode.ErrorCreateWindow: Logger.Error("Failed to create the search query window."); break; case ErrorCode.ErrorCreateThread: Logger.Error("Failed to create the search query thread."); break; case ErrorCode.ErrorInvalidIndex: Logger.Error("Invalid index."); break; case ErrorCode.ErrorInvalidCall: Logger.Error("Invalid call."); break; case ErrorCode.Ok: break; default: throw new ArgumentOutOfRangeException( nameof(lastError), lastError, "Got invalid Everything error code." ); } } private static bool Initialize() { SetInstanceName(ToolbarSettings.User.InstanceName); Version version = GetEverythingVersion(); if ( version.Major > 1 || version is { Major: 1, Minor: > 4 } || version is { Major: 1, Minor: 4, Build: >= 1 } ) { Logger.Info("Everything version: {major}.{minor}.{build}", version.Major, version.Minor, version.Build); return true; } if ( version is { Major: 0, Minor: 0, Build: 0 } && (ErrorCode)Everything_GetLastError() == ErrorCode.ErrorIpc ) { LogLastError(); Logger.Error("Failed to get Everything version number."); } else { Logger.Error( "Everything version {major}.{minor}.{build} is not supported.", version.Major, version.Minor, version.Build ); } return false; } public static Version GetEverythingVersion() { uint major = Everything_GetMajorVersion(); uint minor = Everything_GetMinorVersion(); uint revision = Everything_GetRevision(); return new Version((int)major, (int)minor, (int)revision); } public static void SetInstanceName(string name) { if (name != string.Empty) Logger.Info("Setting Everything instance name: " + name); Everything_SetInstanceName(name); } [Flags] private enum Flags : uint { FullPathAndFileName = 0x00000004, HighlightedFileName = 0x00002000, HighlightedPath = 0x00004000, RequestSize = 0x00000010, RequestDateModified = 0x00000040, } [Flags] private enum ErrorCode { Ok, ErrorMemory, ErrorIpc, ErrorRegisterClassEx, ErrorCreateWindow, ErrorCreateThread, ErrorInvalidIndex, ErrorInvalidCall, } public static void IncrementRunCount(string path) { Everything_IncRunCountFromFileName(path); } private static uint CalculateEverythingSortType(int sortBy, bool descending) { var descendingOffset = descending ? 1 : 0; var sortType = sortBy * 2 + descendingOffset + 1; return (uint)sortType; } private static void SetSortType(int sortBy, bool descending) { var sortType = CalculateEverythingSortType(sortBy, descending); Everything_SetSort(sortType); } public static bool GetIsFastSort(int sortBy, bool descending) { var everythingSortType = CalculateEverythingSortType(sortBy, descending); return Everything_IsFastSort(everythingSortType); } public static void OpenSearchInEverything(SearchState searchState, string filenameToHighlight = "") { if (!File.Exists(ToolbarSettings.User.EverythingPath)) { FluentMessageBox.CreateRegular(Resources.MessageBoxSelectEverythingExe, string.Empty).ShowDialogAsync(); using var openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "Everything.exe|Everything.exe|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { ToolbarSettings.User.EverythingPath = openFileDialog.FileName; } else { return; } } var searchTerm = searchState.BuildSearchTerm(); var args = ""; if (!string.IsNullOrEmpty(ToolbarSettings.User.InstanceName)) args += " -instance \"" + ToolbarSettings.User.InstanceName + "\""; if (!string.IsNullOrEmpty(filenameToHighlight)) args += " -select \"" + filenameToHighlight + "\""; if (searchState.SortBy == 0) args += " -sort \"Name\""; else if (searchState.SortBy == 1) args += " -sort \"Path\""; else if (searchState.SortBy == 2) args += " -sort \"Size\""; else if (searchState.SortBy == 3) args += " -sort \"Extension\""; else if (searchState.SortBy == 4) args += " -sort \"Type name\""; else if (searchState.SortBy == 5) args += " -sort \"Date created\""; else if (searchState.SortBy == 6) args += " -sort \"Date modified\""; else if (searchState.SortBy == 7) args += " -sort \"Attributes\""; else if (searchState.SortBy == 8) args += " -sort \"File list filename\""; else if (searchState.SortBy == 9) args += " -sort \"Run count\""; else if (searchState.SortBy == 10) args += " -sort \"Date recently changed\""; else if (searchState.SortBy == 11) args += " -sort \"Date accessed\""; else if (searchState.SortBy == 12) args += " -sort \"Date run\""; args += searchState.IsSortDescending ? " -sort-descending" : " -sort-ascending"; args += searchState.IsMatchCase ? " -case" : " -nocase"; args += searchState.IsMatchPath ? " -matchpath" : " -nomatchpath"; args += searchState.IsMatchWholeWord && !searchState.IsRegExEnabled ? " -ww" : " -noww"; args += searchState.IsRegExEnabled ? " -regex" : " -noregex"; args += " -s \"" + searchTerm.Replace("\"", "\"\"") + "\""; Logger.Debug("Showing in Everything with args: " + args); Process.Start(ToolbarSettings.User.EverythingPath, args); } public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private enum QueryType : uint { Count = 0, Range = 1, } [DllImport("Everything64.dll", CharSet = CharSet.Unicode)] private static extern uint Everything_SetSearchW(string lpSearchString); [DllImport("Everything64.dll", CharSet = CharSet.Unicode)] private static extern uint Everything_SetInstanceName(string lpInstanceName); [DllImport("Everything64.dll")] private static extern void Everything_SetMatchPath(bool bEnable); [DllImport("Everything64.dll")] private static extern void Everything_SetMatchCase(bool bEnable); [DllImport("Everything64.dll")] private static extern void Everything_SetMatchWholeWord(bool bEnable); [DllImport("Everything64.dll")] private static extern void Everything_SetRegex(bool bEnable); [DllImport("Everything64.dll")] private static extern void Everything_SetMax(uint dwMax); [DllImport("Everything64.dll")] private static extern void Everything_SetOffset(uint dwOffset); [DllImport("Everything64.dll")] private static extern bool Everything_QueryW(bool bWait); [DllImport("Everything64.dll")] private static extern uint Everything_GetNumResults(); [DllImport("Everything64.dll")] private static extern uint Everything_GetTotResults(); [DllImport("Everything64.dll", CharSet = CharSet.Unicode)] private static extern void Everything_GetResultFullPathNameW( uint nIndex, StringBuilder lpString, uint nMaxCount ); [DllImport("Everything64.dll")] private static extern void Everything_SetSort(uint dwSortType); [DllImport("Everything64.dll")] private static extern void Everything_SetRequestFlags(uint dwRequestFlags); [DllImport("Everything64.dll", CharSet = CharSet.Unicode)] private static extern IntPtr Everything_GetResultHighlightedFileName(uint nIndex); [DllImport("Everything64.dll")] private static extern uint Everything_IncRunCountFromFileName(string lpFileName); [DllImport("Everything64.dll", CharSet = CharSet.Unicode)] private static extern IntPtr Everything_GetResultHighlightedPath(uint nIndex); [DllImport("Everything64.dll")] private static extern bool Everything_IsFileResult(uint nIndex); [DllImport("Everything64.dll")] private static extern uint Everything_GetLastError(); [DllImport("Everything64.dll")] private static extern uint Everything_GetMajorVersion(); [DllImport("Everything64.dll")] private static extern uint Everything_GetMinorVersion(); [DllImport("Everything64.dll")] private static extern uint Everything_GetRevision(); [DllImport("Everything64.dll")] private static extern bool Everything_IsFastSort(uint sortType); [DllImport("Everything64.dll")] private static extern bool Everything_GetResultSize(UInt32 nIndex, out long lpFileSize); [DllImport("Everything64.dll")] private static extern bool Everything_GetResultDateModified(UInt32 nIndex, out FILETIME lpFileTime); [DllImport("Everything64.dll")] private static extern void Everything_SetReplyWindow(IntPtr hwnd); [DllImport("Everything64.dll")] private static extern void Everything_SetReplyID(uint id); [DllImport("Everything64.dll")] private static extern bool Everything_IsQueryReply(uint message, IntPtr wParam, IntPtr lParam, long nId); } } ================================================ FILE: EverythingToolbar/Search/SearchState.cs ================================================ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; using EverythingToolbar.Data; using EverythingToolbar.Helpers; namespace EverythingToolbar.Search { public sealed class SearchState : INotifyPropertyChanged { public static readonly SearchState Instance = new(); private string _searchTerm = ""; public string SearchTerm { get => _searchTerm; set { if (_searchTerm != value) { _searchTerm = value; OnPropertyChanged(); } } } private int _sortBy = ToolbarSettings.User.SortBy; public int SortBy { get => _sortBy; private set { if (_sortBy != value) { _sortBy = value; OnPropertyChanged(); } } } private bool _isSortDescending = ToolbarSettings.User.IsSortDescending; public bool IsSortDescending { get => _isSortDescending; private set { if (_isSortDescending != value) { _isSortDescending = value; OnPropertyChanged(); } } } private bool _isMatchCase = ToolbarSettings.User.IsMatchCase; public bool IsMatchCase { get => _isMatchCase; private set { if (_isMatchCase != value) { _isMatchCase = value; OnPropertyChanged(); } } } private bool _isMatchPath = ToolbarSettings.User.IsMatchPath; public bool IsMatchPath { get => _isMatchPath; private set { if (_isMatchPath != value) { _isMatchPath = value; OnPropertyChanged(); } } } private bool _isMatchWholeWord = ToolbarSettings.User.IsMatchWholeWord; public bool IsMatchWholeWord { get => _isMatchWholeWord; private set { if (_isMatchWholeWord != value) { _isMatchWholeWord = value; OnPropertyChanged(); } } } private bool _isRegExEnabled = ToolbarSettings.User.IsRegExEnabled; public bool IsRegExEnabled { get => _isRegExEnabled; private set { if (_isRegExEnabled != value) { _isRegExEnabled = value; OnPropertyChanged(); } } } private Filter _currentFilter = FilterLoader.Instance.GetInitialFilter(); public Filter Filter { get => _currentFilter; set { if (!_currentFilter.Equals(value)) { _currentFilter = value; ToolbarSettings.User.LastFilter = value.Name; OnPropertyChanged(); } } } private SearchState() { ToolbarSettings.User.PropertyChanged += OnSettingsChanged; } public void Reset() { if (ToolbarSettings.User.IsEnableHistory) HistoryManager.Instance.AddToHistory(SearchTerm); else SearchTerm = ""; Filter = FilterLoader.Instance.GetInitialFilter(); } public void CycleFilters(int offset = 1) { var filterCount = FilterLoader.Instance.Filters.Count; var currentIndex = FilterLoader.Instance.Filters.IndexOf(Filter); var newIndex = (currentIndex + offset + filterCount) % filterCount; Filter = FilterLoader.Instance.Filters[newIndex]; } public void SelectFilterFromIndex(int index) { if (index < 0 || index >= FilterLoader.Instance.Filters.Count) return; Filter = FilterLoader.Instance.Filters[index]; } private string ApplyMacros(string searchTerm) { var result = searchTerm; foreach (var f in FilterLoader.Instance.Filters) { if (string.IsNullOrEmpty(f.Macro)) continue; result = result.Replace(f.Macro + ":", f.Search + " "); } var defaultMacros = new Dictionary { // Macros quot:, gt: and lt: are not supported by the SDK { "apos:", "'" }, { "amp:", "&" }, }; foreach (var defaultMacro in defaultMacros) { result = result.Replace(defaultMacro.Key, defaultMacro.Value); } return result; } public string BuildSearchTerm() { var rawSearchTerm = Filter.GetSearchPrefix() + SearchTerm; var searchTermWithAppliedMacros = ApplyMacros(rawSearchTerm); return searchTermWithAppliedMacros; } private void OnSettingsChanged(object? sender, PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(ToolbarSettings.User.SortBy): SortBy = ToolbarSettings.User.SortBy; break; case nameof(ToolbarSettings.User.IsSortDescending): IsSortDescending = ToolbarSettings.User.IsSortDescending; break; case nameof(ToolbarSettings.User.IsMatchCase): IsMatchCase = ToolbarSettings.User.IsMatchCase; break; case nameof(ToolbarSettings.User.IsMatchPath): IsMatchPath = ToolbarSettings.User.IsMatchPath; break; case nameof(ToolbarSettings.User.IsMatchWholeWord): IsMatchWholeWord = ToolbarSettings.User.IsMatchWholeWord; break; case nameof(ToolbarSettings.User.IsRegExEnabled): IsRegExEnabled = ToolbarSettings.User.IsRegExEnabled; break; case nameof(ToolbarSettings.User.IsHideEmptySearchResults): SearchTerm = ""; OnPropertyChanged(nameof(SearchTerm)); break; } } public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } ================================================ FILE: EverythingToolbar/Search/SynchronizationContextTaskScheduler.cs ================================================ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace EverythingToolbar.Search { public class SynchronizationContextTaskScheduler(SynchronizationContext? synchronizationContext) : TaskScheduler { protected override void QueueTask(Task task) { if (synchronizationContext != null) { synchronizationContext.Post(_ => TryExecuteTask(task), null); } else { // Fallback to thread pool if no synchronization context Task.Run(() => TryExecuteTask(task)); } } protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued) { return SynchronizationContext.Current == synchronizationContext && TryExecuteTask(task); } protected override IEnumerable GetScheduledTasks() { return []; } } } ================================================ FILE: EverythingToolbar/Search/VirtualizingCollection.cs ================================================ using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace EverythingToolbar.Search { public sealed class VirtualizingCollection : IList, IList, INotifyCollectionChanged, INotifyPropertyChanged { public VirtualizingCollection( IItemsProvider itemsProvider, int pageSize, SynchronizationContext currentSynchronizationContext ) { _taskScheduler = new SynchronizationContextTaskScheduler(currentSynchronizationContext); PageSize = pageSize; ItemsProvider = itemsProvider; ItemsProvider.PropertyChanged += OnItemsProviderPropertyChanged; LoadCount(); } private readonly TaskScheduler _taskScheduler; private int _providerVersion; private int PageSize { get; } private int _count; public int Count { get => _count; private set { _count = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); OnPropertyChanged(); } } private bool _isAsync = true; public bool IsAsync { get => _isAsync; set { _isAsync = value; OnPropertyChanged(); } } private IItemsProvider ItemsProvider { get; set; } public bool IsBusy => ItemsProvider.IsBusy; public void UpdateProvider(IItemsProvider newProvider) { if (ItemsProvider == newProvider) return; _pages = new Dictionary?>(); ItemsProvider.PropertyChanged -= OnItemsProviderPropertyChanged; ItemsProvider = newProvider; ItemsProvider.PropertyChanged += OnItemsProviderPropertyChanged; _providerVersion++; LoadCount(); } private void OnItemsProviderPropertyChanged(object? sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(IsBusy)) { OnPropertyChanged(nameof(IsBusy)); } } public event PropertyChangedEventHandler? PropertyChanged; private void OnPropertyChanged([CallerMemberName] string? propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public event NotifyCollectionChangedEventHandler? CollectionChanged; private void OnCollectionChanged(NotifyCollectionChangedEventArgs e) { CollectionChanged?.Invoke(this, e); } private void LoadCount() { var currentProviderVersion = _providerVersion; if (IsAsync) { ItemsProvider .FetchCount(PageSize, isAsync: true) .ContinueWith( task => { if (currentProviderVersion != _providerVersion || task.IsCanceled) return; Count = task.Result; }, CancellationToken.None, TaskContinuationOptions.None, _taskScheduler ); } else { Count = ItemsProvider.FetchCount(PageSize, isAsync: false).GetAwaiter().GetResult(); } } private List LoadPage(int index) { var items = ItemsProvider.FetchRange(index * PageSize, PageSize, isAsync: false).GetAwaiter().GetResult(); var page = new List(items); return page; } private void LoadPageAsync(int index) { var currentProviderVersion = _providerVersion; ItemsProvider .FetchRange(index * PageSize, PageSize, isAsync: true) .ContinueWith( task => { if (task.IsCanceled) { _pages.Remove(index); // Page needs to be loaded again in the future return; } if (currentProviderVersion != _providerVersion) return; List? newItems = task.Result as List; _pages[index] = newItems; try { for (int i = 0; i < newItems?.Count; i++) { var itemIndex = index * PageSize + i; if (_displayedItems.TryGetValue(itemIndex, out var oldItem)) { OnCollectionChanged( new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Replace, newItems[i], oldItem, itemIndex ) ); } } } catch (Exception) { // For various internal reasons, the collection changed event can throw exceptions. // Whenever this happens, we reset the collection to recover from the error. OnCollectionChanged( new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset) ); } }, CancellationToken.None, TaskContinuationOptions.None, _taskScheduler ); } public T this[int index] { get { var item = GetItemAtIndex(index); _displayedItems[index] = item; return item; } set => throw new NotSupportedException(); } private T GetItemAtIndex(int index) { var pageIndex = index / PageSize; var pageOffset = index % PageSize; if (_pages.TryGetValue(pageIndex, out var page)) { if (page != null && pageOffset < page.Count) { return page[pageOffset]; } // Page is null (is currently loading) if (_displayedItems.TryGetValue(index, out var displayedItem)) { return displayedItem; } return default!; } if (IsAsync) { _pages[pageIndex] = null; // Mark page as loading LoadPageAsync(pageIndex); // Return the old item and let the async operation update it later if (_displayedItems.TryGetValue(index, out var displayedItem)) return displayedItem; return default!; } else { var loadedPage = LoadPage(pageIndex); _pages[pageIndex] = loadedPage; if (pageOffset < loadedPage.Count) { return loadedPage[pageOffset]; } return default!; } } object? IList.this[int index] { get => this[index]; set => throw new NotSupportedException(); } public IEnumerator GetEnumerator() { // We return an empty enumerator to prevent WPF internals from iterating through the collection. return Enumerable.Empty().GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public void Add(T item) { throw new NotSupportedException(); } int IList.Add(object? value) { throw new NotSupportedException(); } bool IList.Contains(object? value) { return Contains((T)value!); } public bool Contains(T item) { return false; } public void Clear() { throw new NotSupportedException(); } int IList.IndexOf(object? value) { return IndexOf((T)value!); } public int IndexOf(T item) { // We want to prevent WPF internals from searching for an item by iterating through the collection. // Returning -1 would trigger a full collection scan, but returning 0 is sufficient to prevent that. return 0; } public void Insert(int index, T item) { throw new NotSupportedException(); } void IList.Insert(int index, object? value) { Insert(index, (T)value!); } public void RemoveAt(int index) { throw new NotSupportedException(); } void IList.Remove(object? value) { throw new NotSupportedException(); } public bool Remove(T item) { throw new NotSupportedException(); } public void CopyTo(T[] array, int arrayIndex) { throw new NotSupportedException(); } void ICollection.CopyTo(Array array, int index) { throw new NotSupportedException(); } public object SyncRoot => this; public bool IsSynchronized => false; public bool IsReadOnly => true; public bool IsFixedSize => false; private Dictionary?> _pages = new(); private readonly Dictionary _displayedItems = new(); } } ================================================ FILE: EverythingToolbar/SearchWindow.xaml ================================================