Browse Source

--- Merging r42008 into '.':
U rtl/win/wininc/func.inc
--- Recording mergeinfo for merge of r42008 into '.':
U .
--- Merging r42013 into '.':
U rtl/win/wininc/defines.inc
--- Recording mergeinfo for merge of r42013 into '.':
G .
--- Merging r42027 into '.':
G rtl/win/wininc/func.inc
--- Recording mergeinfo for merge of r42027 into '.':
G .
--- Merging r42028 into '.':
U rtl/win/wininc/ascdef.inc
U rtl/win/wininc/ascfun.inc
U rtl/win/wininc/unidef.inc
U rtl/win/wininc/unifun.inc
--- Recording mergeinfo for merge of r42028 into '.':
G .
--- Merging r42029 into '.':
G rtl/win/wininc/func.inc
--- Recording mergeinfo for merge of r42029 into '.':
G .
--- Merging r42030 into '.':
G rtl/win/wininc/defines.inc
G rtl/win/wininc/func.inc
--- Recording mergeinfo for merge of r42030 into '.':
G .
--- Merging r42043 into '.':
U rtl/win/syswin.inc
--- Recording mergeinfo for merge of r42043 into '.':
G .

# revisions: 42008,42013,42027,42028,42029,42030,42043

git-svn-id: branches/fixes_3_2@42130 -

marco 6 years ago
parent
commit
da79953f12

+ 7 - 4
rtl/win/syswin.inc

@@ -591,10 +591,13 @@ procedure Win32Ansi2UnicodeMove(source:pchar;cp : TSystemCodePage;var dest:Unico
   begin
   begin
     // retrieve length including trailing #0
     // retrieve length including trailing #0
     // not anymore, because this must also be usable for single characters
     // not anymore, because this must also be usable for single characters
-    if cp=CP_UTF8 then
-      dwFlags:=0
-    else
-      dwFlags:=MB_PRECOMPOSED;
+    case cp of
+    // Under https://docs.microsoft.com/en-us/windows/desktop/api/stringapiset/nf-stringapiset-multibytetowidechar
+      CP_UTF8, CP_UTF7, 50220, 50221, 50222, 50225, 50227, 50229, 57002..57011, 42:
+                           dwFlags:=0
+      else
+        dwFlags:=MB_PRECOMPOSED;
+      end;
     destlen:=MultiByteToWideChar(cp, dwFlags, source, len, nil, 0);
     destlen:=MultiByteToWideChar(cp, dwFlags, source, len, nil, 0);
     // this will null-terminate
     // this will null-terminate
     setlength(dest, destlen);
     setlength(dest, destlen);

+ 1 - 0
rtl/win/wininc/ascdef.inc

@@ -481,6 +481,7 @@ function FindFirstFileTransacted(lpfilename : LPCStr;fInfoLevelId:FINDEX_INFO_LE
     external 'kernel32' name 'FindFirstFileTransactedA';
     external 'kernel32' name 'FindFirstFileTransactedA';
 function GetComputerNameEx(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExA';
 function GetComputerNameEx(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExA';
 function QueryFullProcessImageName(hProcess:THandle;dwFlags:DWord; lpexename :lpstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameA';
 function QueryFullProcessImageName(hProcess:THandle;dwFlags:DWord; lpexename :lpstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameA';
+function RealGetWindowClass(Wnd : HWND;ClassnameBuffer : pansichar;ClassnameBufferSize : DWORD): DWORD; stdcall; external 'user32.dll' name 'RealGetWindowClassA';
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 

+ 1 - 0
rtl/win/wininc/ascfun.inc

@@ -494,6 +494,7 @@ function GetConsoleAliasesA(AliasBuffer:LPSTR; AliasBufferLength:DWORD; ExeName:
 function GetConsoleAliasExesA(ExeNameBuffer:LPSTR; ExeNameBufferLength:DWORD):DWORD;stdcall;external 'kernel32' name 'GetConsoleAliasExesA';
 function GetConsoleAliasExesA(ExeNameBuffer:LPSTR; ExeNameBufferLength:DWORD):DWORD;stdcall;external 'kernel32' name 'GetConsoleAliasExesA';
 function GetComputerNameExA(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExA';
 function GetComputerNameExA(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExA';
 function QueryFullProcessImageNameA(hProcess:THandle;dwFlags:DWord; lpexename :lpstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameA';
 function QueryFullProcessImageNameA(hProcess:THandle;dwFlags:DWord; lpexename :lpstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameA';
+function RealGetWindowClassA(Wnd : HWND;ClassnameBuffer : pansichar;ClassnameBufferSize : DWORD): DWORD; stdcall; external 'user32.dll' name 'RealGetWindowClassA';
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 

+ 25 - 12
rtl/win/wininc/defines.inc

@@ -1162,18 +1162,23 @@
      KEY_WOW64_64KEY = $0100;
      KEY_WOW64_64KEY = $0100;
      KEY_WOW64_32KEY = $0200;
      KEY_WOW64_32KEY = $0200;
      KEY_WRITE = $20006;
      KEY_WRITE = $20006;
-     PROCESS_ALL_ACCESS = $1f0fff;
-     PROCESS_CREATE_PROCESS = 128;
-     PROCESS_CREATE_THREAD = 2;
-     PROCESS_DUP_HANDLE = 64;
-     PROCESS_QUERY_INFORMATION = 1024;
+     PROCESS_ALL_ACCESS = $1fFfff;
+     PROCESS_TERMINATE                 = $0001;
+     PROCESS_CREATE_THREAD             = $0002;
+     PROCESS_SET_SESSIONID             = $0004;
+     PROCESS_VM_OPERATION              = $0008;
+     PROCESS_VM_READ                   = $0010;
+     PROCESS_VM_WRITE                  = $0020;
+     PROCESS_DUP_HANDLE                = $0040;
+     PROCESS_CREATE_PROCESS            = $0080;
+     PROCESS_SET_QUOTA                 = $0100;
+     PROCESS_SET_INFORMATION           = $0200;
+     PROCESS_QUERY_INFORMATION         = $0400;
+     PROCESS_SUSPEND_RESUME            = $0800;
      PROCESS_QUERY_LIMITED_INFORMATION = $1000;
      PROCESS_QUERY_LIMITED_INFORMATION = $1000;
-     PROCESS_SET_INFORMATION = 512;
-     PROCESS_TERMINATE = 1;
-     PROCESS_VM_OPERATION = 8;
-     PROCESS_VM_READ = 16;
-     PROCESS_VM_WRITE = 32;
-     THREAD_ALL_ACCESS = $1f03ff;
+     PROCESS_SET_LIMITED_INFORMATION   = $2000;
+    
+     THREAD_ALL_ACCESS = $1FFFFF; // vista+, for old systems 0x3FF
      THREAD_DIRECT_IMPERSONATION = 512;
      THREAD_DIRECT_IMPERSONATION = 512;
      THREAD_GET_CONTEXT = 8;
      THREAD_GET_CONTEXT = 8;
      THREAD_IMPERSONATE = 256;
      THREAD_IMPERSONATE = 256;
@@ -1183,6 +1188,10 @@
      THREAD_SET_THREAD_TOKEN = 128;
      THREAD_SET_THREAD_TOKEN = 128;
      THREAD_SUSPEND_RESUME = 2;
      THREAD_SUSPEND_RESUME = 2;
      THREAD_TERMINATE = 1;
      THREAD_TERMINATE = 1;
+     THREAD_SET_LIMITED_INFORMATION   = $0400;
+     THREAD_QUERY_LIMITED_INFORMATION = $0800;
+     THREAD_RESUME                    = $1000;
+
   { EditWordBreakProc  }
   { EditWordBreakProc  }
      WB_ISDELIMITER = 2;
      WB_ISDELIMITER = 2;
      WB_LEFT = 0;
      WB_LEFT = 0;
@@ -2686,7 +2695,6 @@ Type
      CAL_SMONTHNAME13 = 33;
      CAL_SMONTHNAME13 = 33;
      CAL_SSHORTDATE = 5;
      CAL_SSHORTDATE = 5;
   { SetProcessWorkingSetSize  }
   { SetProcessWorkingSetSize  }
-     PROCESS_SET_QUOTA = 256;
   { SetPrinter  }
   { SetPrinter  }
   { SetService  }
   { SetService  }
   { SetStretchBltMode  }
   { SetStretchBltMode  }
@@ -6381,6 +6389,11 @@ const
     CONSOLE_WINDOWED_MODE   = 2;    
     CONSOLE_WINDOWED_MODE   = 2;    
     PROCESS_NAME_NATIVE     = 1;
     PROCESS_NAME_NATIVE     = 1;
 
 
+    GR_GDIOBJECTS       = 0;       { Count of GDI objects }
+    GR_USEROBJECTS      = 1;       { Count of USER objects }
+    GR_GDIOBJECTS_PEAK  = 2;       { Peak count of GDI objects }
+    GR_USEROBJECTS_PEAK = 4;       { Peak count of USER objects }
+
 {$endif read_interface}
 {$endif read_interface}
 
 
 {$ifdef read_implementation}
 {$ifdef read_implementation}

+ 4 - 0
rtl/win/wininc/func.inc

@@ -1326,6 +1326,10 @@ function CONSOLE_REAL_OUTPUT_HANDLE : HANDLE;
   function Wow64RevertWow64FsRedirection(RedirectionState : pointer) : BOOL; stdcall; external 'kernel32.dll' name 'Wow64RevertWow64FsRedirection';
   function Wow64RevertWow64FsRedirection(RedirectionState : pointer) : BOOL; stdcall; external 'kernel32.dll' name 'Wow64RevertWow64FsRedirection';
   function IsWow64Process(hProcess:THandle; Wow64Process:PBOOL):BOOL;stdcall; external 'kernel32.dll' name 'IsWow64Process';
   function IsWow64Process(hProcess:THandle; Wow64Process:PBOOL):BOOL;stdcall; external 'kernel32.dll' name 'IsWow64Process';
   function GetPhysicallyInstalledSystemMemory(TotalMemoryInKilobytes: PULONGLONG ):BOOL; stdcall; external 'kernel32.dll' name 'GetPhysicallyInstalledSystemMemory';
   function GetPhysicallyInstalledSystemMemory(TotalMemoryInKilobytes: PULONGLONG ):BOOL; stdcall; external 'kernel32.dll' name 'GetPhysicallyInstalledSystemMemory';
+  function OpenThread(DesiredAccess : DWORD; InheritHandle : BOOL; ThreadId : DWORD) : THANDLE; stdcall; external 'kernel32.dll' name 'OpenThread';
+  function GetShellWindow:HWND; stdcall; external 'user32.dll' name 'GetShellWindow';
+  function RealChildWindowFromPoint(Parent : HWND; Pt : TPOINT): HWND; stdcall; external 'user32.dll' name 'RealChildWindowFromPoint';
+  function GetGuiResources(ProcessHandle : THANDLE; ResourceType : DWORD): DWORD; stdcall; external 'user32.dll' name 'GetGuiResources';
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 

+ 1 - 0
rtl/win/wininc/unidef.inc

@@ -474,6 +474,7 @@ function FindFirstFileEx(lpfilename : LPCWStr;fInfoLevelId:FINDEX_INFO_LEVELS ;l
 function FindFirstFileTransacted(lpfilename : LPCWStr;fInfoLevelId:FINDEX_INFO_LEVELS ;lpFindFileData:pointer;fSearchOp : FINDEX_SEARCH_OPS;lpSearchFilter:pointer;dwAdditionalFlags:dword;htransaction : HANDLE):Handle; stdcall; external 'kernel32' name 'FindFirstFileTransactedW';
 function FindFirstFileTransacted(lpfilename : LPCWStr;fInfoLevelId:FINDEX_INFO_LEVELS ;lpFindFileData:pointer;fSearchOp : FINDEX_SEARCH_OPS;lpSearchFilter:pointer;dwAdditionalFlags:dword;htransaction : HANDLE):Handle; stdcall; external 'kernel32' name 'FindFirstFileTransactedW';
 function GetComputerNameEx(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPWSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExW';
 function GetComputerNameEx(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPWSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExW';
 function QueryFullProcessImageName(hProcess:THandle;dwFlags:DWord; lpexename :lpwstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameW';
 function QueryFullProcessImageName(hProcess:THandle;dwFlags:DWord; lpexename :lpwstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameW';
+function RealGetWindowClass(Wnd : HWND;ClassnameBuffer : pwidechar;ClassnameBufferSize : DWORD): DWORD; stdcall; external 'user32.dll' name 'RealGetWindowClassW';
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 

+ 1 - 0
rtl/win/wininc/unifun.inc

@@ -497,6 +497,7 @@ function GetConsoleAliasesW(AliasBuffer:LPWSTR; AliasBufferLength:DWORD; ExeName
 function GetConsoleAliasExesW(ExeNameBuffer:LPWSTR; ExeNameBufferLength:DWORD):DWORD;stdcall;external 'kernel32' name 'GetConsoleAliasExesW';
 function GetConsoleAliasExesW(ExeNameBuffer:LPWSTR; ExeNameBufferLength:DWORD):DWORD;stdcall;external 'kernel32' name 'GetConsoleAliasExesW';
 function GetComputerNameExW(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPWSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExW';
 function GetComputerNameExW(NameType:COMPUTER_NAME_FORMAT;lpbuffer:LPWSTR;nSize:LPDWORD):BOOL;stdcall;external 'kernel32' name 'GetComputerNameExW';
 function QueryFullProcessImageNameW(hProcess:THandle;dwFlags:DWord; lpexename :lpwstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameW';
 function QueryFullProcessImageNameW(hProcess:THandle;dwFlags:DWord; lpexename :lpwstr;lpdwsize:pdword):BOOL; stdcall; external 'kernel32.dll' name 'QueryFullProcessImageNameW';
+function RealGetWindowClassW(Wnd : HWND;ClassnameBuffer : pwidechar;ClassnameBufferSize : DWORD): DWORD; stdcall; external 'user32.dll' name 'RealGetWindowClassW';
 {$endif read_interface}
 {$endif read_interface}