2022年5月14日 星期六

ftdichip RS-232或TTL串行傳輸

 https://ftdichip.com/software-examples/code-examples/delphi-examples/

 

 

2022年5月13日 星期五

ime

 https://p0w3rsh3ll.wordpress.com/2013/06/07/about-keyboard-layouts/

 https://social.technet.microsoft.com/Forums/en-US/2a46ae38-2202-4286-9b46-35bc6e60e861/what-command-can-be-run-from-the-cmd-to-inquire-about-the-language-layout-that-is-used-right-now?forum=w7itproui

 

For the current input language you can try using

reg query "HKCU\Keyboard Layout\Preload" /v 1

The return value includes an eight digit hex value. The first four digits indicate either default layout for the language (all zeros) or a variation (non-zero). The last four digits are the locale id - see:

http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx

From this table, you can see in the example above my input language is English - Australia.

For the keyboard layout you could try

WMIC Path Win32_Keyboard Get Layout

0409 is an English - US keyboard.

For a few other ideas/methods try reading

http://p0w3rsh3ll.wordpress.com/2013/06/07/about-keyboard-layouts/ 




About keyboard layouts
Posted on June 7, 2013   

A colleague from the helpdesk team recently asked if I could report the keyboad layout set before users log onto the computer.

I started digging into WMI classes by typing

Get-CimClass -ClassName *Keyboard*

Then did:

Get-CimInstance Win32_Keyboard

… and noticed the Layout property.

Both the MSDN page about the WMI Win32_Keyboard class…

…and the following powershell commands…

([wmiclass]'Win32_Keyboard').GetText("MOF")            
([wmiclass]'CIM_Keyboard').GetText("MOF")

…confirmed that the layout property is returned as a string value.

The problem with this value is that it’s not human readable and represents actually a hexadecimal value.



The problem with this value is that it’s not human readable and represents actually a hexadecimal value.
Although I can find the mapping of hexadecimal values to a user friendly value in the following registry key HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout\DosKeybCodes, I decided to go another way.

First, do you know that you can use DISM.exe locally:

ime

 IEnumTfLanguageProfiles = interface
['{3D61BF11-AC5F-42C8-A4CB-931BCC28C744}']
function Next(ulCount: Cardinal; const pProfile: PF_LANGUAGEPROFILE; out pcFetch: Cardinal): HRESULT; stdcall;
MSDN  

HRESULT Next(    ULONG ulCount<!---->,
  TF_LANGUAGEPROFILE* pProfile<!---->,
  ULONG* pcFetch<!----> );

Parameters

ulCount
    [in] Specifies the number of elements to obtain.
pProfile
    [out] Pointer to an array of TF_LANGUAGEPROFILE structures that receives the requested data. This array must be at least ulCount elements in size.
pcFetch
    [out] Pointer to a ULONG value that receives the number of elements obtained. This value can be less than the number of items requested. This parameter can be NULL.

 
    Next(int count, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]
    TF_LANGUAGEPROFILE[] profiles, out int fetched);

 

 

 

 

 


type
PF_LANGUAGEPROFILE = ^TF_LANGUAGEPROFILE;
TF_LANGUAGEPROFILE = packed record
clsid: TGUID;
langid: smallint;
catid: TGUID;
fActive: WordBool;
guidProfile: TGUID;
end;

IEnumGUID = interface
['{0002E000-0000-0000-C000-000000000046}']
function Next(celt: Cardinal; out rgelt: TGUID; out pcFetched: Cardinal): HRESULT; stdcall;
function Skip(celt: Cardinal): HRESULT; stdcall;
function Reset: HRESULT; stdcall;
function Clone(out ppEnum: IEnumGUID): HRESULT; stdcall;
end;

IEnumTfLanguageProfiles = interface
['{3D61BF11-AC5F-42C8-A4CB-931BCC28C744}']
function Clone(out ppEnum: IEnumTfLanguageProfiles): HRESULT; stdcall;
function Next(ulCount: Cardinal; const pProfile: PF_LANGUAGEPROFILE; out pcFetch: Cardinal): HRESULT; stdcall;
function Reset: HRESULT; stdcall;
function Skip(ulCount: Cardinal): HRESULT; stdcall;
end;

ITfInputProcessorProfiles = interface
['{1F02B6C5-7842-4EE6-8A0B-9A24183A95CA}']
function Register(const clsid: TGUID): HRESULT; stdcall;
function Unregister(const clsid: TGUID): HRESULT; stdcall;
function AddLanguageProfile(const clsid: TGUID; langid: smallint; const guidProfile: TGUID; const pchDesc: WideString; cchDesc: Cardinal; const pchIconFile: WideString; cchFile, uIconIndex: Cardinal): HRESULT; stdcall;
function RemoveLanguageProfile(const clsid: TGUID; langid: smallint; out guidProfile: TGUID): HRESULT; stdcall;
function EnumInputProcessorInfo(out ppEnum: IEnumGUID): HRESULT; stdcall;
function GetDefaultLanguageProfile(langid: smallint; const catid: TGUID; out clsid: TGUID; out guidProfile: TGUID): HRESULT; stdcall;
function SetDefaultLanguageProfile(langid: smallint; const clsid: TGUID; const guidProfile: TGUID): HRESULT; stdcall;
function ActivateLanguageProfile(const clsid: TGUID; langid: smallint; const guidProfiles: TGUID): HRESULT; stdcall;
function GetActiveLanguageProfile(const clsid: TGUID; out langid: smallint; out guidProfile: TGUID): HRESULT; stdcall;
function GetLanguageProfileDescription(const clsid: TGUID; langid: smallint; const guidProfile: TGUID; out pbstrProfile: WideString): HRESULT; stdcall;
function GetCurrentLanguage(out langid: smallint): HRESULT; stdcall;
function ChangeCurrentLanguage(langid: smallint): HRESULT; stdcall;
function GetLanguageList(out ppLangId: pointer; out ulCount: Cardinal): HRESULT; stdcall;
function EnumLanguageProfiles(langid: smallint; out ppEnum: IEnumTfLanguageProfiles): HRESULT; stdcall;
function EnableLanguageProfile(const clsid: TGUID; langid: smallint; const guidProfile: TGUID; fEnable: WordBool): HRESULT; stdcall;
function IsEnabledLanguageProfile(const clsid: TGUID; langid: smallint; const guidProfile: TGUID; out fEnabled: WordBool): HRESULT; stdcall;
function EnableLanguageProfileByDefault(const clsid: TGUID; langid: smallint; const guidProfile: TGUID; fEnabled: WordBool): HRESULT; stdcall;
function SubstituteKeyboardLayout(const clsid: TGUID; langid: smallint; const guidProfile: TGUID; hKL: pointer): HRESULT; stdcall;
end;

function TF_CreateInputProcessorProfiles(out profiles: ITfInputProcessorProfiles): HRESULT; stdcall; external 'msctf.dll'; 


https://github.com/ryancheung/ImeSharp

IterateSubKeys(Registry.CurrentUser, "SOFTWARE\\Microsoft\\CTF\\TIP\\" + subKeyName + "\\LanguageProfile",

https://www.xujun.org/note-48842.html

文/黄忠成

  ComImport SecurityCritical SuppressUnmanagedCodeSecurity

Guid  “1F02B6C5-7842-4EE6-8A0B-9A24183A95CA” ),
      InterfaceType ComInterfaceType  .InterfaceIsIUnknown)]
   ITfInputProcessorProfiles
 
    
 
 
 
 
 https://github.com/xyzzy-022/xyzzy/issues/170
 Vista で読みから変換候補リストを取得する Text Services Framework
 http://hp.vector.co.jp/authors/VA050396/tech_01.html
 
 
 https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/Win7Samples/winui/tsf
 https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/winui/tsf/tsfapp/tsfapp.cpp
https://docs.microsoft.com/en-us/windows/win32/api/_tsf/
 msctf_TLB.pas
 https://github.com/lantaoxu/Windows-Server-2003/blob/5c6fe3db626b63a384230a1aa6b92ac416b0765f/windows/advcore/ctf/inc/msime.h
https://pastebin.com/PBcJeuKV 
TSF "Text Services Framework"」の項でチョット触れましたが、これを実現するために ImmGetConversionList 関数を使う人がいます。この関数を使っても不可能ではありませんが、そもそも使うべき関数を間違っています。ImmGetCompositionString 関数ならズバリな解答を得ることができます。しかも、Windows Vista でも問題なく使えます。
http://www.kanazawa-net.ne.jp/~pmansato/net/net_tech_ime.htm
http://hp.vector.co.jp/authors/VA050396/tech_01.html
ImmGetConversionListの代替は?
https://www.petitmonte.com/bbs/answers?question_id=6145
https://docs.microsoft.com/zh-tw/windows/win32/api/msime/

//L"MSIME.China";
//L"MSIME.Japan";
//L"MSIME.Taiwan";
//L"MSIME.Taiwan.ImeBbo";
 
 
mepad.h
imm.h
immdev.h
msime.h
msimeapi.h
 
 Text Services Framework, you need these headers:

    ctffunc.h
    ctfspui.h
    ctfutb.h
    inputscope.h
    msaatext.h
    msctf.h
 
 
 

ime

 GetSystemMetrics WM_IME_CONTROL

https://docs.microsoft.com/zh-TW/windows/win32/intl/nls-terminology

 code  ImmGetCandidateList

https://docs.microsoft.com/zh-tw/windows/win32/intl/input-method-manager

https://docs.microsoft.com/zh-tw/windows/win32/intl/input-method-manager-messages

https://mugichoko.hatenablog.com/entry/2018/10/27/003856

https://dragon-john.blogspot.com/2013/06/c-win7.html

2022年5月12日 星期四

2022年5月11日 星期三

delphi message queue registing Window procedure AllocateHWnd

 delphi message queue registing Window procedure AllocateHWnd RegisterWindowMessage DeallocateHWnd

https://zarko-gajic.iz.hr/receive-windows-messages-in-your-custom-delphi-class-nonwindowed-control-object/

  Window procedure 

https://stackoverflow.com/questions/36079268/bringing-tcallbackthunk-to-64-bit-via-anonymous-function

http://computer-programming-forum.com/31-pascal/a8757a5d056efcad.htm

https://www.programmersought.net/article/334918782.html

https://edn.embarcadero.com/article/10323


 TWndMethod
 TWinControl.MainWndProc
 TWinControl.WndProc
 TControl.WndProc
 TObject.Dispatch
 TWinControl.DefaultHandler
 TControl.Perform
 TWinControl.Broadcast
 TWinControl.WMPaint
 TWinControl 

https://blog.actorsfit.com/a?ID=00200-873e72f4-0375-4905-a5ba-9f1d7cdb85b4

TranslateMessage
DispatchMessage
PostMessage
GetMessage
PeekMessage

https://stackoverflow.com/questions/50041183/properly-overriding-wndproc

https://docwiki.embarcadero.com/RADStudio/Sydney/en/The_WndProc_Method

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registerwindowmessagea

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Declaring_a_New_Message-handling_Method

TApplicationEvents RegisterWindowMessage  Message Event

https://www.codeproject.com/Articles/546/Message-Management#Registered%20Window%20Messages

https://edn.embarcadero.com/article/38447

https://stackoverflow.com/questions/52380172/sendmessage-fail-using-registerwindowmessage-api

Adventures in Delphi 6 Messaging

https://www.informit.com/articles/article.aspx?p=27217&seqNum=9

Reactive extension for Delphi Reactive Extensions

 https://github.com/Purik/RxDelphi

system.loadlibrary JNI_OnLoad Embarcadero.Jni

 https://stackoverflow.com/questions/48670592/invoke-jni-onload-from-delphi

 https://developer.android.com/training/articles/perf-jni

https://community.embarcadero.com/article/technical-articles/1040-using-the-android-jni-bridge-to-open-a-pdf

 Using the Android JNI bridge to open a PDF

Delphi   ZeroPlayer Library  Android dynamic library 

https://docwiki.embarcadero.com/Libraries/Sydney/en/System.IOUtils.TPath.GetLibraryPath

 uses
   ..., Embarcadero.Jni

const
  LIBNAME = 'libtest.so';

function try_load_dll: THandle;
var
  libPath: string;
  OnLoadFunc: TJNI_OnLoad;
  hlib: THandle;
begin
  Result := 0;
  libPath := TPath.Combine(TPath.GetLibraryPath, libname);
  hlib := LoadLibrary(PChar(libPath));
  if hlib = 0 then Exit;
  @OnLoadFunc := GetProcAddress(hlib, 'JNI_OnLoad');
  if not Assigned(OnLoadFunc) then
  begin
    FreeLibrary(hlib);
    Exit;
  end;
  OnLoadFunc(PJavaVM(System.JavaMachine), nil);
  Result := hlib;
end;

https://question-it.com/questions/3417717/vyzov-jni_onload-iz-delphi

LIBNAME = 'libtest.so';
function try_load_dll:integer;
var libPath:system.string;
begin
  _status:= 0 ;
  libPath:=TPath.Combine(tpath.GetLibraryPath,libname);
  _status := LoadLibrary(PChar(libPath));
  result:=_Status;
  if( _status= 0 )then exit;
end;

JNI_OnLoad 


https://coderoad.ru/48670592/%D0%92%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C-JNI_OnLoad-%D0%BE%D1%82-Delphi



https://arophix.com/2017/12/01/android-jni/

https://www.programmersought.net/article/329130475.html

https://programmer.ink/think/jni_ndk-advanced-programming-guide-part-2.html

JNI_NDK Advanced Programming Guide Part

2022年5月10日 星期二

Process memory usage

 Process memory usage

GetProcessWorkingSetSize() SetProcessWorkingSetSize()   
h,mMin,mMax:cardinal;
h:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
GetProcessWorkingSetSize(h,mMin,mMax);
CloseHandle(h);
h,newMin,newMax:cardinal;
h:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_SET_QUOTA, false, PID);
SetProcessWorkingSetSize(h, newMin, newMax);

https://w-shadow.com/blog/2006/09/04/process-memory-usage/ 




GetSystemTimes to get the total system timing.

GetProcessTimes to get timing for a specific process.

GetCurrentProcess to get current process handle.

PerfCounter Performance Counter

https://docs.microsoft.com/zh-tw/troubleshoot/windows-server/performance/manually-rebuild-performance-counters

https://www.codeproject.com/articles/9113/get-cpu-usage-with-getsystemtimes

https://docs.microsoft.com/en-us/windows/win32/perfctrs/about-performance-counters

https://www.codeproject.com/Articles/10538/Getting-CPU-Usage-in-a-Multiprocessor-Machine

https://www.codeproject.com/search.aspx?q=cpu++usage&doctypeid=1%3b2%3b3%3b13%3b11%3b17

delphi Multicore library parallel programming

 Using TTask from the Parallel Programming Library
https://docwiki.embarcadero.com › Sydney
 
TTask creates and manages interaction with instances of ITask. ITask is an interface that provides a range of methods and properties to Start, Wait, Cancel and ...
 


    System.Threading.TTask - RAD Studio API Documentation
    https://docwiki.embarcadero.com › Syste...

   
    TTask is a class managing and representing procedures that can be executed in parallel threads. An instance of TTask represents a single task or unit of ...


delphi Parallel 之TTask 初試- 程式人生
https://www.itread01.com › content
  — Clear; SetLength(TaskArray, C); for I := 0 to C - 1 do begin TaskArray[I] := TTask.Create(procedure var Id: string; begin Id := TThread.

Introducing the TTask class | Delphi GUI Programming with ...
https://subscription.packtpub.com › book
 
TTask.Run( procedure begin // Do something end ); Copy. We should recall the TThread.CreateAnonymousThread class function but a bit more abstracted.

 

https://www.codetd.com/en/article/9464576

 http://delphi.org/2015/02/parallel-for-loops/

https://github.com/MarcoDelphiBooks/ObjectPascalHandbook104

 https://grantmcdermott.com/ds4e/parallel.html

https://github.com/eStreamSoftware/delphi-ppl 



delphi CPU  affinity mask  Thread Affinity Mask


SetProcessAffinityMask - Select more than one processor?

https://stackoverflow.com/questions/9078838/setprocessaffinitymask-select-more-than-one-processor
function CombinedProcessorMask(const Processors: array of Integer): DWORD_PTR;
  i: Integer;
  Result := 0;
  for i := low(Processors) to high(Processors) do
    Result := Result or SingleProcessorMask(Processors[i]);
function ProcessorInMask(const ProcessorMask: DWORD_PTR;
  const ProcessorIndex: Integer): Boolean;
  Result := (SingleProcessorMask(ProcessorIndex) and ProcessorMask)<>0;
 

得知自己在某個cpu core 上


https://stackoverflow.com/questions/33571061/get-the-percentage-of-total-cpu-usage

Get the Percentage of Total CPU Usage

CPU 負載

https://github.com/aadamfr/Super_macro/blob/master/adCpuUsage.pas 

AdCpuUsage

 

 How to monitor CPU and network utilization

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/mt708809(v=vs.85) 

2022年5月8日 星期日

object employee employeeID DepartmentID national identity

 object employee employeeID DepartmentID national identity

National Identification Number
national identity card number database
National Identification Number (NIN)
National Identity Card (NIC)  
National IDs Around the World — Interactive map
National ID Card
https://en.wikipedia.org/wiki/National_identification_number
https://en.wikipedia.org/wiki/Belgian_identity_card
https://en.wikipedia.org/wiki/Lithuanian_identity_card
https://en.wikipedia.org/wiki/Passport


Entity Framework 4: Then and Now
https://daveswersky.wordpress.com/2010/05/26/entity-framework-4-then-and-now/










Architecture Hierarchy

CodeTyphon Alternative 龍捲風 IDE

 
Pascal Object Pascal Pascal Script Oxygene Clascal Concurrent Pascal SuperPascal
https://handwiki.org/wiki/Software:Dev-Pascal
https://www.pilotlogic.com/sitejoom/index.php
MonoDevelop  pascal
CodeTyphon
PascalABC.NET
Dev-Pascal
Lazarus  
Free Pascal IDE
Delphi
KDevelop
MIDletPascal
Morfik
MSEide
Understand
Visual Studio via Oxygene
PocketStudio

SharpDevelop

RemObjects Oxygene Object Pascal

Delphi Prism
Groovy
Eclipse GDT
IntelliJ IDEA
NetBeans
SlickEdit

https://handwiki.org/wiki/Software:Dev-Pascal
https://en.wikipedia.org/wiki/Integrated_development_environment
https://stackoverflow.com/questions/524058/net-or-mono-vs-qt-which-one-for-cross-platform-development
https://pl.wikipedia.org/wiki/Delphi_Prism
    Delphi.NET
    Kylix
    Lazarus
    C#
    C++/CLI
    Delphi.NET
    Nemerle
    Oxygene
    Visual Basic.NET
    .NET
    Mono
    DotGNU
    ROTOR
    MonoDevelop
    SharpDevelop
https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Pascal.2C_Object_Pascal
 

2022年5月7日 星期六

"SkSL" shading language skia

 https://cavalry.scenegroup.co/

  https://main.d1fnr9j76bdr39.amplifyapp.com/nodes/effects/sksl-shader/

https://en.wikipedia.org/wiki/Skia_Graphics_Engine

https://github.com/thelumiereguy

https://github.com/Jaseemakhtar/ComposeCG/

https://github.com/livingcreative/kcanvas

Specialized Builds 2D graphics Renderer library

2022年5月6日 星期五

響應式 Running a thread while keeping GUI responsive Responsive GUI using threads for background work and PostMessage to report back from the threads

  Embarcadero Delphi Running a thread while keeping GUI responsive Responsive GUI using threads for background work and PostMessage to report back from the threads


https://riptutorial.com/delphi/example/11592/responsive-gui-using-threads-for-background-work-and-postmessage-to-report-back-from-the-threads


Retrieving updated TDataSet data in a background thread

https://riptutorial.com/delphi/topic/4114/retrieving-updated-tdataset-data-in-a-background-thread

2022年5月5日 星期四

IDL2PAS MIDL tools tlibimp Microsoft IDL

 https://www.drbob42.com/examines/home.htm

https://stackoverflow.com/questions/5091829/idl-to-type-library 

https://docs.microsoft.com/zh-tw/troubleshoot/windows-client/deployment/dynamic-link-library

https://stackoverflow.com/questions/7994852/consume-net-assembly-in-delphi-xe2/8013047#8013047

https://stackoverflow.com/questions/8431313/how-to-fix-this-unmanaged-exports-trouble-using-delphi-c

https://www.delphipower.xyz/guide_6/using_delphi_or_idl_syntax.html

delphi idl dll predeclid predeclid typeinfo except propput propputref members except CoClass public alias typeinfo

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_Delphi_or_RIDL_Syntax

Delphi  Developers Guide Interface Definition Language idl

COM, COM+, Delphi Tutorials and References - Binh Ly


https://en.wikipedia.org/wiki/Microsoft_Interface_Definition_Language

DLL OAIDL.IDL OBJIDL.IDL  tlb TypeLib

https://docs.microsoft.com/zh-tw/windows/win32/com/anatomy-of-an-idl-file

https://github.com/ojdkbuild/tools_toolchain_sdk71/blob/master/Include/PropIdl.Idl




1.【How To Do COM In C  Builder 5】----Interface Definition Language (IDL)
http://www.blong.com/Conferences/IConUK2000/C  COM/COM In C  Builder.htm#IDL     2.【C  Builder Unleashed】----Chapter 27: C  Builder, OLE Automation, and Distributed COM
http://www.tietovayla.fi/BORLAND/CPLUS/bcppbuilder/4/books/cppbu/chapter27/    3.ActiveX and the VCL (part 1)----Introducing the wizards
http://community.borland.com/article/0,1410,20669,00.html    4.ActiveX and the VCL (part 2) ---Connecting to ActiveX Servers
http://community.borland.com/article/0,1410,20677,00.html    5.MIDL Command-Line Reference
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/general_midl_command_line_syntax.asp    6. Microsoft Interface Definition Language (MIDL) Reference
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/general_midl_command_line_syntax.asp
Microsoft Interface Definition Language (MIDL)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/general_midl_command_line_syntax.asp   

2022年5月4日 星期三

Instructions and precautions for calling JNI jar Java in Delphi cross platform development Android

 https://cdmana.com/2022/03/202203200608160695.html

 https://synaptica.info/en/2017/03/07/delphi-fmx-android-app-to-check-mem-usage/

 Android, how to call a TJIntent 

 

https://en.delphipraxis.net/topic/1361-android-how-to-call-a-tjintent/ 

 

  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, Androidapi.JNI.App
  ,Androidapi.JNIBridge
  ,Androidapi.JNI.GraphicsContentViewText
  ,Androidapi.JNI.JavaTypes
  ,Androidapi.JNI.Os
  ,FMX.Helpers.Android
  ,Androidapi.Helpers
  ,Androidapi.JNI.ActivityManager;


TAndroidHelper


https://docwiki.embarcadero.com/CodeExamples/Alexandria/en/FMX.Android_Intents_Sample


http://aziga.x10.mx/delphi/index.php?option=com_content&view=article&id=28&Itemid=33

https://blogs.embarcadero.com/adopting-the-openjdk-for-delphi-android-development/


delphi java code android  Translation

https://github.com/tothpaul/APKPascal


https://github.com/chinawsb/QSDK

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_a_Custom_Set_of_Java_Libraries_In_Your_RAD_Studio_Android_Apps

Developing Fluent User Interfaces for Windows 10

 The ribbon component of the Microsoft Office Fluent  interface  users Office applications.

 https://github.com/fluentribbon/Fluent.Ribbon

 
Developing Fluent User Interfaces for Windows 10 https://youtu.be/uOpbLLDh1hc

https://en.wikipedia.org/wiki/Fluent_interface

 Microsoft Office 2007 § User interface
https://www.microsoft.com/design/fluent/#/

https://github.com/sourcechord/FluentWPF

https://www.dima.to/blog/how-to-host-wpf-controls-in-a-delphi-application-and-delphi-controls-in-a-wpf-application/

https://code.google.com/archive/p/delphihtmlwriter/

https://www.thedelphigeek.com/2009/04/fluent-xml-1.html

https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Program_Control_(Delphi)

https://github.com/mremec/omnixml

https://github.com/VSoftTechnologies/Delphi-Fluent-XML/blob/master/README.md

https://blogs.embarcadero.com/es/giving-your-apps-the-fluent-ui-look-and-feel-with-delphi/

https://blog.marcocantu.com/blog/fluent_delphi.html

https://www.andrecelestino.com/fluent-interface-no-delphi/

https://github.com/NickHodges/delphihtmlwriter

https://blogs.embarcadero.com/delphi-offers-deeper-third-party-tool-api-integration-than-wpf-and-electron/

 

 

 

 https://docs.microsoft.com/en-us/dotnet/desktop/wpf/advanced/wpf-and-win32-interoperation?view=netframeworkdesktop-4.8

WPF and Win32 Interoperation
This topic provides an overview of how to interoperate WPF and Win32 code. Windows Presentation Foundation (WPF) provides a rich environment for creating applications. However, when you have a substantial investment in Win32 code, it might be more effective to reuse some of that code.
WPF and Win32 Interoperation Basics

Delphi runtime

 https://blogs.embarcadero.com/coming-delphi-10-4-runtime-library-enhancements/

 https://github.com/salvadordf/WebView4Delphi

https://github.com/jchv/OpenWebView2Loader

DRT

A better Delphi runtime.
https://gitee.com/YWtheGod/DRT


Combine with librarys in C code. Now contains:

    Zlib 1.2.12 from https://github.com/jtkukunas/zlib

    XXHASH 0.8.1 from https://github.com/Cyan4973/xxHash

    LZ4 from https://github.com/lz4/lz4

    zstd from https://github.com/facebook/zstd

    fastmm5 from https://github.com/pleriche/FastMM5 (used in windows platforms)

    mimalloc from https://github.com/microsoft/mimalloc (used in non windows platforms)

    Update 2022/05/02: Add FastMM5(for Windows) and mimalloc(for other platforms), and Patch move function to use MSVCRT's memmove implement(Windows only, other platforms already use CRT's memmove)

    Update 2022/04/24: Add WebView2Loader Support for FMX Edge, no more DLL needed for FMX Win App. and Add a lot WebView2 Related Units from https://github.com/salvadordf/WebView4Delphi

    Update 2022/04/23: Add WebView2Loader PASCAL implementation, so no more WebView2Loader.DLL needed. Translated from https://github.com/jchv/OpenWebView2Loader

2022年5月2日 星期一

Developer Tools Debug Tools Memory Leaks Delphi High Performance Profiler and Memory Analysis Tools for Delphi


 GpProfile   
 MemProof  
 AsmProfiler   
 Sampling Profiler   
 ProDelphi   
 AQTime   
 SmartInspect 

https://torry.net/pages.php?id=1526

TStopWatch TTimeSpan QueryPerformanceCounter GetTickCount GetTickCount64

 https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Diagnostics.TStopwatch