From 534fdb2e8c413c114f990c7e71a198946329cb06 Mon Sep 17 00:00:00 2001 From: marco Date: Sat, 14 Aug 2010 14:59:04 +0000 Subject: [PATCH] * Patch from Dmitry. imm + a dynloaded variant to be used for w9x. Mantis 17167 git-svn-id: trunk@15810 - --- .gitattributes | 2 + packages/winunits-base/Makefile | 124 ++-- packages/winunits-base/Makefile.fpc | 2 +- .../winunits-base/src/buildwinutilsbase.pp | 2 +- packages/winunits-base/src/imm.pas | 652 ++++++++++++++++++ packages/winunits-base/src/imm_dyn.pas | 224 ++++++ 6 files changed, 942 insertions(+), 64 deletions(-) create mode 100644 packages/winunits-base/src/imm.pas create mode 100644 packages/winunits-base/src/imm_dyn.pas diff --git a/.gitattributes b/.gitattributes index 474ac467aa..50dcf21c3c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5847,6 +5847,8 @@ packages/winunits-base/src/dwmapi.pp svneol=native#text/plain packages/winunits-base/src/flatsb.pp svneol=native#text/plain packages/winunits-base/src/htmlhelp.pp svneol=native#text/plain packages/winunits-base/src/imagehlp.pp svneol=native#text/plain +packages/winunits-base/src/imm.pas svneol=native#text/plain +packages/winunits-base/src/imm_dyn.pas svneol=native#text/plain packages/winunits-base/src/mmsystem.pp svneol=native#text/plain packages/winunits-base/src/multimon.pp svneol=native#text/plain packages/winunits-base/src/ole2.pp svneol=native#text/plain diff --git a/packages/winunits-base/Makefile b/packages/winunits-base/Makefile index 608f38e524..2292cdd3a5 100644 --- a/packages/winunits-base/Makefile +++ b/packages/winunits-base/Makefile @@ -1,5 +1,5 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/05] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2010/08/11] # default: all MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux @@ -450,187 +450,187 @@ ifeq ($(FULL_TARGET),mipsel-linux) override TARGET_UNITS+=buildwinutilsbase endif ifeq ($(FULL_TARGET),i386-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-qnx) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-nativent) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-macos) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),x86_64-solaris) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),mipsel-linux) -override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool +override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_RSTS+=jwawintype comconst diff --git a/packages/winunits-base/Makefile.fpc b/packages/winunits-base/Makefile.fpc index 277f35271e..92b1bfb54b 100644 --- a/packages/winunits-base/Makefile.fpc +++ b/packages/winunits-base/Makefile.fpc @@ -12,7 +12,7 @@ packages=fcl-registry fcl-base [target] units=buildwinutilsbase implicitunits=flatsb winver mmsystem comobj comconst commdlg commctrl ole2 activex shellapi shlobj oleserver \ - shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool + shfolder richedit imagehlp wininet uxtheme dwmapi multimon htmlhelp winutils comserv winspool imm imm_dyn examples=examples diff --git a/packages/winunits-base/src/buildwinutilsbase.pp b/packages/winunits-base/src/buildwinutilsbase.pp index 917dc3b78a..c855bc2e41 100644 --- a/packages/winunits-base/src/buildwinutilsbase.pp +++ b/packages/winunits-base/src/buildwinutilsbase.pp @@ -24,7 +24,7 @@ uses flatsb, winver, mmsystem, comconst, commctrl, comobj, commdlg, ole2, activex, shellapi, shlobj, oleserver, shfolder, richedit, imagehlp, wininet, uxtheme, dwmapi, multimon, htmlhelp, winutils, - comserv, winspool; + comserv, winspool, imm, imm_dyn; implementation diff --git a/packages/winunits-base/src/imm.pas b/packages/winunits-base/src/imm.pas new file mode 100644 index 0000000000..21e1b2ded8 --- /dev/null +++ b/packages/winunits-base/src/imm.pas @@ -0,0 +1,652 @@ +(********************************************************************* *) +(* imm.h - Input Method Manager definitions *) +(* *) +(* Copyright (c) Microsoft Corporation. All rights reserved. *) +(* *) +(* Converted to pascal by Dmitry Boyarintsev, using Chelper. *) +(* *) +(********************************************************************* *) + +unit + imm; + +{$mode delphi} + +interface + +uses + Windows; + +{$PACKRECORDS C} + +// IME_Codes +// bit field for conversion mode +const + IME_CMODE_ALPHANUMERIC = $0000; + IME_CMODE_NATIVE = $0001; + IME_CMODE_CHINESE = IME_CMODE_NATIVE; + IME_CMODE_HANGUL = IME_CMODE_NATIVE; + IME_CMODE_JAPANESE = IME_CMODE_NATIVE; + IME_CMODE_KATAKANA = $0002; // only effect under IME_CMODE_NATIVE + IME_CMODE_LANGUAGE = $0003; + IME_CMODE_FULLSHAPE = $0008; + IME_CMODE_ROMAN = $0010; + IME_CMODE_CHARCODE = $0020; + IME_CMODE_HANJACONVERT = $0040; + +type + HIMC = DWORD; + HIMCC = DWORD; + +type + PHKL = ^HKL; + LPHKL = PHKL; + +type + LPUINT = PUINT; + +// declared at rtl\win\wininc\struct.inc +{type + PtagCOMPOSITIONFORM = ^tagCOMPOSITIONFORM; + tagCOMPOSITIONFORM = record + dwStyle : DWORD; + ptCurrentPos : POINT; + rcArea : RECT; + end; + COMPOSITIONFORM = tagCOMPOSITIONFORM; + PCOMPOSITIONFORM = PtagCOMPOSITIONFORM; + NPCOMPOSITIONFORM = PtagCOMPOSITIONFORM; + LPCOMPOSITIONFORM = PtagCOMPOSITIONFORM;} + +// declared at rtl\win\wininc\struct.inc +{type + PtagCANDIDATEFORM = ^tagCANDIDATEFORM; + tagCANDIDATEFORM = packed record + dwIndex : DWORD; + dwStyle : DWORD; + ptCurrentPos : POINT; + rcArea : RECT; + end; + CANDIDATEFORM = tagCANDIDATEFORM; + PCANDIDATEFORM = PtagCANDIDATEFORM; + NPCANDIDATEFORM = PtagCANDIDATEFORM; + LPCANDIDATEFORM = PtagCANDIDATEFORM;} + + +// declared at rtl\win\wininc\struct.inc +{type + PtagCANDIDATELIST = ^tagCANDIDATELIST; + tagCANDIDATELIST = packed record + dwSize : DWORD; + dwStyle : DWORD; + dwCount : DWORD; + dwSelection : DWORD; + dwPageStart : DWORD; + dwPageSize : DWORD; + dwOffset : array [0..0] of DWORD; + end; + CANDIDATELIST = tagCANDIDATELIST; + PCANDIDATELIST = PtagCANDIDATELIST; + NPCANDIDATELIST = PtagCANDIDATELIST; + LPCANDIDATELIST = PtagCANDIDATELIST;} + + +type + PtagREGISTERWORDA = ^tagREGISTERWORDA; + tagREGISTERWORDA = packed record + lpReading : LPSTR; + lpWord : LPSTR; + end; + REGISTERWORDA = tagREGISTERWORDA; + TREGISTERWORDA = REGISTERWORDA; + PREGISTERWORDA = PtagREGISTERWORDA; + NPREGISTERWORDA = PtagREGISTERWORDA; + LPREGISTERWORDA = PtagREGISTERWORDA; + +type + PtagREGISTERWORDW = ^tagREGISTERWORDW; + tagREGISTERWORDW = packed record + lpReading : LPWSTR; + lpWord : LPWSTR; + end; + REGISTERWORDW = tagREGISTERWORDW; + TREGISTERWORDW = REGISTERWORDW; + PREGISTERWORDW = PtagREGISTERWORDW; + NPREGISTERWORDW = PtagREGISTERWORDW; + LPREGISTERWORDW = PtagREGISTERWORDW; + +type + PtagRECONVERTSTRING = ^tagRECONVERTSTRING; + tagRECONVERTSTRING = packed record + dwSize : DWORD; + dwVersion : DWORD; + dwStrLen : DWORD; + dwStrOffset : DWORD; + dwCompStrLen : DWORD; + dwCompStrOffset : DWORD; + dwTargetStrLen : DWORD; + dwTargetStrOffset : DWORD; + end; + RECONVERTSTRING = tagRECONVERTSTRING; + TRECONVERTSTRING = RECONVERTSTRING; + PRECONVERTSTRING = PtagRECONVERTSTRING; + NPRECONVERTSTRING = PtagRECONVERTSTRING; + LPRECONVERTSTRING = PtagRECONVERTSTRING; + +const + STYLE_DESCRIPTION_SIZE = 32; + +type + PtagSTYLEBUFA = ^tagSTYLEBUFA; + tagSTYLEBUFA = packed record + dwStyle : DWORD; + szDescription : array [0..STYLE_DESCRIPTION_SIZE-1] of AnsiChar; + end; + STYLEBUFA = tagSTYLEBUFA; + TSTYLEBUFA = STYLEBUFA; + PSTYLEBUFA = PtagSTYLEBUFA; + NPSTYLEBUFA = PtagSTYLEBUFA; + LPSTYLEBUFA = PtagSTYLEBUFA; + +type + PtagSTYLEBUFW = ^tagSTYLEBUFW; + tagSTYLEBUFW = packed record + dwStyle : DWORD; + szDescription : array [0..STYLE_DESCRIPTION_SIZE-1] of WCHAR; + end; + STYLEBUFW = tagSTYLEBUFW; + TSTYLEBUFW = STYLEBUFW; + PSTYLEBUFW = PtagSTYLEBUFW; + NPSTYLEBUFW = PtagSTYLEBUFW; + LPSTYLEBUFW = PtagSTYLEBUFW; + +const + IMEMENUITEM_STRING_SIZE = 80; + +type + PtagIMEMENUITEMINFOA = ^tagIMEMENUITEMINFOA; + tagIMEMENUITEMINFOA = packed record + cbSize : UINT; + fType : UINT; + fState : UINT; + wID : UINT; + hbmpChecked : HBITMAP; + hbmpUnchecked : HBITMAP; + dwItemData : DWORD; + szString : array [0..IMEMENUITEM_STRING_SIZE-1] of AnsiChar; + hbmpItem : HBITMAP; + end; + IMEMENUITEMINFOA = tagIMEMENUITEMINFOA; + TIMEMENUITEMINFOA = IMEMENUITEMINFOA; + PIMEMENUITEMINFOA = PtagIMEMENUITEMINFOA; + NPIMEMENUITEMINFOA = PtagIMEMENUITEMINFOA; + LPIMEMENUITEMINFOA = PtagIMEMENUITEMINFOA; + +type + PtagIMEMENUITEMINFOW = ^tagIMEMENUITEMINFOW; + tagIMEMENUITEMINFOW = packed record + cbSize : UINT; + fType : UINT; + fState : UINT; + wID : UINT; + hbmpChecked : HBITMAP; + hbmpUnchecked : HBITMAP; + dwItemData : DWORD; + szString : array [0..IMEMENUITEM_STRING_SIZE-1] of WCHAR; + hbmpItem : HBITMAP; + end; + IMEMENUITEMINFOW = tagIMEMENUITEMINFOW; + TIMEMENUITEMINFOW = IMEMENUITEMINFOW; + PIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW; + NPIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW; + LPIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW; + +type + PtagIMECHARPOSITION = ^tagIMECHARPOSITION; + tagIMECHARPOSITION = packed record + dwSize : DWORD; + dwCharPos : DWORD; + pt : POINT; + cLineHeight : UINT; + rcDocument : RECT; + end; + IMECHARPOSITION = tagIMECHARPOSITION; + TIMECHARPOSITION = IMECHARPOSITION; + PIMECHARPOSITION = PtagIMECHARPOSITION; + NPIMECHARPOSITION = PtagIMECHARPOSITION; + LPIMECHARPOSITION = PtagIMECHARPOSITION; + +type + IMCENUMPROC = function(par0: HIMC; par1: LPARAM): LongBool; stdcall; + TIMCENUMPROC = IMCENUMPROC; + +// prototype of IMM API + +const + Imm = 'imm32'; + +function ImmInstallIMEA(lpszIMEFileName, lpszLayoutText: LPCSTR): HKL; stdcall; external Imm name 'ImmInstallIMEA'; +function ImmInstallIMEW(lpszIMEFileName, lpszLayoutText: LPCWSTR): HKL; stdcall; external Imm name 'ImmInstallIMEW'; +function ImmGetDefaultIMEWnd(wnd: HWND): HWND; stdcall; external Imm name 'ImmGetDefaultIMEWnd'; +function ImmGetDescriptionA(kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionA'; +function ImmGetDescriptionW(kl: HKL; lpszDescription: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionW'; + +function ImmGetIMEFileNameA(kl: HKL; lpszFileName: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameA'; +function ImmGetIMEFileNameW(kl: HKL; lpszFileName: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameW'; + +function ImmGetProperty (kl: HKL; fdwIndex: DWORD): DWORD; stdcall; external Imm name 'ImmGetProperty'; +function ImmIsIME(kl: HKL): LongBool; stdcall; external Imm name 'ImmIsIME'; +function ImmSimulateHotKey(wnd: HWND; dwHotKeyID: DWORD): LongBool; stdcall; external Imm name 'ImmSimulateHotKey'; + +function ImmCreateContext: HIMC; stdcall; external Imm name 'ImmCreateContext'; +function ImmDestroyContext(imc: HIMC): LongBool; stdcall; external Imm name 'ImmDestroyContext'; +function ImmGetContext(wnd: HWND): HIMC; stdcall; external Imm name 'ImmGetContext'; + +function ImmReleaseContext(wnd: HWND; imc: HIMC): LongBool; stdcall; external Imm name 'ImmReleaseContext'; +function ImmAssociateContext(wnd: HWND; imc: HIMC): HIMC; stdcall; external Imm name 'ImmAssociateContext'; + +function ImmAssociateContextEx(wnd: HWND; imc: HIMC; dwFlags: DWORD): LongBool; stdcall; external Imm name 'ImmAssociateContextEx'; +function ImmGetCompositionStringA(imc: HIMC; dwIndex: DWORD; + lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringA'; +function ImmGetCompositionStringW(imc: HIMC; dwIndex: DWORD; + lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringW'; + +function ImmSetCompositionStringA(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID; + dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringA'; +function ImmSetCompositionStringW(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID; + dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringW'; + +function ImmGetCandidateListCountA(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountA'; +function ImmGetCandidateListCountW(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountW'; + +function ImmGetCandidateListA(imc: HIMC; deIndex: DWORD; + lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListA'; +function ImmGetCandidateListW(imc: HIMC; deIndex: DWORD; + lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListW'; + +function ImmGetGuideLineA(imc: HIMC; dwIndex: DWORD; lpBuf: LPSTR; + dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineA'; +function ImmGetGuideLineW(imc: HIMC; dwIndex: DWORD; lpBuf: LPWSTR; + dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineW'; + +function ImmGetConversionStatus(imc: HIMC; lpfdwConversion, lpfdwSentence: LPDWORD): LongBool; stdcall ; external Imm name 'ImmGetConversionStatus'; +function ImmSetConversionStatus(imc: HIMC; fdwConversion, fdwSentence: DWORD): LongBool; stdcall ; external Imm name 'ImmSetConversionStatus'; +function ImmGetOpenStatus(imc: HIMC): LongBool; stdcall ; external Imm name 'ImmGetOpenStatus'; +function ImmSetOpenStatus(imc: HIMC; par1: LongBool): LongBool; stdcall ; external Imm name 'ImmSetOpenStatus'; + +function ImmGetCompositionFontA(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontA'; +function ImmGetCompositionFontW(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontW'; + +function ImmSetCompositionFontA(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontA'; +function ImmSetCompositionFontW(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontW'; + +function ImmConfigureIMEA(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEA'; +function ImmConfigureIMEW(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEW'; + +function ImmEscapeA(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeA'; +function ImmEscapeW(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeW'; + +function ImmGetConversionListA(kl: HKL; imc: HIMC; lpSrc: LPCSTR; + lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListA'; +function ImmGetConversionListW(kl: HKL; imc: HIMC; lpSrc: LPCWSTR; + lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListW'; + +function ImmNotifyIME(imc: HIMC; dwAction, dwIndex, dwValue: DWORD): LongBool; stdcall ; external Imm name 'ImmNotifyIME'; +function ImmGetStatusWindowPos(imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall ; external Imm name 'ImmGetStatusWindowPos'; +function ImmSetStatusWindowPos(imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall ; external Imm name 'ImmSetStatusWindowPos'; +function ImmGetCompositionWindow(imc: HIMC; lpCompForm: LPCOMPOSITIONFORM): LongBool; stdcall ; external Imm name 'ImmGetCompositionWindow'; +function ImmSetCompositionWindow(imc: HIMC; lpCompForm: LPCOMPOSITIONFORM): LongBool; stdcall ; external Imm name 'ImmSetCompositionWindow'; +function ImmGetCandidateWindow(imc: HIMC; par1: DWORD; lpCandidate: LPCANDIDATEFORM): LongBool; stdcall ; external Imm name 'ImmGetCandidateWindow('; +function ImmSetCandidateWindow(imc: HIMC; lpCandidate: LPCANDIDATEFORM): LongBool; stdcall ; external Imm name 'ImmSetCandidateWindow'; + +function ImmIsUIMessageA(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageA'; +function ImmIsUIMessageW(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageW'; + +function ImmGetVirtualKey(wnd: HWND): UINT; stdcall ; external Imm name 'ImmGetVirtualKey'; + +type + REGISTERWORDENUMPROCA = function(lpszReading: LPCSTR; par1: DWORD; + lpszString: LPCSTR; par3: LPVOID): Integer; stdcall; + TREGISTERWORDENUMPROCA = REGISTERWORDENUMPROCA; + + REGISTERWORDENUMPROCW = function(lpszReading: LPCWSTR; par1: DWORD; + lpszString: LPCWSTR; par3: LPVOID): Integer; stdcall; + TREGISTERWORDENUMPROCW = REGISTERWORDENUMPROCW; + +function ImmRegisterWordA(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordA'; +function ImmRegisterWordW(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordW'; + +function ImmUnregisterWordA(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszUnregister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordA'; +function ImmUnregisterWordW(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszUnregister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordW'; + +function ImmGetRegisterWordStyleA(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFA): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleA'; +function ImmGetRegisterWordStyleW(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFW): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleW'; + +function ImmEnumRegisterWordA(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCA; + lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordA'; +function ImmEnumRegisterWordW(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCW; + lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordW'; + +function ImmDisableIME(idThread: DWORD): LongBool; stdcall ; external Imm name 'ImmDisableIME'; +function ImmEnumInputContext(idThread: DWORD; lpfn: IMCENUMPROC; lParam: LPARAM): LongBool; stdcall ; external Imm name 'ImmEnumInputContext'; +function ImmGetImeMenuItemsA(imc: HIMC; dwFlags, dwType: DWORD; + lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOA; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsA'; +function ImmGetImeMenuItemsW(par0: HIMC; dwFlags, dwType: DWORD; + lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOW; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsW'; + +function ImmDisableTextFrameService(idThread: DWORD): LongBool; stdcall ; external Imm name 'ImmDisableTextFrameService'; + +// wParam for WM_IME_CONTROL +const + IMC_GETCANDIDATEPOS = $0007; + IMC_SETCANDIDATEPOS = $0008; + IMC_GETCOMPOSITIONFONT = $0009; + IMC_SETCOMPOSITIONFONT = $000A; + IMC_GETCOMPOSITIONWINDOW = $000B; + IMC_SETCOMPOSITIONWINDOW = $000C; + IMC_GETSTATUSWINDOWPOS = $000F; + IMC_SETSTATUSWINDOWPOS = $0010; + IMC_CLOSESTATUSWINDOW = $0021; + IMC_OPENSTATUSWINDOW = $0022; + + // dwAction for ImmNotifyIME + NI_OPENCANDIDATE = $0010; + NI_CLOSECANDIDATE = $0011; + NI_SELECTCANDIDATESTR = $0012; + NI_CHANGECANDIDATELIST = $0013; + NI_FINALIZECONVERSIONRESULT = $0014; + NI_COMPOSITIONSTR = $0015; + NI_SETCANDIDATE_PAGESTART = $0016; + NI_SETCANDIDATE_PAGESIZE = $0017; + NI_IMEMENUSELECTED = $0018; + + // lParam for WM_IME_SETCONTEXT + ISC_SHOWUICANDIDATEWINDOW = $00000001; + ISC_SHOWUICOMPOSITIONWINDOW = $80000000; + ISC_SHOWUIGUIDELINE = $40000000; + ISC_SHOWUIALLCANDIDATEWINDOW = $0000000F; + ISC_SHOWUIALL = $C000000F; + + // dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR + CPS_COMPLETE = $0001; + CPS_CONVERT = $0002; + CPS_REVERT = $0003; + CPS_CANCEL = $0004; + + // the modifiers of hot key + MOD_ALT = $0001; + MOD_CONTROL = $0002; + MOD_SHIFT = $0004; + MOD_LEFT = $8000; + MOD_RIGHT = $4000; + MOD_ON_KEYUP = $0800; + MOD_IGNORE_ALL_MODIFIER = $0400; + + // Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F + IME_CHOTKEY_IME_NONIME_TOGGLE = $10; + IME_CHOTKEY_SHAPE_TOGGLE = $11; + IME_CHOTKEY_SYMBOL_TOGGLE = $12; + + // Windows for Japanese Edition hot key ID from 0x30 - 0x4F + IME_JHOTKEY_CLOSE_OPEN = $30; + + // Windows for Korean Edition hot key ID from 0x50 - 0x6F + IME_KHOTKEY_SHAPE_TOGGLE = $50; + IME_KHOTKEY_HANJACONVERT = $51; + IME_KHOTKEY_ENGLISH = $52; + + // Windows for Traditional Chinese Edition hot key ID from 0x70 - 0x8F + IME_THOTKEY_IME_NONIME_TOGGLE = $70; + IME_THOTKEY_SHAPE_TOGGLE = $71; + IME_THOTKEY_SYMBOL_TOGGLE = $72; + + // direct switch hot key ID from 0x100 - 0x11F + IME_HOTKEY_DSWITCH_FIRST = $100; + IME_HOTKEY_DSWITCH_LAST = $11F; + + // IME private hot key from 0x200 - 0x21F + IME_HOTKEY_PRIVATE_FIRST = $200; + IME_ITHOTKEY_RESEND_RESULTSTR = $200; + IME_ITHOTKEY_PREVIOUS_COMPOSITION = $201; + IME_ITHOTKEY_UISTYLE_TOGGLE = $202; + IME_ITHOTKEY_RECONVERTSTRING = $203; + IME_HOTKEY_PRIVATE_LAST = $21F; + + // parameter of ImmGetCompositionString + GCS_COMPREADSTR = $0001; + GCS_COMPREADATTR = $0002; + GCS_COMPREADCLAUSE = $0004; + GCS_COMPSTR = $0008; + GCS_COMPATTR = $0010; + GCS_COMPCLAUSE = $0020; + GCS_CURSORPOS = $0080; + GCS_DELTASTART = $0100; + GCS_RESULTREADSTR = $0200; + GCS_RESULTREADCLAUSE = $0400; + GCS_RESULTSTR = $0800; + GCS_RESULTCLAUSE = $1000; + + // style bit flags for WM_IME_COMPOSITION + CS_INSERTCHAR = $2000; + CS_NOMOVECARET = $4000; + + // IME version constants + IMEVER_0310 = $0003000A; + IMEVER_0400 = $00040000; + + + // IME property bits + IME_PROP_AT_CARET = $00010000; + IME_PROP_SPECIAL_UI = $00020000; + IME_PROP_CANDLIST_START_FROM_1 = $00040000; + IME_PROP_UNICODE = $00080000; + IME_PROP_COMPLETE_ON_UNSELECT = $00100000; + + // IME UICapability bits + UI_CAP_2700 = $00000001; + UI_CAP_ROT90 = $00000002; + UI_CAP_ROTANY = $00000004; + + // ImmSetCompositionString Capability bits + SCS_CAP_COMPSTR = $00000001; + SCS_CAP_MAKEREAD = $00000002; + SCS_CAP_SETRECONVERTSTRING = $00000004; + + // IME WM_IME_SELECT inheritance Capability bits + SELECT_CAP_CONVERSION = $00000001; + SELECT_CAP_SENTENCE = $00000002; + + // ID for deIndex of ImmGetGuideLine + GGL_LEVEL = $00000001; + GGL_INDEX = $00000002; + GGL_STRING = $00000003; + GGL_PRIVATE = $00000004; + + // ID for dwLevel of GUIDELINE Structure + GL_LEVEL_NOGUIDELINE = $00000000; + GL_LEVEL_FATAL = $00000001; + GL_LEVEL_ERROR = $00000002; + GL_LEVEL_WARNING = $00000003; + GL_LEVEL_INFORMATION = $00000004; + + // ID for dwIndex of GUIDELINE Structure + GL_ID_UNKNOWN = $00000000; + GL_ID_NOMODULE = $00000001; + GL_ID_NODICTIONARY = $00000010; + GL_ID_CANNOTSAVE = $00000011; + GL_ID_NOCONVERT = $00000020; + GL_ID_TYPINGERROR = $00000021; + GL_ID_TOOMANYSTROKE = $00000022; + GL_ID_READINGCONFLICT = $00000023; + GL_ID_INPUTREADING = $00000024; + GL_ID_INPUTRADICAL = $00000025; + GL_ID_INPUTCODE = $00000026; + GL_ID_INPUTSYMBOL = $00000027; + GL_ID_CHOOSECANDIDATE = $00000028; + GL_ID_REVERSECONVERSION = $00000029; + GL_ID_PRIVATE_FIRST = $00008000; + GL_ID_PRIVATE_LAST = $0000FFFF; + + // ID for dwIndex of ImmGetProperty + IGP_GETIMEVERSION = -4; + IGP_PROPERTY = $00000004; + IGP_CONVERSION = $00000008; + IGP_SENTENCE = $0000000c; + IGP_UI = $00000010; + IGP_SETCOMPSTR = $00000014; + IGP_SELECT = $00000018; + + // dwIndex for ImmSetCompositionString API + SCS_SETSTR = (GCS_COMPREADSTR or GCS_COMPSTR); + SCS_CHANGEATTR = (GCS_COMPREADATTR or GCS_COMPATTR); + SCS_CHANGECLAUSE = (GCS_COMPREADCLAUSE or GCS_COMPCLAUSE); + SCS_SETRECONVERTSTRING = $00010000; + SCS_QUERYRECONVERTSTRING = $00020000; + + // attribute for COMPOSITIONSTRING Structure + ATTR_INPUT = $00; + ATTR_TARGET_CONVERTED = $01; + ATTR_CONVERTED = $02; + ATTR_TARGET_NOTCONVERTED = $03; + ATTR_INPUT_ERROR = $04; + ATTR_FIXEDCONVERTED = $05; + + // bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW + CFS_DEFAULT = $0000; + CFS_RECT = $0001; + CFS_POINT = $0002; + CFS_FORCE_POSITION = $0020; + CFS_CANDIDATEPOS = $0040; + CFS_EXCLUDE = $0080; + + // conversion direction for ImmGetConversionList + GCL_CONVERSION = $0001; + GCL_REVERSECONVERSION = $0002; + GCL_REVERSE_LENGTH = $0003; + + // bit field for conversion mode + // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually. + IME_CMODE_HANGEUL = IME_CMODE_NATIVE; + IME_CMODE_SOFTKBD = $0080; + IME_CMODE_NOCONVERSION = $0100; + IME_CMODE_EUDC = $0200; + IME_CMODE_SYMBOL = $0400; + IME_CMODE_FIXED = $0800; + IME_CMODE_RESERVED = $F0000000; + + // bit field for sentence mode + IME_SMODE_NONE = $0000; + IME_SMODE_PLAURALCLAUSE = $0001; + IME_SMODE_SINGLECONVERT = $0002; + IME_SMODE_AUTOMATIC = $0004; + IME_SMODE_PHRASEPREDICT = $0008; + IME_SMODE_CONVERSATION = $0010; + IME_SMODE_RESERVED = $0000F000; + + // style of candidate + IME_CAND_UNKNOWN = $0000; + IME_CAND_READ = $0001; + IME_CAND_CODE = $0002; + IME_CAND_MEANING = $0003; + IME_CAND_RADICAL = $0004; + IME_CAND_STROKE = $0005; + + // wParam of report message WM_IME_NOTIFY + IMN_CLOSESTATUSWINDOW = $0001; + IMN_OPENSTATUSWINDOW = $0002; + IMN_CHANGECANDIDATE = $0003; + IMN_CLOSECANDIDATE = $0004; + IMN_OPENCANDIDATE = $0005; + IMN_SETCONVERSIONMODE = $0006; + IMN_SETSENTENCEMODE = $0007; + IMN_SETOPENSTATUS = $0008; + IMN_SETCANDIDATEPOS = $0009; + IMN_SETCOMPOSITIONFONT = $000A; + IMN_SETCOMPOSITIONWINDOW = $000B; + IMN_SETSTATUSWINDOWPOS = $000C; + IMN_GUIDELINE = $000D; + IMN_PRIVATE = $000E; + + // wParam of report message WM_IME_REQUEST + IMR_COMPOSITIONWINDOW = $0001; + IMR_CANDIDATEWINDOW = $0002; + IMR_COMPOSITIONFONT = $0003; + IMR_RECONVERTSTRING = $0004; + IMR_CONFIRMRECONVERTSTRING = $0005; + IMR_QUERYCHARPOSITION = $0006; + IMR_DOCUMENTFEED = $0007; + + // error code of ImmGetCompositionString + IMM_ERROR_NODATA = -1; + IMM_ERROR_GENERAL = -2; + + // dialog mode of ImmConfigureIME + IME_CONFIG_GENERAL = 1; + IME_CONFIG_REGISTERWORD = 2; + IME_CONFIG_SELECTDICTIONARY = 3; + + // flags for ImmEscape + IME_ESC_QUERY_SUPPORT = $0003; + IME_ESC_RESERVED_FIRST = $0004; + IME_ESC_RESERVED_LAST = $07FF; + IME_ESC_PRIVATE_FIRST = $0800; + IME_ESC_PRIVATE_LAST = $0FFF; + IME_ESC_SEQUENCE_TO_INTERNAL = $1001; + IME_ESC_GET_EUDC_DICTIONARY = $1003; + IME_ESC_SET_EUDC_DICTIONARY = $1004; + IME_ESC_MAX_KEY = $1005; + IME_ESC_IME_NAME = $1006; + IME_ESC_SYNC_HOTKEY = $1007; + IME_ESC_HANJA_MODE = $1008; + IME_ESC_AUTOMATA = $1009; + IME_ESC_PRIVATE_HOTKEY = $100a; + IME_ESC_GETHELPFILENAME = $100b; + + // style of word registration + IME_REGWORD_STYLE_EUDC = $00000001; + IME_REGWORD_STYLE_USER_FIRST = $80000000; + IME_REGWORD_STYLE_USER_LAST = $FFFFFFFF; + + // dwFlags for ImmAssociateContextEx + IACE_CHILDREN = $0001; + IACE_DEFAULT = $0010; + IACE_IGNORENOCONTEXT = $0020; + + // dwFlags for ImmGetImeMenuItems + IGIMIF_RIGHTMENU = $0001; + + // dwType for ImmGetImeMenuItems + IGIMII_CMODE = $0001; + IGIMII_SMODE = $0002; + IGIMII_CONFIGURE = $0004; + IGIMII_TOOLS = $0008; + IGIMII_HELP = $0010; + IGIMII_OTHER = $0020; + IGIMII_INPUTTOOLS = $0040; + + // fType of IMEMENUITEMINFO structure + IMFT_RADIOCHECK = $00001; + IMFT_SEPARATOR = $00002; + IMFT_SUBMENU = $00004; + + // fState of IMEMENUITEMINFO structure + IMFS_GRAYED = MFS_GRAYED; + IMFS_DISABLED = MFS_DISABLED; + IMFS_CHECKED = MFS_CHECKED; + IMFS_HILITE = MFS_HILITE; + IMFS_ENABLED = MFS_ENABLED; + IMFS_UNCHECKED = MFS_UNCHECKED; + IMFS_UNHILITE = MFS_UNHILITE; + IMFS_DEFAULT = MFS_DEFAULT; + + // type of soft keyboard + // for Windows Tranditional Chinese Edition + SOFTKEYBOARD_TYPE_T1 = $0001; + + // for Windows Simplified Chinese Edition + SOFTKEYBOARD_TYPE_C1 = $0002; + +implementation + + +end. diff --git a/packages/winunits-base/src/imm_dyn.pas b/packages/winunits-base/src/imm_dyn.pas new file mode 100644 index 0000000000..552ec2a768 --- /dev/null +++ b/packages/winunits-base/src/imm_dyn.pas @@ -0,0 +1,224 @@ +(********************************************************************* *) +(* imm.h - Input Method Manager definitions *) +(* *) +(* Copyright (c) Microsoft Corporation. All rights reserved. *) +(* *) +(* Converted to pascal by Dmitry Boyarintsev, using Chelper. *) +(* *) +(* The dynamic interface is used to load function dynamicly. *) +(* It's users responsibility to check functions have been loaded *) +(* successfully. *) +(* imm_dyn and imm function names match. In oreder to be sure that *) +(* dynamicly loaded functions are used, always add imm_dyn to the uses *) +(* section after imm unit. *) +(* *) +(********************************************************************* *) +unit imm_dyn; + +{$mode delphi} + +interface + +uses + Windows, imm; + +var + ImmInstallIMEA : function (lpszIMEFileName, lpszLayoutText: LPCSTR): HKL; stdcall = nil; + ImmInstallIMEW : function (lpszIMEFileName, lpszLayoutText: LPCWSTR): HKL; stdcall = nil; + ImmGetDefaultIMEWnd : function (wnd: HWND): HWND; stdcall = nil; + ImmGetDescriptionA : function (kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall = nil; + ImmGetDescriptionW : function (kl: HKL; lpszDescription: LPWSTR; uBufLen: UINT): UINT; stdcall = nil; + + ImmGetIMEFileNameA : function (kl: HKL; lpszFileName: LPSTR; uBufLen: UINT): UINT; stdcall = nil; + ImmGetIMEFileNameW : function (kl: HKL; lpszFileName: LPWSTR; uBufLen: UINT): UINT; stdcall = nil; + + ImmGetProperty : function (kl: HKL; fdwIndex: DWORD): DWORD; stdcall = nil; + ImmIsIME : function (kl: HKL): LongBool; stdcall = nil; + ImmSimulateHotKey : function (wnd: HWND; dwHotKeyID: DWORD): LongBool; stdcall = nil; + + ImmCreateContext: function : HIMC; stdcall = nil; + ImmDestroyContext: function (imc: HIMC): LongBool; stdcall = nil; + ImmGetContext: function (wnd: HWND): HIMC; stdcall = nil; + + ImmReleaseContext: function (wnd: HWND; imc: HIMC): LongBool; stdcall = nil; + ImmAssociateContext: function (wnd: HWND; imc: HIMC): HIMC; stdcall = nil; + + ImmAssociateContextEx: function (wnd: HWND; imc: HIMC; dwFlags: DWORD): LongBool; stdcall = nil; + ImmGetCompositionStringA: function (imc: HIMC; dwIndex: DWORD; + lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall = nil; + ImmGetCompositionStringW: function (imc: HIMC; dwIndex: DWORD; + lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall = nil; + + ImmSetCompositionStringA: function (imc: HIMC; dwIndex: DWORD; lpComp: LPVOID; + dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall = nil; + ImmSetCompositionStringW: function (imc: HIMC; dwIndex: DWORD; lpComp: LPVOID; + dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall = nil; + + ImmGetCandidateListCountA: function (imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall = nil; + ImmGetCandidateListCountW: function (imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall = nil; + + ImmGetCandidateListA: function (imc: HIMC; deIndex: DWORD; + lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall = nil; + ImmGetCandidateListW: function (imc: HIMC; deIndex: DWORD; + lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall = nil; + + ImmGetGuideLineA: function (imc: HIMC; dwIndex: DWORD; lpBuf: LPSTR; + dwBufLen: DWORD): DWORD; stdcall = nil; + ImmGetGuideLineW: function (imc: HIMC; dwIndex: DWORD; lpBuf: LPWSTR; + dwBufLen: DWORD): DWORD; stdcall = nil; + + ImmGetConversionStatus: function (imc: HIMC; lpfdwConversion, lpfdwSentence: LPDWORD): LongBool; stdcall = nil; + ImmSetConversionStatus: function (imc: HIMC; fdwConversion, fdwSentence: DWORD): LongBool; stdcall = nil; + ImmGetOpenStatus: function (imc: HIMC): LongBool; stdcall = nil; + ImmSetOpenStatus: function (imc: HIMC; par1: LongBool): LongBool; stdcall = nil; + + ImmGetCompositionFontA: function (imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall = nil; + ImmGetCompositionFontW: function (imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall = nil; + + ImmSetCompositionFontA: function (imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall = nil; + ImmSetCompositionFontW: function (imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall = nil; + + ImmConfigureIMEA: function (kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall = nil; + ImmConfigureIMEW: function (kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall = nil; + + ImmEscapeA: function (kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall = nil; + ImmEscapeW: function (kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall = nil; + + ImmGetConversionListA: function (kl: HKL; imc: HIMC; lpSrc: LPCSTR; + lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall = nil; + ImmGetConversionListW: function (kl: HKL; imc: HIMC; lpSrc: LPCWSTR; + lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall = nil; + + ImmNotifyIME: function (imc: HIMC; dwAction, dwIndex, dwValue: DWORD): LongBool; stdcall = nil; + ImmGetStatusWindowPos: function (imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall = nil; + ImmSetStatusWindowPos: function (imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall = nil; + ImmGetCompositionWindow: function (imc: HIMC; lpCompForm: LPCOMPOSITIONFORM): LongBool; stdcall = nil; + ImmSetCompositionWindow: function (imc: HIMC; lpCompForm: LPCOMPOSITIONFORM): LongBool; stdcall = nil; + ImmGetCandidateWindow: function (imc: HIMC; par1: DWORD; lpCandidate: LPCANDIDATEFORM): LongBool; stdcall = nil; + ImmSetCandidateWindow: function (imc: HIMC; lpCandidate: LPCANDIDATEFORM): LongBool; stdcall = nil; + + ImmIsUIMessageA: function (wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall = nil; + ImmIsUIMessageW: function (wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall = nil; + + ImmGetVirtualKey: function (wnd: HWND): UINT; stdcall = nil; + + ImmRegisterWordA: function (kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR): LongBool; stdcall = nil; + ImmRegisterWordW: function (kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR): LongBool; stdcall = nil; + + ImmUnregisterWordA: function (kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszUnregister: LPCSTR): LongBool; stdcall = nil; + + ImmUnregisterWordW: function (kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszUnregister: LPCWSTR): LongBool; stdcall = nil; + + ImmGetRegisterWordStyleA: function (kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFA): UINT; stdcall = nil; + ImmGetRegisterWordStyleW: function (kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFW): UINT; stdcall = nil; + + ImmEnumRegisterWordA: function (kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCA; + lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR; lpData: LPVOID): UINT; stdcall = nil; + ImmEnumRegisterWordW: function (kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCW; + lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR; lpData: LPVOID): UINT; stdcall = nil; + + ImmDisableIME: function (idThread: DWORD): LongBool; stdcall = nil; + ImmEnumInputContext: function (idThread: DWORD; lpfn: IMCENUMPROC; lParam: LPARAM) + : LongBool; stdcall = nil; + ImmGetImeMenuItemsA: function (imc: HIMC; dwFlags, dwType: DWORD; + lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOA; dwSize: DWORD): DWORD; stdcall = nil; + ImmGetImeMenuItemsW: function (par0: HIMC; dwFlags, dwType: DWORD; + lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOW; dwSize: DWORD): DWORD; stdcall = nil; + + ImmDisableTextFrameService: function (idThread: DWORD): LongBool; stdcall = nil; + +implementation + +var + lib : THandle=0; + +procedure InitImm; +begin + lib:=LoadLibraryA('Imm32.dll'); + if lib=0 then Exit; + ImmInstallIMEA := GetProcAddress(lib,'ImmInstallIMEA'); + ImmInstallIMEW := GetProcAddress(lib,'ImmInstallIMEW'); + ImmGetDefaultIMEWnd := GetProcAddress(lib,'ImmGetDefaultIMEWnd'); + ImmGetDescriptionA := GetProcAddress(lib,'ImmGetDescriptionA'); + ImmGetDescriptionW := GetProcAddress(lib,'ImmGetDescriptionW'); + + ImmGetIMEFileNameA := GetProcAddress(lib,'ImmGetIMEFileNameA'); + ImmGetIMEFileNameW := GetProcAddress(lib,'ImmGetIMEFileNameW'); + + ImmGetProperty := GetProcAddress(lib,'ImmGetProperty'); + ImmIsIME := GetProcAddress(lib,'ImmIsIME'); + ImmSimulateHotKey := GetProcAddress(lib,'ImmSimulateHotKey'); + + ImmCreateContext := GetProcAddress(lib,'ImmCreateContext'); + ImmDestroyContext := GetProcAddress(lib,'ImmDestroyContext'); + ImmGetContext := GetProcAddress(lib,'ImmGetContext'); + + ImmReleaseContext := GetProcAddress(lib,'ImmReleaseContext'); + ImmAssociateContext := GetProcAddress(lib,'ImmAssociateContext'); + + ImmAssociateContextEx := GetProcAddress(lib,'ImmAssociateContextEx'); + ImmGetCompositionStringA := GetProcAddress(lib,'ImmGetCompositionStringA'); + ImmGetCompositionStringW := GetProcAddress(lib,'ImmGetCompositionStringW'); + + ImmSetCompositionStringA := GetProcAddress(lib,'ImmSetCompositionStringA'); + ImmSetCompositionStringW := GetProcAddress(lib,'ImmSetCompositionStringW'); + ImmGetCandidateListCountA := GetProcAddress(lib,'ImmGetCandidateListCountA'); + ImmGetCandidateListCountW := GetProcAddress(lib,'ImmGetCandidateListCountW'); + ImmGetCandidateListA := GetProcAddress(lib,'ImmGetCandidateListA'); + ImmGetCandidateListW := GetProcAddress(lib,'ImmGetCandidateListW'); + ImmGetGuideLineA := GetProcAddress(lib,'ImmGetGuideLineA'); + ImmGetGuideLineW := GetProcAddress(lib,'ImmGetGuideLineW'); + ImmGetConversionStatus := GetProcAddress(lib,'ImmGetConversionStatus'); + ImmSetConversionStatus := GetProcAddress(lib,'ImmSetConversionStatus'); + ImmGetOpenStatus := GetProcAddress(lib,'ImmGetOpenStatus'); + ImmSetOpenStatus := GetProcAddress(lib,'ImmSetOpenStatus'); + ImmGetCompositionFontA := GetProcAddress(lib,'ImmGetCompositionFontA'); + ImmGetCompositionFontW := GetProcAddress(lib,'ImmGetCompositionFontW'); + ImmSetCompositionFontA := GetProcAddress(lib,'ImmSetCompositionFontA'); + ImmSetCompositionFontW := GetProcAddress(lib,'ImmSetCompositionFontW'); + ImmConfigureIMEA := GetProcAddress(lib,'ImmConfigureIMEA'); + ImmConfigureIMEW := GetProcAddress(lib,'ImmConfigureIMEW'); + ImmEscapeA := GetProcAddress(lib,'ImmEscapeA'); + ImmEscapeW := GetProcAddress(lib,'ImmEscapeW'); + ImmGetConversionListA := GetProcAddress(lib,'ImmGetConversionListA'); + ImmGetConversionListW := GetProcAddress(lib,'ImmGetConversionListW'); + + ImmNotifyIME := GetProcAddress(lib,'ImmNotifyIME'); + ImmGetStatusWindowPos := GetProcAddress(lib,'ImmGetStatusWindowPos'); + ImmSetStatusWindowPos := GetProcAddress(lib,'ImmSetStatusWindowPos'); + ImmGetCompositionWindow := GetProcAddress(lib,'ImmGetCompositionWindow'); + ImmSetCompositionWindow := GetProcAddress(lib,'ImmSetCompositionWindow'); + ImmGetCandidateWindow := GetProcAddress(lib,'ImmGetCandidateWindow'); + ImmSetCandidateWindow := GetProcAddress(lib,'ImmSetCandidateWindow'); + ImmIsUIMessageA := GetProcAddress(lib,'ImmIsUIMessageA'); + ImmIsUIMessageW := GetProcAddress(lib,'ImmIsUIMessageW'); + ImmGetVirtualKey := GetProcAddress(lib,'ImmGetVirtualKey'); + ImmRegisterWordA := GetProcAddress(lib,'ImmRegisterWordA'); + ImmRegisterWordW := GetProcAddress(lib,'ImmRegisterWordW'); + + ImmUnregisterWordA := GetProcAddress(lib,'ImmUnregisterWordA'); + ImmUnregisterWordW := GetProcAddress(lib,'ImmUnregisterWordW'); + + ImmGetRegisterWordStyleA := GetProcAddress(lib,'ImmGetRegisterWordStyleA'); + ImmGetRegisterWordStyleW := GetProcAddress(lib,'ImmGetRegisterWordStyleW'); + + ImmEnumRegisterWordA := GetProcAddress(lib,'ImmEnumRegisterWordA'); + ImmEnumRegisterWordW := GetProcAddress(lib,'ImmEnumRegisterWordW'); + + ImmDisableIME := GetProcAddress(lib,'ImmDisableIME'); + ImmEnumInputContext := GetProcAddress(lib,'ImmEnumInputContext'); + ImmGetImeMenuItemsA := GetProcAddress(lib,'ImmGetImeMenuItemsA'); + ImmGetImeMenuItemsW := GetProcAddress(lib,'ImmGetImeMenuItemsW'); + + ImmDisableTextFrameService := GetProcAddress(lib,'ImmDisableTextFrameService'); +end; + +initialization + InitImm; + +finalization + if lib<>0 then FreeLibrary(lib); + + +end. +