mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-08 06:57:29 +00:00
* Keyman for Windows 10.0 Open Source * Squashed 'windows/src/ext/jedi/jedi/' content from commit f444ad2 git-subtree-dir: windows/src/ext/jedi/jedi git-subtree-split: f444ad2da4693851e523f1ea6bd541f701904c24 * Squashed 'windows/src/ext/jedi/jcl/' content from commit d63d3c9fd git-subtree-dir: windows/src/ext/jedi/jcl git-subtree-split: d63d3c9fd9ff84efdd8159084ec6a60313644243 * Squashed 'windows/src/ext/jedi/jvcl/' content from commit bee19f3b4 git-subtree-dir: windows/src/ext/jedi/jvcl git-subtree-split: bee19f3b46909fde2fa92c06cd2706f41d99f6c3 * Add required .res files * Add required .res files * Add docbook files (forced) * Add required libxslt * Add required jedi files * Add installation files * Tweak .gitignore for open * CI * Remove KMW from Developer source (#122) * Remove KMW from Developer source (copies during build) * Remove KMW from Developer source (copies during build) * Remove KMW from Developer source (copies during build) * Fixup release build and copy license, readme from kmw during build * Remove obsolete build help documentation * Keyman Engine 10 on Windows regression for shift states (#129) * Improve #128 -- cleaner debug messages * Fixes #127, shift state now resets correctly; and more work for #128 * Fixes #130 (#131)
43 lines
983 B
ObjectPascal
43 lines
983 B
ObjectPascal
unit LoadIndirectStringUnit;
|
|
|
|
interface
|
|
|
|
function LoadIndirectString(const name: WideString): WideString;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Windows;
|
|
|
|
type
|
|
TSHLoadIndirectString = function(const pszSource: PWideChar; pszOutBuf: PWideChar; cchOutBuf: UINT; ppvReserved: Pointer): HRESULT; stdcall;
|
|
|
|
var
|
|
hSHLWApi: THandle = 0;
|
|
FSHLoadIndirectString: TSHLoadIndirectString = nil;
|
|
|
|
function LoadIndirectString(const name: WideString): WideString;
|
|
var
|
|
buf: array[0..260] of WideChar;
|
|
begin
|
|
Result := '';
|
|
|
|
if hSHLWApi = 0 then
|
|
begin
|
|
hSHLWApi := LoadLibrary('shlwapi.dll');
|
|
if hSHLWApi = 0 then
|
|
Exit;
|
|
FSHLoadIndirectString := GetProcAddress(hSHLWApi, 'SHLoadIndirectString');
|
|
end;
|
|
|
|
if not Assigned(FSHLoadIndirectString) then Exit;
|
|
if FSHLoadIndirectString(PWideChar(name), buf, Length(buf), nil) = S_OK then
|
|
Result := buf;
|
|
end;
|
|
|
|
initialization
|
|
finalization
|
|
if hSHLWApi <> 0 then FreeLibrary(hSHLWApi);
|
|
hSHLWApi := 0;
|
|
FSHLoadIndirectString := nil;
|
|
end.
|