refactor: remove deprecated Win7 compatibility, refactor background worker and file observation, UTF-32 detection

This commit is contained in:
Rainer Kottenhoff 2026-03-05 15:55:07 +01:00
parent a01144225f
commit bc97ba45b1
87 changed files with 544 additions and 373 deletions

View File

@ -33,7 +33,7 @@ function DebugOutput($msg)
try
{
$AppName = "Notepad3"
$Major = 6
$Major = 7
$Minor = [int]$(Get-Date -format yy)
$Revis = [int]$(Get-Date -format Mdd)

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_af_za.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by dialogs_be_by.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by np3_de_de.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by strings_en_us.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_es_es.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_fr_fr.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by strings_hu_hu.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by np3_it_it.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch strings_ja_jp.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by menu_ko_kr.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by dialogs_nl_nl.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_pl_pl.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch encode_pt_br.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by dialogs_ru_ru.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_sk_sk.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_sv_se.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch menu_tr_tr.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch strings_zh_cn.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch np3_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -322,7 +322,7 @@
<WarningLevel>Level4</WarningLevel>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -358,7 +358,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -401,7 +401,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -442,7 +442,7 @@
<WarningLevel>Level4</WarningLevel>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -476,7 +476,7 @@
<WarningLevel>Level4</WarningLevel>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -513,7 +513,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -555,7 +555,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -597,7 +597,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@ -640,7 +640,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;SCI_LEXER;_CRT_SECURE_NO_WARNINGS;STATIC_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>

View File

@ -3,10 +3,10 @@
// Used by mp_af_za.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by dialogs_be_by.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_de_de.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by np3_en_us.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_hu_hu.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp__it_it.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_ja_jp.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_ko_kr.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_pl_pl.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_pt_br.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by dialogs_ru_ru.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Verwendet durch menu_sk_sk.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_sv_se.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -3,10 +3,10 @@
// Used by mp_en_gb.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// Next default values for new objects

View File

@ -24,10 +24,7 @@
</asmv3:application>
<ms_compatibility:compatibility xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" xmlns="urn:schemas-microsoft-com:compatibility.v1">
<ms_compatibility:application xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1">
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 / Windows 11 -->
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</ms_compatibility:application>
</ms_compatibility:compatibility>

View File

@ -14,10 +14,10 @@
* *
*******************************************************************************/
#include <sdkddkver.h>
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#define _WIN32_IE 0x0700
#define OEMRESOURCE // use OBM_ resource constants
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1

View File

@ -13,7 +13,10 @@
* *
* *
*******************************************************************************/
#define _WIN32_WINNT 0x601
#include <sdkddkver.h>
#ifndef _WIN32_WINNT
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#include <windows.h>
#include <commctrl.h>
#include <process.h>
@ -99,7 +102,18 @@ BOOL DirList_Init(HWND hwnd,LPCWSTR pszHeader)
// Icon thread control
lpdl->hExitThread = CreateEvent(NULL,TRUE,FALSE,NULL);
if (!lpdl->hExitThread) {
RemoveProp(hwnd,pDirListProp);
GlobalFree(lpdl);
return FALSE;
}
lpdl->hTerminatedThread = CreateEvent(NULL,TRUE,TRUE,NULL);
if (!lpdl->hTerminatedThread) {
CloseHandle(lpdl->hExitThread);
RemoveProp(hwnd,pDirListProp);
GlobalFree(lpdl);
return FALSE;
}
UNUSED(pszHeader);
@ -120,8 +134,12 @@ BOOL DirList_Destroy(HWND hwnd)
// Release multithreading objects
DirList_TerminateIconThread(hwnd);
CloseHandle(lpdl->hExitThread);
CloseHandle(lpdl->hTerminatedThread);
if (lpdl->hExitThread) {
CloseHandle(lpdl->hExitThread);
}
if (lpdl->hTerminatedThread) {
CloseHandle(lpdl->hTerminatedThread);
}
if (lpdl->pidl) {
CoTaskMemFree(lpdl->pidl);

View File

@ -13,8 +13,13 @@
* *
* *
*******************************************************************************/
#define _WIN32_WINNT 0x601
#include <sdkddkver.h>
#ifndef _WIN32_WINNT
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#include <ole2.h>
//#include <strsafe.h>
#include "DropSource.h"

View File

@ -13,14 +13,15 @@
* *
* *
*******************************************************************************/
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
//~#define VC_EXTRALEAN 1
//~#define WIN32_LEAN_AND_MEAN 1
@ -155,6 +156,9 @@ BOOL ExeNameFromWnd(HWND hwnd,LPWSTR szExeName,int cchExeName)
{*/
GetWindowThreadProcessId(hwnd,&dwProcessId);
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,dwProcessId);
if (!hProcess) {
return FALSE;
}
/*GetProcAddress(hPSAPI,"EnumProcessModules")*/ EnumProcessModules(hProcess,&hModule,sizeof(HMODULE),&cbNeeded);
/*GetProcAddress(hPSAPI,"GetModuleFileNameExW")*/ GetModuleFileNameExW(hProcess,hModule,szExeName,cchExeName);
CloseHandle(hProcess);

View File

@ -13,7 +13,10 @@
* *
* *
*******************************************************************************/
#define _WIN32_WINNT 0x601
#include <sdkddkver.h>
#ifndef _WIN32_WINNT
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
@ -82,7 +85,7 @@ HWND hwndDirList;
HWND hwndMain;
HANDLE hChangeHandle = NULL;
HANDLE hChangeHandle = INVALID_HANDLE_VALUE;
HISTORY g_mHistory;
@ -803,7 +806,10 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
// Terminate directory watching
KillTimer(hwnd,ID_TIMER);
FindCloseChangeNotification(hChangeHandle);
if (hChangeHandle != INVALID_HANDLE_VALUE) {
FindCloseChangeNotification(hChangeHandle);
hChangeHandle = INVALID_HANDLE_VALUE;
}
// GetWindowPlacement
wndpl.length = sizeof(WINDOWPLACEMENT);
@ -907,7 +913,7 @@ CASE_WM_CTLCOLOR_SET:
case WM_TIMER:
// Check Change Notification Handle
if (WAIT_OBJECT_0 == WaitForSingleObject(hChangeHandle,0)) {
if (hChangeHandle != INVALID_HANDLE_VALUE && WAIT_OBJECT_0 == WaitForSingleObject(hChangeHandle,0)) {
// Store information about currently selected item
DLITEM dli;
dli.mask = DLI_ALL;
@ -1550,7 +1556,7 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance)
// Theme = false (!) ~ you cannot change a toolbar's color when a visual style is active
InitWindowCommon(hwndReBar, !(IsWindows10OrGreater() && IsDarkModeSupported()));
InitWindowCommon(hwndReBar, !IsDarkModeSupported());
#ifdef D_NP3_WIN10_DARK_MODE
if (IsDarkModeSupported()) {
@ -1575,7 +1581,7 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance)
rbBand.hbmBack = NULL;
rbBand.lpText = L"Toolbar";
rbBand.clrFore = GetModeTextColor(UseDarkMode());
rbBand.clrBack = IsWindows10OrGreater() ? GetModeBkColor(UseDarkMode()) : GetModeBtnfaceColor(UseDarkMode());
rbBand.clrBack = GetModeBkColor(UseDarkMode());
rbBand.hwndChild = hwndToolbar;
rbBand.cxMinChild = (rc.right - rc.left) * COUNTOF(tbbMainWnd);
rbBand.cyMinChild = (rc.bottom - rc.top) + 2 * rc.top;
@ -1587,7 +1593,7 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance)
cyReBar = rc.bottom - rc.top;
cyReBarFrame = bIsAppThemed ? 0 : 2;
cyDriveBoxFrame = (bIsAppThemed && IsWindowsVistaOrGreater()) ? 0 : 2;
cyDriveBoxFrame = bIsAppThemed ? 0 : 2;
}
@ -2274,7 +2280,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
SHFileOperation(&shfos);
// Check if there are any changes in the directory, then update!
if (WAIT_OBJECT_0 == WaitForSingleObject(hChangeHandle,0)) {
if (hChangeHandle != INVALID_HANDLE_VALUE && WAIT_OBJECT_0 == WaitForSingleObject(hChangeHandle,0)) {
SendWMCommand(hwnd, IDM_VIEW_UPDATE);
if (iItem > 0) {
iItem--;
@ -3231,7 +3237,9 @@ BOOL ChangeDirectory(HWND hwnd,LPCWSTR lpszNewDir,BOOL bUpdateHistory)
}
// setup new change notification handle
FindCloseChangeNotification(hChangeHandle);
if (hChangeHandle != INVALID_HANDLE_VALUE) {
FindCloseChangeNotification(hChangeHandle);
}
hChangeHandle = FindFirstChangeNotification(Settings.szCurDir,FALSE,
FILE_NOTIFY_CHANGE_FILE_NAME | \
FILE_NOTIFY_CHANGE_DIR_NAME | \

View File

@ -3,10 +3,10 @@
// Used by minipath.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#define IDR_RT_MANIFEST 1

View File

@ -6,5 +6,5 @@
// legen Sie das _WIN32_WINNT-Makro auf die zu unterstützende Plattform fest, bevor Sie "SDKDDKVer.h" einschließen.
#include <WinSDKVer.h>
#define _WIN32_WINNT 0x500
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#include <SDKDDKVer.h>

View File

@ -109,7 +109,7 @@
<MinimalRebuild>false</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;WIN32;STATIC_BUILD;SCI_LEXER;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;WIN32;STATIC_BUILD;SCI_LEXER;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -173,7 +173,7 @@
<MinimalRebuild>false</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;SCI_LEXER;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;SCI_LEXER;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -233,7 +233,7 @@
<AdditionalIncludeDirectories>.\;..\scintilla\include;..\scintilla\lexlib;..\scintilla\src;..\sciXlexers;..\ced\ced;..\uchardet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;WIN32;STATIC_BUILD;SCI_LEXER;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;WIN32;STATIC_BUILD;SCI_LEXER;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>
@ -301,7 +301,7 @@
<AdditionalIncludeDirectories>.\;..\scintilla\include;..\scintilla\lexlib;..\scintilla\src;..\sciXlexers;..\ced\ced;..\uchardet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;SCI_LEXER;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;SCI_LEXER;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>

View File

@ -25,10 +25,7 @@
</asmv3:application>
<ms_compatibility:compatibility xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" xmlns="urn:schemas-microsoft-com:compatibility.v1">
<ms_compatibility:application xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1">
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 / Windows 11 -->
<ms_compatibility:supportedOS xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</ms_compatibility:application>
</ms_compatibility:compatibility>

View File

@ -214,7 +214,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<SmallerTypeCheck>false</SmallerTypeCheck>
@ -245,7 +245,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<SmallerTypeCheck>false</SmallerTypeCheck>
@ -276,7 +276,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<SmallerTypeCheck>false</SmallerTypeCheck>
@ -309,7 +309,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -345,7 +345,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -380,7 +380,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -416,7 +416,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -452,7 +452,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -489,7 +489,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>

View File

@ -121,7 +121,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<SmallerTypeCheck>false</SmallerTypeCheck>
@ -149,7 +149,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<SmallerTypeCheck>false</SmallerTypeCheck>
@ -176,7 +176,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<WholeProgramOptimization>true</WholeProgramOptimization>
@ -202,7 +202,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_SCL_SECURE_NO_WARNINGS;NO_CXX11_REGEX;SCI_OWNREGEX;PCRE2_CODE_UNIT_WIDTH=8;PCRE2_STATIC;HAVE_CONFIG_H;SCINTILLA_DLL;NP3;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;SCI_LEXER;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<WholeProgramOptimization>true</WholeProgramOptimization>

View File

@ -16,16 +16,18 @@
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Minimum platform is Windows 7
#define WINVER 0x0601
#include <sdkddkver.h>
#ifndef WINVER // Minimum platform is Windows 10
#define WINVER _WIN32_WINNT_WIN10
#endif
#ifndef _WIN32_WINNT // Minimum platform is Windows 7
#define _WIN32_WINNT 0x0601
#ifndef _WIN32_WINNT // Minimum platform is Windows 10
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#ifndef _WIN32_WINDOWS // Minimum platform is Windows 7
#define _WIN32_WINDOWS 0x0601
#ifndef _WIN32_WINDOWS // Minimum platform is Windows 10
#define _WIN32_WINDOWS _WIN32_WINNT_WIN10
#endif

View File

@ -12,14 +12,15 @@
* *
* *
*******************************************************************************/
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
#if (defined(_DEBUG) || defined(DEBUG)) && !defined(NDEBUG)

View File

@ -22,6 +22,7 @@
#define DBG_NEW new
#endif
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <Windows.h>
@ -55,18 +56,7 @@
#ifdef D_NP3_WIN10_DARK_MODE
#ifndef LOAD_LIBRARY_SEARCH_SYSTEM32
#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800
#endif
#if _WIN32_WINNT < _WIN32_WINNT_WIN8
DWORD const kSystemLibraryLoadFlags = (IsWindows8Point1OrGreater() ||
GetProcAddress(GetModuleHandle(L"kernel32.dll"), "SetDefaultDllDirectories"))
? LOAD_LIBRARY_SEARCH_SYSTEM32
: 0;
#else
#define kSystemLibraryLoadFlags LOAD_LIBRARY_SEARCH_SYSTEM32
#endif
// ============================================================================

View File

@ -1357,6 +1357,40 @@ bool EditLoadFile(
// --------------------------------------------------------------------------
if (encDetection.bIsUTF32) {
// UTF-32 is not supported — convert through ANSI codepage for binary display
// (same conversion path that other binary files use via EXTERNAL_8BIT)
status->iEncoding = CPI_ANSI_DEFAULT;
UINT const uCodePage = Encoding_GetCodePage(CPI_ANSI_DEFAULT);
LPWSTR const lpDataWide = AllocMem(cbData * 2 + 16, HEAP_ZERO_MEMORY);
ptrdiff_t const cbDataWide = MultiByteToWideCharEx(uCodePage, 0, lpData, cbData,
lpDataWide, (SizeOfMem(lpDataWide) / sizeof(WCHAR)));
if (cbDataWide != 0) {
FreeMem(lpData);
lpData = AllocMem(cbDataWide * 3 + 16, HEAP_ZERO_MEMORY);
cbData = WideCharToMultiByteEx(Encoding_SciCP, 0, lpDataWide, cbDataWide,
lpData, SizeOfMem(lpData), NULL, NULL);
if (cbData != 0) {
EditSetNewText(hwnd, lpData, cbData, bClearUndoHistory, bReloadFile);
EditDetectEOLMode(lpData, cbData, status);
FreeMem(lpDataWide);
} else {
FreeMem(lpDataWide);
EditSetNewText(hwnd, "", 0, bClearUndoHistory, bReloadFile);
}
} else {
FreeMem(lpDataWide);
EditSetNewText(hwnd, "", 0, bClearUndoHistory, bReloadFile);
}
status->iEOLMode = Settings.DefaultEOLMode;
FreeMem(lpData);
InfoBoxLng(MB_ICONWARNING, L"MsgUTF32Unsupported", IDS_MUI_ERR_ENCODINGNA);
goto observe;
}
// --------------------------------------------------------------------------
if (Flags.bDevDebugMode) {
#if TRUE
SetAdditionalTitleInfo(Encoding_GetTitleInfo());

View File

@ -698,8 +698,35 @@ int Encoding_GetNameW(const cpi_enc_t iEncoding, LPWSTR buffer, size_t cwch)
// ============================================================================
bool Has_UTF32_LE_BOM(const char* pBuf, size_t cnt)
{
// UTF-32 LE BOM: FF FE 00 00
return (pBuf && cnt >= 4 &&
(unsigned char)pBuf[0] == 0xFF && (unsigned char)pBuf[1] == 0xFE &&
(unsigned char)pBuf[2] == 0x00 && (unsigned char)pBuf[3] == 0x00);
}
// ----------------------------------------------------------------------------
bool Has_UTF32_BE_BOM(const char* pBuf, size_t cnt)
{
// UTF-32 BE BOM: 00 00 FE FF
return (pBuf && cnt >= 4 &&
(unsigned char)pBuf[0] == 0x00 && (unsigned char)pBuf[1] == 0x00 &&
(unsigned char)pBuf[2] == 0xFE && (unsigned char)pBuf[3] == 0xFF);
}
// ----------------------------------------------------------------------------
bool Has_UTF32_BOM(const char* pBuf, size_t cnt)
{
return (Has_UTF32_LE_BOM(pBuf, cnt) || Has_UTF32_BE_BOM(pBuf, cnt));
}
// ----------------------------------------------------------------------------
bool Has_UTF16_LE_BOM(const char* pBuf, size_t cnt)
{
if (Has_UTF32_LE_BOM(pBuf, cnt)) {
return false; // UTF-32 LE BOM starts with FF FE — must not match as UTF-16 LE
}
int iTest = IS_TEXT_UNICODE_SIGNATURE;
bool const ok = IsTextUnicode(pBuf, clampi((int)cnt, 0, 4), &iTest);
return (ok && ((iTest & IS_TEXT_UNICODE_SIGNATURE) != 0));

View File

@ -121,6 +121,10 @@ const char* Encoding_GetParseNames(const cpi_enc_t iEncoding);
int Encoding_GetNameA(const cpi_enc_t iEncoding, char* buffer, size_t cch);
int Encoding_GetNameW(const cpi_enc_t iEncoding, LPWSTR buffer, size_t cwch);
bool Has_UTF32_LE_BOM(const char* pBuf, size_t cnt);
bool Has_UTF32_BE_BOM(const char* pBuf, size_t cnt);
bool Has_UTF32_BOM(const char* pBuf, size_t cnt);
bool Has_UTF16_LE_BOM(const char* pBuf, size_t cnt);
bool Has_UTF16_BE_BOM(const char* pBuf, size_t cnt);
bool Has_UTF16_BOM(const char *pBuf, size_t cnt);
@ -193,12 +197,13 @@ typedef struct _enc_det_t {
bool bIsUTF8Sig;
bool bValidUTF8;
bool bPureASCII7Bit;
bool bIsUTF32;
char encodingStrg[64];
} ENC_DET_T;
#define INIT_ENC_DET_T { CPI_NONE, CPI_NONE, CPI_NONE, CPI_NONE, CPI_NONE, 0.0f, false, false, false, false, false, false, "" }
#define INIT_ENC_DET_T { CPI_NONE, CPI_NONE, CPI_NONE, CPI_NONE, CPI_NONE, 0.0f, false, false, false, false, false, false, false, "" }
ENC_DET_T Encoding_DetectEncoding(const HPATHL hpath, const char* lpData, const size_t cbData,

View File

@ -13,14 +13,15 @@
* *
* *
*******************************************************************************/
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
#if (defined(_DEBUG) || defined(DEBUG)) && !defined(NDEBUG)
@ -797,6 +798,7 @@ void Encoding_AnalyzeText(const char* const text, const size_t len,
//~cpiEncoding_CED = AnalyzeText_CED(text, len, encodingHint, &ced_cnf, encodingStrg_CED, MAX_ENC_STRG_LEN);
//~if (ced_cnf < 1.0f)
//~{
cpiEncoding_UCD = AnalyzeText_UCHARDET(text, len, &confidence_UCD, pEncDetInfo->encodingStrg, COUNTOF(pEncDetInfo->encodingStrg));
//~}
@ -807,6 +809,7 @@ void Encoding_AnalyzeText(const char* const text, const size_t len,
#endif
#if FALSE
// --- re-mapping UCD ----
switch (Encoding_GetCodePage(cpiEncoding_UCD)) {
@ -815,18 +818,18 @@ void Encoding_AnalyzeText(const char* const text, const size_t len,
cpiEncoding_UCD = Encoding_GetByCodePage(1252); // auto detect default ANSI (!)
break;
/*
case 54936:
if ((codePage_CED == 936) || (codePage_CED == 20936))
{
cpiEncoding_UCD = cpiEncoding_CED; // trust CED's choice
}
break;
*/
//case 54936:
// if ((codePage_CED == 936) || (codePage_CED == 20936))
// {
// cpiEncoding_UCD = cpiEncoding_CED; // trust CED's choice
// }
// break;
default:
break;
}
#endif
// UCARDET does not rely on encodingHint, so make a bias here
confidence_UCD += (cpiEncoding_UCD == encodingHint) ? (1.0f - confidence_UCD) / 2.0f : 0.0f;
@ -1265,6 +1268,19 @@ extern "C" ENC_DET_T Encoding_DetectEncoding(const HPATHL hpath, const char* lpD
FileVars_GetFromData(lpData, cbData, &Globals.fvCurFile);
// --- Check for UTF-32 BOM first (unsupported encoding) ---
if (Has_UTF32_BOM(lpData, cbData)) {
encDetRes.bIsUTF32 = true;
encDetRes.bHasBOM = true;
encDetRes.Encoding = CPI_PREFERRED_ENCODING;
StringCchCopyA(encDetRes.encodingStrg, COUNTOF(encDetRes.encodingStrg),
Has_UTF32_BE_BOM(lpData, cbData) ? "UTF-32BE" : "UTF-32LE");
if (Flags.bDevDebugMode) {
_SetEncodingTitleInfo(&encDetRes);
}
return encDetRes;
}
bool const bBOM_LE = Has_UTF16_LE_BOM(lpData, cbData);
bool const bBOM_BE = Has_UTF16_BE_BOM(lpData, cbData);

View File

@ -228,26 +228,12 @@ void GetWinVersionString(LPWSTR szVersionStr, size_t cchVersionStr)
DWORD const build = GetWindowsBuildNumber(NULL, NULL);
if (IsWindows10OrGreater()) {
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? ((build >= 17134) ? L"Server 2019 " : L"Server 2016 ") :
((build >= 22000) ? L"11 " : L"10 "));
} else if (IsWindows8Point1OrGreater()) {
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? L"Server 2012 R2 " : L"8.1");
} else if (IsWindows8OrGreater()) {
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? L"Server 2012 " : L"8");
} else if (IsWindows7SP1OrGreater()) {
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? L"Server 2008 R2 " : L"7 (SP1)");
} else if (IsWindows7OrGreater()) {
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? L"Server 2008 " : L"7");
} else {
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? L"Unkown Server " : L"?");
}
StringCchCat(szVersionStr, cchVersionStr, IsWindowsServer() ? ((build >= 17134) ? L"Server 2019 " : L"Server 2016 ") :
((build >= 22000) ? L"11 " : L"10 "));
if (IsWindows10OrGreater()) {
WCHAR win10ver[80] = { L'\0' };
StringCchPrintf(win10ver, COUNTOF(win10ver), L" Version %s (Build %lu)", _Win10BuildToReleaseId(build), GetWindowsBuildNumber(NULL, NULL));
StringCchCat(szVersionStr, cchVersionStr, win10ver);
}
WCHAR win10ver[80] = { L'\0' };
StringCchPrintf(win10ver, COUNTOF(win10ver), L" Version %s (Build %lu)", _Win10BuildToReleaseId(build), build);
StringCchCat(szVersionStr, cchVersionStr, win10ver);
}
@ -351,15 +337,6 @@ HRESULT SetWindowAppUserModelID(HWND hwnd, PCWSTR AppID)
//
bool IsProcessElevated()
{
// When the process is run on operating systems prior to Windows
// Vista, GetTokenInformation returns FALSE with the
// ERROR_INVALID_PARAMETER error code because TokenElevation is
// not supported on those operating systems.
if (!IsWindowsVistaOrGreater()) {
return false;
}
bool bIsElevated = false;
HANDLE hToken = NULL;
Globals.dwLastError = ERROR_SUCCESS;
@ -586,9 +563,15 @@ bool IsRunAsAdmin()
void BackgroundWorker_Init(BackgroundWorker* worker, HWND hwnd, const HPATHL hFilePath)
{
if (worker) {
if (IS_VALID_HANDLE(worker->eventCancel)) {
return; // already initialized — call Destroy first
}
worker->hwnd = hwnd;
// manual (not automatic) reset & initial state: not signaled (TRUE, FALSE)
worker->eventCancel = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!IS_VALID_HANDLE(worker->eventCancel)) {
worker->eventCancel = INVALID_HANDLE_VALUE;
}
worker->workerThread = INVALID_HANDLE_VALUE;
worker->hFilePath = Path_Allocate(Path_Get(hFilePath));
}
@ -597,31 +580,49 @@ void BackgroundWorker_Init(BackgroundWorker* worker, HWND hwnd, const HPATHL hFi
void BackgroundWorker_Start(BackgroundWorker* worker, _beginthreadex_proc_type routine, LPVOID property)
{
if (worker) {
ResetEvent(worker->eventCancel); // init should be 'not signaled'
if (IS_VALID_HANDLE(worker->eventCancel)) {
ResetEvent(worker->eventCancel); // init should be 'not signaled'
}
//~worker->workerThread = CreateThread(NULL, 0, routine, property, 0, NULL); // MD(d) dll
uintptr_t const thread = _beginthreadex(NULL, 0, routine, property, 0, NULL); // MT(d) static
InterlockedExchangePointer(&(worker->workerThread), (thread != 0LL) ? (HANDLE)thread : INVALID_HANDLE_VALUE);
HANDLE const hOld = InterlockedExchangePointer(&(worker->workerThread), (thread != 0LL) ? (HANDLE)thread : INVALID_HANDLE_VALUE);
if (IS_VALID_HANDLE(hOld)) {
CloseHandle(hOld); // prevent handle leak from re-entrant Start
}
}
}
void BackgroundWorker_Cancel(BackgroundWorker* worker) {
if (worker) {
SetEvent(worker->eventCancel); // signal
if (IS_VALID_HANDLE(worker->eventCancel)) {
SetEvent(worker->eventCancel); // signal
}
HANDLE const workerThread = InterlockedExchangePointer(&(worker->workerThread), INVALID_HANDLE_VALUE);
if (IS_VALID_HANDLE(workerThread)) {
// Optimize: MsgDispatch only in case of hwnd ?
// DWORD const wait = SignalObjectAndWait(worker->eventCancel, workerThread, 100 /*INFINITE*/, FALSE);
DWORD const dwTimeout = 5000; // 5 seconds max
DWORD const dwTimeout = 5000; // 5 seconds for graceful exit
DWORD const dwStart = GetTickCount();
while (WaitForSingleObject(workerThread, 0) != WAIT_OBJECT_0) {
if ((GetTickCount() - dwStart) > dwTimeout) {
break; // give up waiting — thread will self-terminate
// Wait for thread exit, only pumping cross-thread SendMessage to prevent deadlocks.
// Posted messages (WM_TIMER, WM_COMMAND, etc.) are left in the queue — dispatching
// them here could cause reentrancy in the caller (e.g., mid-FileSave).
while (true) {
DWORD const dwElapsed = GetTickCount() - dwStart;
DWORD const dwRemaining = (dwElapsed < dwTimeout) ? (dwTimeout - dwElapsed) : 0;
DWORD const dwWait = MsgWaitForMultipleObjects(1, &workerThread, FALSE, dwRemaining, QS_SENDMESSAGE);
if (dwWait == WAIT_OBJECT_0) {
break; // thread exited
}
MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
if (dwWait == WAIT_OBJECT_0 + 1) {
// Process only sent messages (cross-thread SendMessage), not posted messages
MSG msg;
PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
continue;
}
// WAIT_TIMEOUT or WAIT_FAILED — ensure thread is dead before cleanup
if (dwWait == WAIT_TIMEOUT) {
WaitForSingleObject(workerThread, INFINITE);
}
break;
}
CloseHandle(workerThread);
}
@ -634,7 +635,10 @@ void BackgroundWorker_Destroy(BackgroundWorker* worker)
{
if (worker) {
BackgroundWorker_Cancel(worker);
CloseHandle(InterlockedExchangePointer(&(worker->eventCancel), INVALID_HANDLE_VALUE));
HANDLE const hEvent = InterlockedExchangePointer(&(worker->eventCancel), INVALID_HANDLE_VALUE);
if (IS_VALID_HANDLE(hEvent)) {
CloseHandle(hEvent);
}
Path_Release(worker->hFilePath);
worker->hFilePath = NULL;
}

View File

@ -429,8 +429,8 @@ void BackgroundWorker_Start(BackgroundWorker* worker, _beginthreadex_proc
void BackgroundWorker_Cancel(BackgroundWorker* worker);
void BackgroundWorker_Destroy(BackgroundWorker* worker);
static inline bool BackgroundWorker_Continue(BackgroundWorker* worker) {
return (worker) ? (WaitForSingleObject(worker->eventCancel, 0) != WAIT_OBJECT_0) : false;
static inline bool BackgroundWorker_Continue(BackgroundWorker* worker) {
return (worker && IS_VALID_HANDLE(worker->eventCancel)) ? (WaitForSingleObject(worker->eventCancel, 0) != WAIT_OBJECT_0) : false;
}
static inline void BackgroundWorker_End(BackgroundWorker* worker, unsigned int retcode) { if (worker) { _endthreadex(retcode); }}

View File

@ -509,21 +509,41 @@ static inline bool RaiseFlagIfCurrentFileChanged() {
if (IsFileDeletedFlagSet()) {
return false;
}
SetEvent(s_FileChgObsvrData.hEventFileChanged);
SetEvent(s_FileChgObsvrData.hEventFileDeleted);
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileChanged)) {
SetEvent(s_FileChgObsvrData.hEventFileChanged);
}
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileDeleted)) {
SetEvent(s_FileChgObsvrData.hEventFileDeleted);
}
return true;
}
if (IsFileDeletedFlagSet()) {
// The current file has been restored
ResetEvent(s_FileChgObsvrData.hEventFileDeleted);
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileDeleted)) {
ResetEvent(s_FileChgObsvrData.hEventFileDeleted);
}
}
// Seqlock read: detect torn reads of fdCurFile during concurrent ResetFileObservationData
LONG const genBefore = InterlockedCompareExchange(&(s_FileChgObsvrData.iObservationGeneration), 0, 0);
if (genBefore & 1) {
return false; // write in progress — skip this cycle, next poll will retry
}
bool const changed = (s_FileChgObsvrData.fdCurFile.nFileSizeLow != fdUpdated.nFileSizeLow) || (s_FileChgObsvrData.fdCurFile.nFileSizeHigh != fdUpdated.nFileSizeHigh)
//~|| (CompareFileTime(&(s_FileChgObsvrData.fdCurFile.ftLastWriteTime), &fdUpdated.ftLastWriteTime) != 0)
|| (s_FileChgObsvrData.fdCurFile.ftLastWriteTime.dwLowDateTime != fdUpdated.ftLastWriteTime.dwLowDateTime)
|| (s_FileChgObsvrData.fdCurFile.ftLastWriteTime.dwHighDateTime != fdUpdated.ftLastWriteTime.dwHighDateTime);
LONG const genAfter = InterlockedCompareExchange(&(s_FileChgObsvrData.iObservationGeneration), 0, 0);
if (genBefore != genAfter) {
return false; // torn read — skip this cycle, next poll will retry
}
if (changed) {
SetEvent(s_FileChgObsvrData.hEventFileChanged);
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileChanged)) {
SetEvent(s_FileChgObsvrData.hEventFileChanged);
}
}
return changed;
}
@ -531,14 +551,22 @@ static inline bool RaiseFlagIfCurrentFileChanged() {
static inline void ResetFileObservationData(const bool bResetEvt) {
if (bResetEvt) {
ResetEvent(s_FileChgObsvrData.hEventFileChanged);
ResetEvent(s_FileChgObsvrData.hEventFileDeleted);
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileChanged)) {
ResetEvent(s_FileChgObsvrData.hEventFileChanged);
}
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileDeleted)) {
ResetEvent(s_FileChgObsvrData.hEventFileDeleted);
}
}
if (Path_IsNotEmpty(Paths.CurrentFile)) {
// Seqlock write: increment generation before and after updating fdCurFile
// so the observer thread can detect torn reads
InterlockedIncrement(&(s_FileChgObsvrData.iObservationGeneration));
if (!GetFileAttributesEx(Path_Get(Paths.CurrentFile), GetFileExInfoStandard, &(s_FileChgObsvrData.fdCurFile)))
{
ZeroMemory(&(s_FileChgObsvrData.fdCurFile), sizeof(WIN32_FIND_DATA));
}
InterlockedIncrement(&(s_FileChgObsvrData.iObservationGeneration));
}
}
@ -779,6 +807,10 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized)
{
if (hwnd) {
KillTimer(hwnd, IDT_TIMER_MRKALL);
KillTimer(hwnd, ID_WATCHTIMER);
KillTimer(hwnd, ID_LOGROTATETIMER);
KillTimer(hwnd, ID_AUTOSAVETIMER);
KillTimer(hwnd, ID_PASTEBOARDTIMER);
}
if (Globals.pStdDarkModeIniStyles) {
@ -793,6 +825,8 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized)
FreeMem(pmqc);
}
BackgroundWorker_Destroy(&(s_FileChgObsvrData.worker));
if (IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileChanged)) {
CloseHandle(s_FileChgObsvrData.hEventFileChanged);
s_FileChgObsvrData.hEventFileChanged = INVALID_HANDLE_VALUE;
@ -802,8 +836,6 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized)
s_FileChgObsvrData.hEventFileDeleted = INVALID_HANDLE_VALUE;
}
BackgroundWorker_Destroy(&(s_FileChgObsvrData.worker));
// ---------------------------------------------
if (s_SelectionBuffer) {
@ -1007,8 +1039,8 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
// check if running at least on Windows 7 (SP1)
if (!IsWindows7SP1OrGreater()) {
// check if running at least on Windows 10
if (!IsWindows10OrGreater()) {
MsgBoxLastError(L"Application Initialization", ERROR_OLD_WIN_VERSION);
return 1; // exit
}
@ -1749,6 +1781,10 @@ HWND InitInstance(const HINSTANCE hInstance, int nCmdShow)
{
// manual (not automatic) reset & initial state: not signaled (TRUE, FALSE)
s_hEventAppIsClosing = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!IS_VALID_HANDLE(s_hEventAppIsClosing)) {
MsgBoxLastError(L"CreateEvent(s_hEventAppIsClosing)", GetLastError());
return NULL;
}
// init w/o hwnd
g_IniWinInfo = GetWinInfoByFlag(NULL, Globals.CmdLnFlag_WindowPos);
@ -1797,7 +1833,16 @@ HWND InitInstance(const HINSTANCE hInstance, int nCmdShow)
// manual (not automatic) reset & initial state: not signaled (TRUE, FALSE)
s_FileChgObsvrData.hEventFileChanged = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileChanged)) {
MsgBoxLastError(L"CreateEvent(hEventFileChanged)", GetLastError());
return NULL;
}
s_FileChgObsvrData.hEventFileDeleted = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!IS_VALID_HANDLE(s_FileChgObsvrData.hEventFileDeleted)) {
CloseHandle(s_FileChgObsvrData.hEventFileChanged);
MsgBoxLastError(L"CreateEvent(hEventFileDeleted)", GetLastError());
return NULL;
}
if (Settings.TransparentMode) {
SetWindowTransparentMode(hwndMain, true, Settings2.OpacityLevel);
@ -2826,18 +2871,6 @@ static void _InitEditWndFrame()
SetWindowLongPtr(Globals.hwndEdit, GWL_EXSTYLE, GetWindowLongPtr(Globals.hwndEdit, GWL_EXSTYLE) & ~WS_EX_CLIENTEDGE);
SetWindowPos(Globals.hwndEdit, NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
if (!IsWindowsVistaOrGreater()) {
SetWindowPos(s_hwndEditFrame, Globals.hwndEdit, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
ShowWindow(s_hwndEditFrame, SW_HIDE);
RECT rc, rc2;
GetClientRect(s_hwndEditFrame, &rc);
GetWindowRect(s_hwndEditFrame, &rc2);
s_cxEditFrame = ((rc2.right - rc2.left) - (rc.right - rc.left)) / 2;
s_cyEditFrame = ((rc2.bottom - rc2.top) - (rc.bottom - rc.top)) / 2;
}
} else {
SetWindowLongPtr(Globals.hwndEdit, GWL_EXSTYLE, WS_EX_CLIENTEDGE | GetWindowLongPtr(Globals.hwndEdit, GWL_EXSTYLE));
@ -3369,7 +3402,7 @@ void CreateBars(HWND hwnd, HINSTANCE hInstance)
0,0,0,0,hwnd,(HMENU)IDC_REBAR,hInstance,NULL);
// Theme = false (!) ~ you cannot change a toolbar's color when a visual style is active
InitWindowCommon(Globals.hwndRebar, !(IsWindows10OrGreater() && IsDarkModeSupported()));
InitWindowCommon(Globals.hwndRebar, !IsDarkModeSupported());
#ifdef D_NP3_WIN10_DARK_MODE
if (IsDarkModeSupported()) {
@ -3394,7 +3427,7 @@ void CreateBars(HWND hwnd, HINSTANCE hInstance)
rbBand.hbmBack = NULL;
rbBand.lpText = L"Toolbar";
rbBand.clrFore = GetModeTextColor(UseDarkMode());
rbBand.clrBack = IsWindows10OrGreater() ? GetModeBkColor(UseDarkMode()) : GetModeBtnfaceColor(UseDarkMode());
rbBand.clrBack = GetModeBkColor(UseDarkMode());
rbBand.hwndChild = Globals.hwndToolbar;
rbBand.cxMinChild = (rc.right - rc.left) * COUNTOF(s_tbbMainWnd);
rbBand.cyMinChild = (rc.bottom - rc.top) + (2 * rc.top);
@ -3772,32 +3805,7 @@ LRESULT MsgDropFiles(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
HDROP hDrop = NULL;
if (IsWindows10OrGreater()) {
hDrop = (HDROP)wParam;
}
else // Windows7 Bug drag&drop of files from 32bit app to 64bit app
{
#ifdef _WIN64
HANDLE hProcessHeap = GetProcessHeap();
if (NULL != hProcessHeap && HeapLock(hProcessHeap)) {
PROCESS_HEAP_ENTRY heapEntry = { 0 };
while (HeapWalk(hProcessHeap, &heapEntry) != FALSE) {
if ((heapEntry.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
HGLOBAL hGlobal = GlobalHandle(heapEntry.lpData);
// Assuming wParam is the WM_DROPFILES WPARAM
if ((((DWORD_PTR)hGlobal) & 0xFFFFFFFF) == (wParam & 0xFFFFFFFF)) {
hDrop = (HDROP)hGlobal; // We got it !!
break;
}
}
}
HeapUnlock(hProcessHeap);
}
#else
hDrop = (HDROP)wParam;
#endif
}
HDROP hDrop = (HDROP)wParam;
if (hDrop) {
@ -10016,6 +10024,9 @@ void MarkAllOccurrences(const LONG64 delay, const bool bForceClear)
//
void UpdateTitlebar(const HWND hwnd)
{
if (!IsWindow(hwnd)) {
return;
}
_DelayUpdateTitlebar(_MQ_STD, hwnd);
}
@ -10027,6 +10038,9 @@ void UpdateTitlebar(const HWND hwnd)
static void _UpdateTitlebarDelayed(const HWND hwnd)
{
if (!IsWindow(hwnd)) {
return;
}
if (hwnd == Globals.hwndMain && Settings.ShowTitlebar) {
TITLEPROPS_T props = { 0 };
@ -11177,11 +11191,15 @@ bool FileLoad(const HPATHL hfile_pth, const FileLoadFlags fLoadFlags, const DocP
}
if (bCreateFile) {
HANDLE hFile = CreateFileW(Path_Get(hopen_file),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
Globals.dwLastError = GetLastError();
fSuccess = IS_VALID_HANDLE(hFile);
if (!fSuccess) {
// Handle already set to INVALID_HANDLE_VALUE by CreateFileW on failure
hFile = INVALID_HANDLE_VALUE;
}
if (fSuccess) {
FileVars_GetFromData(NULL, 0, &Globals.fvCurFile); // init/reset
EditSetNewText(Globals.hwndEdit, "", 0, false, false);
@ -11983,6 +12001,9 @@ bool ActivatePrevInst(const bool bSetForground)
//
bool LaunchNewInstance(HWND hwnd, LPCWSTR lpszParameter, LPCWSTR lpszFilePath)
{
if (hwnd && !IsWindow(hwnd)) {
return false;
}
HPATHL hexe_pth = Path_Allocate(NULL);
Path_GetModuleFilePath(hexe_pth);
@ -12109,7 +12130,7 @@ bool RelaunchMultiInst()
//
bool RelaunchElevated(LPCWSTR lpNewCmdLnArgs)
{
if (!IsWindowsVistaOrGreater() || !Flags.bDoRelaunchElevated ||
if (!Flags.bDoRelaunchElevated ||
s_bIsProcessElevated || s_IsThisAnElevatedRelaunch || s_bIsRunAsAdmin ||
s_flagDisplayHelp) {
return false; // reject initial RelaunchElevated() try
@ -12176,6 +12197,9 @@ bool RelaunchElevated(LPCWSTR lpNewCmdLnArgs)
//
void ShowNotifyIcon(HWND hwnd,bool bAdd)
{
if (!IsWindow(hwnd)) {
return;
}
HICON hIcon = NULL;
LoadIconWithScaleDown(Globals.hInstance, MAKEINTRESOURCE(IDR_MAINWND),
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), &hIcon);
@ -12202,6 +12226,9 @@ void ShowNotifyIcon(HWND hwnd,bool bAdd)
//
void SetNotifyIconTitle(HWND hwnd)
{
if (!IsWindow(hwnd)) {
return;
}
NOTIFYICONDATA nid = { sizeof(NOTIFYICONDATA) };
nid.hWnd = hwnd;
nid.uID = 0;
@ -12399,8 +12426,9 @@ void CALLBACK PasteBoardTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD
}
// forward declaration for LogRotateTimerProc (defined after InstallFileWatching)
// forward declarations for timer procs (defined after InstallFileWatching)
static void CALLBACK LogRotateTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
static void CALLBACK AtomicSaveTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
//=============================================================================
//
@ -12408,11 +12436,10 @@ static void CALLBACK LogRotateTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent,
//
LRESULT MsgFileChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(hwnd);
UNREFERENCED_PARAMETER(wParam);
UNREFERENCED_PARAMETER(lParam);
if (IsAppClosing()) { return TRUE; }
if (!IsWindow(hwnd) || IsAppClosing()) { return TRUE; }
SET_FCT_GUARD(TRUE);
@ -12487,35 +12514,8 @@ LRESULT MsgFileChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
}
else { // file has been deleted
// Brief delay to handle atomic save (delete + rename) pattern
Sleep(100);
if (Path_IsExistingFile(Paths.CurrentFile)) {
// File was restored (atomic save) — re-process as modification
ResetFileObservationData(true);
PostMessage(Globals.hwndMain, WM_FILECHANGEDNOTIFY, 0, 0);
}
else {
InstallFileWatching(false); // truly deleted — terminate
if (FileWatching.MonitoringLog) {
// File deleted while monitoring — start retry timer for log rotation recovery
FileWatching.LogRotateRetryCount = 0;
SetTimer(Globals.hwndMain, ID_LOGROTATETIMER, 500, LogRotateTimerProc);
SetSaveNeeded(true);
}
else if (FileWatching.FileWatchingMode == FWM_MSGBOX) {
if (IsYesOkay(InfoBoxLng(MB_YESNO | MB_ICONWARNING, NULL, IDS_MUI_FILECHANGENOTIFY2))) {
FileSave(FSF_SaveAlways);
}
else {
SetSaveNeeded(true);
}
}
else {
// FWM_INDICATORSILENT: nothing todo here
SetSaveNeeded(true);
}
}
// Use timer to handle atomic save (delete + rename) pattern without blocking UI
SetTimer(Globals.hwndMain, ID_ATOMICSAVETIMER, 100, AtomicSaveTimerProc);
}
RESET_FCT_GUARD();
@ -12531,7 +12531,16 @@ LRESULT MsgFileChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
static inline void NotifyIfFileHasChanged()
{
if (IsFileChangedFlagSet() || IsFileDeletedFlagSet() || RaiseFlagIfCurrentFileChanged()) {
bool notify = false;
if (IsFileChangedFlagSet()) {
// Consume the flag to prevent duplicate notifications from concurrent push+poll paths
ResetEvent(s_FileChgObsvrData.hEventFileChanged);
notify = true;
}
if (IsFileDeletedFlagSet()) {
notify = true; // don't reset deleted flag here — handler needs it
}
if (notify || RaiseFlagIfCurrentFileChanged()) {
PostMessage(Globals.hwndMain, WM_FILECHANGEDNOTIFY, 0, 0);
}
// reset Timeout interval
@ -12582,6 +12591,45 @@ static void CALLBACK LogRotateTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent,
}
// ----------------------------------------------------------------------------
static void CALLBACK AtomicSaveTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) {
UNREFERENCED_PARAMETER(dwTime);
UNREFERENCED_PARAMETER(idEvent);
UNREFERENCED_PARAMETER(uMsg);
UNREFERENCED_PARAMETER(hwnd);
KillTimer(Globals.hwndMain, ID_ATOMICSAVETIMER); // one-shot
if (Path_IsExistingFile(Paths.CurrentFile)) {
// File was restored (atomic save) — re-process as modification
ResetFileObservationData(true);
PostMessage(Globals.hwndMain, WM_FILECHANGEDNOTIFY, 0, 0);
}
else {
InstallFileWatching(false); // truly deleted — terminate
if (FileWatching.MonitoringLog) {
// File deleted while monitoring — start retry timer for log rotation recovery
FileWatching.LogRotateRetryCount = 0;
SetTimer(Globals.hwndMain, ID_LOGROTATETIMER, 500, LogRotateTimerProc);
SetSaveNeeded(true);
}
else if (FileWatching.FileWatchingMode == FWM_MSGBOX) {
if (IsYesOkay(InfoBoxLng(MB_YESNO | MB_ICONWARNING, NULL, IDS_MUI_FILECHANGENOTIFY2))) {
FileSave(FSF_SaveAlways);
}
else {
SetSaveNeeded(true);
}
}
else {
// FWM_INDICATORSILENT: nothing todo here
SetSaveNeeded(true);
}
}
}
// ----------------------------------------------------------------------------
unsigned int WINAPI FileChangeObserver(LPVOID lpParam)
{
@ -12601,6 +12649,7 @@ unsigned int WINAPI FileChangeObserver(LPVOID lpParam)
FILE_NOTIFY_CHANGE_LAST_WRITE);
if (!IS_VALID_HANDLE(pFCOBSVData->hFileChanged)) {
pFCOBSVData->hFileChanged = INVALID_HANDLE_VALUE;
BackgroundWorker_End(worker, 1);
return 1;
}
@ -12626,13 +12675,17 @@ unsigned int WINAPI FileChangeObserver(LPVOID lpParam)
case WAIT_ABANDONED:
case WAIT_FAILED:
default:
BackgroundWorker_Cancel(worker);
if (IS_VALID_HANDLE(worker->eventCancel)) {
SetEvent(worker->eventCancel); // signal self-stop (don't call Cancel from within thread)
}
retcode = 1;
break;
}
}
FindCloseChangeNotification(pFCOBSVData->hFileChanged); // stop monitoring
if (IS_VALID_HANDLE(pFCOBSVData->hFileChanged)) {
FindCloseChangeNotification(pFCOBSVData->hFileChanged); // stop monitoring
}
pFCOBSVData->hFileChanged = INVALID_HANDLE_VALUE;
BackgroundWorker_End(worker, retcode);
@ -12676,6 +12729,7 @@ void InstallFileWatching(const bool bInstall) {
// Terminate previous watching
if (bTerminate) {
KillTimer(Globals.hwndMain, ID_WATCHTIMER);
KillTimer(Globals.hwndMain, ID_ATOMICSAVETIMER);
BackgroundWorker_Cancel(&(s_FileChgObsvrData.worker));
ResetFileObservationData(false); // (!) false
}
@ -12687,15 +12741,16 @@ void InstallFileWatching(const bool bInstall) {
bool const bUsePush = (Settings2.FileWatchingMethod != FWMTH_POLL); // both or push
bool const bUsePoll = (Settings2.FileWatchingMethod != FWMTH_PUSH); // both or poll
if (!IS_VALID_HANDLE(s_FileChgObsvrData.worker.workerThread)) {
// Always cancel stale/running thread before starting fresh
// (handles self-stop scenario where thread exited but handle was not closed)
BackgroundWorker_Cancel(&(s_FileChgObsvrData.worker));
// Save data of current file
ResetFileObservationData(false); // (!) false
// Save data of current file
ResetFileObservationData(false); // (!) false
if (bUsePush) {
Path_Reset(s_FileChgObsvrData.worker.hFilePath, Path_Get(hdir_pth)); // directory monitoring
BackgroundWorker_Start(&(s_FileChgObsvrData.worker), FileChangeObserver, &s_FileChgObsvrData);
}
if (bUsePush) {
Path_Reset(s_FileChgObsvrData.worker.hFilePath, Path_Get(hdir_pth)); // directory monitoring
BackgroundWorker_Start(&(s_FileChgObsvrData.worker), FileChangeObserver, &s_FileChgObsvrData);
}
InterlockedExchange64(&(s_FileChgObsvrData.iFileChangeNotifyTime), GetTicks_ms());
@ -12737,6 +12792,9 @@ void InstallFileWatching(const bool bInstall) {
InfoBoxLng(MB_ICONERROR, NULL, IDS_MUI_FILELOCK_ERROR, wchDisplayName);
// Ensure handle is explicitly invalid
_hCurrFileHandle = INVALID_HANDLE_VALUE;
// need to chose another mode
FILE_WATCHING_MODE const fwm = Settings.FileWatchingMode;
FileWatching.FileWatchingMode = (fwm != FWM_EXCLUSIVELOCK) ? fwm : FWM_MSGBOX;

View File

@ -69,6 +69,7 @@ np3params, *LPnp3params;
#define ID_AUTOSAVETIMER (0xA002) // Auto Save Timer
#define ID_LOGROTATETIMER (0xA003) // Log Rotation Retry
#define ID_AUTOSCROLLTIMER (0xA004) // Middle-Click Auto-Scroll
#define ID_ATOMICSAVETIMER (0xA005) // Atomic Save Detection
//==== Reuse Window Lock Timeout ==============================================

View File

@ -246,7 +246,7 @@
<MinimalRebuild>false</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;WIN32;STATIC_BUILD;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;WIN32;STATIC_BUILD;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -321,7 +321,7 @@
<MinimalRebuild>false</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -395,7 +395,7 @@
<MinimalRebuild>false</MinimalRebuild>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<WholeProgramOptimization>false</WholeProgramOptimization>
@ -466,7 +466,7 @@
<AdditionalIncludeDirectories>.;../scintilla/include;../lexilla;../lexilla/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;WIN32;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;WIN32;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>
@ -552,7 +552,7 @@
<AdditionalIncludeDirectories>.;../scintilla/include;../lexilla;../lexilla/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;WIN32;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;WIN32;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>
@ -638,7 +638,7 @@
<AdditionalIncludeDirectories>.;../scintilla/include;../lexilla;../lexilla/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>
@ -723,7 +723,7 @@
<AdditionalIncludeDirectories>.;../scintilla/include;../lexilla;../lexilla/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>
@ -808,7 +808,7 @@
<AdditionalIncludeDirectories>.;../scintilla/include;../lexilla;../lexilla/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>
@ -893,7 +893,7 @@
<AdditionalIncludeDirectories>.;../scintilla/include;../lexilla;../lexilla/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>MUI_BASE_LNG_EN_US;D_NP3_WIN10_DARK_MODE;_WIN32_WINNT=0x0A00;WINVER=0x0A00;NTDDI_VERSION=0x0A000006;_WIN64;STATIC_BUILD;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>None</DebugInformationFormat>

View File

@ -64,7 +64,7 @@
// ============================================================================
// ============================================================================
// TODO: if (IsWindows10OrGreater() && OptInRemovedMaxPathLimit()) {}
// TODO: if (OptInRemovedMaxPathLimit()) {}
// https://docs.microsoft.com/de-de/windows/win32/api/fileapi/nf-fileapi-getfileattributesa
//
// These are the directory management functions that no longer have MAX_PATH restrictions
@ -119,14 +119,15 @@
//
// ============================================================================
#include <sdkddkver.h>
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#ifndef WINVER
#define WINVER 0x0601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#ifndef NTDDI_VERSION
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif

View File

@ -24,14 +24,15 @@
#define DBG_NEW new
#endif
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1

View File

@ -13,23 +13,16 @@
* *
*******************************************************************************/
#include <sdkddkver.h>
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#ifndef WINVER
#define WINVER 0x0601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#ifndef NTDDI_VERSION
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#endif
#if 0
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN7*/
#undef WINVER
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN7*/
#undef NTDDI_VERSION
#define NTDDI_VERSION 0x0A000000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
@ -41,6 +34,9 @@
#define NOMINMAX
#endif
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN 1
#endif
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
@ -869,6 +865,7 @@ typedef struct BackgroundWorker {
typedef struct FCOBSRVDATA_T {
volatile LONG64 iFileChangeNotifyTime; // multi-threaded
volatile LONG iObservationGeneration; // seqlock: incremented before+after fdCurFile writes
WIN32_FIND_DATA fdCurFile;
HANDLE hEventFileChanged;
@ -879,7 +876,7 @@ typedef struct FCOBSRVDATA_T {
} FCOBSRVDATA_T, *PFCOBSRVDATA_T;
#define INIT_FCOBSRV_T { 0LL, { 0 }, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, { NULL, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, NULL } }
#define INIT_FCOBSRV_T { 0LL, 0L, { 0 }, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, { NULL, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, NULL } }
#define MIN_FC_POLL_INTERVAL (200LL)
#define MAX_FC_POLL_INTERVAL ((24LL * 60 * 60 * 1000) << 1) // max: 48h

View File

@ -18,14 +18,15 @@
// ============================================================================
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1

View File

@ -6,5 +6,5 @@
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <WinSDKVer.h>
#define _WIN32_WINNT 0x500
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#include <SDKDDKVer.h>

View File

@ -12,14 +12,15 @@ optionally with master key
see ecryption-doc.txt for details
*/
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1

View File

@ -11,6 +11,8 @@
* also http://nayuki.eigenstate.org/page/notepadcrypt-format-decryptor-java
*/
#include "targetver.h"
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

View File

@ -41,14 +41,15 @@
have been tweaked for compatibility with the local environment.
*/
#include <sdkddkver.h>
#if !defined(WINVER)
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER _WIN32_WINNT_WIN10
#endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT _WIN32_WINNT_WIN10
#endif
#if !defined(NTDDI_VERSION)
#define NTDDI_VERSION 0x06010000 /*NTDDI_WIN7*/
#define NTDDI_VERSION NTDDI_WIN10_RS5
#endif
#define VC_EXTRALEAN 1
#define WIN32_LEAN_AND_MEAN 1

View File

@ -3,10 +3,10 @@
// Used by Notepad3.rc
//
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x601 /*_WIN32_WINNT_WIN7*/
#define _WIN32_WINNT 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
#ifndef WINVER
#define WINVER 0x601 /*_WIN32_WINNT_WIN7*/
#define WINVER 0x0A00 /*_WIN32_WINNT_WIN10*/
#endif
// ==========================================