123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471 |
- {******************************************************************************}
- { }
- { IME Component API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: ime.h, released June 2000. The original Pascal }
- { code is: Ime.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- // $Id: JwaIme.pas,v 1.12 2007/09/14 06:48:46 marquardt Exp $
- {$IFNDEF JWA_OMIT_SECTIONS}
- unit JwaIme;
- {$WEAKPACKAGEUNIT}
- {$ENDIF JWA_OMIT_SECTIONS}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "Ime.h"'}
- {$HPPEMIT ''}
- {$IFNDEF JWA_OMIT_SECTIONS}
- {$I jediapilib.inc}
- interface
- uses
- JwaWinType;
- {$ENDIF JWA_OMIT_SECTIONS}
- {$IFNDEF JWA_IMPLEMENTATIONSECTION}
- const
- IME_MAXPROCESS = 32;
- {$EXTERNALSYM IME_MAXPROCESS}
- function SendIMEMessageExA(hWnd: HWND; lParam: LPARAM): LRESULT; stdcall;
- {$EXTERNALSYM SendIMEMessageExA}
- function SendIMEMessageExW(hWnd: HWND; lParam: LPARAM): LRESULT; stdcall;
- {$EXTERNALSYM SendIMEMessageExW}
- function SendIMEMessageEx(hWnd: HWND; lParam: LPARAM): LRESULT; stdcall;
- {$EXTERNALSYM SendIMEMessageEx}
- //
- // IMESTRUCT structure for SendIMEMessageEx
- //
- type
- tagIMESTRUCT = record
- fnc: UINT; // function code
- wParam: WPARAM; // word parameter
- wCount: UINT; // word counter
- dchSource: UINT; // offset to Source from top of memory object
- dchDest: UINT; // offset to Desrination from top of memory object
- lParam1: LPARAM;
- lParam2: LPARAM;
- lParam3: LPARAM;
- end;
- {$EXTERNALSYM tagIMESTRUCT}
- IMESTRUCT = tagIMESTRUCT;
- {$EXTERNALSYM IMESTRUCT}
- LPIMESTRUCT = ^IMESTRUCT;
- {$EXTERNALSYM LPIMESTRUCT}
- PIMESTRUCT = ^IMESTRUCT;
- {$EXTERNALSYM PIMESTRUCT}
- NPIMESTRUCT = ^IMESTRUCT;
- {$EXTERNALSYM NPIMESTRUCT}
- TImeStruct = IMESTRUCT;
- const
- CP_HWND = 0;
- {$EXTERNALSYM CP_HWND}
- CP_OPEN = 1;
- {$EXTERNALSYM CP_OPEN}
- CP_DIRECT = 2;
- {$EXTERNALSYM CP_DIRECT}
- CP_LEVEL = 3;
- {$EXTERNALSYM CP_LEVEL}
- //
- // Virtual Keys
- //
- VK_DBE_ALPHANUMERIC = $0f0;
- {$EXTERNALSYM VK_DBE_ALPHANUMERIC}
- VK_DBE_KATAKANA = $0f1;
- {$EXTERNALSYM VK_DBE_KATAKANA}
- VK_DBE_HIRAGANA = $0f2;
- {$EXTERNALSYM VK_DBE_HIRAGANA}
- VK_DBE_SBCSCHAR = $0f3;
- {$EXTERNALSYM VK_DBE_SBCSCHAR}
- VK_DBE_DBCSCHAR = $0f4;
- {$EXTERNALSYM VK_DBE_DBCSCHAR}
- VK_DBE_ROMAN = $0f5;
- {$EXTERNALSYM VK_DBE_ROMAN}
- VK_DBE_NOROMAN = $0f6;
- {$EXTERNALSYM VK_DBE_NOROMAN}
- VK_DBE_ENTERWORDREGISTERMODE = $0f7;
- {$EXTERNALSYM VK_DBE_ENTERWORDREGISTERMODE}
- VK_DBE_ENTERIMECONFIGMODE = $0f8;
- {$EXTERNALSYM VK_DBE_ENTERIMECONFIGMODE}
- VK_DBE_FLUSHSTRING = $0f9;
- {$EXTERNALSYM VK_DBE_FLUSHSTRING}
- VK_DBE_CODEINPUT = $0fa;
- {$EXTERNALSYM VK_DBE_CODEINPUT}
- VK_DBE_NOCODEINPUT = $0fb;
- {$EXTERNALSYM VK_DBE_NOCODEINPUT}
- VK_DBE_DETERMINESTRING = $0fc;
- {$EXTERNALSYM VK_DBE_DETERMINESTRING}
- VK_DBE_ENTERDLGCONVERSIONMODE = $0fd;
- {$EXTERNALSYM VK_DBE_ENTERDLGCONVERSIONMODE}
- //
- // switch for wParam of IME_SETCONVERSIONWINDOW
- //
- MCW_DEFAULT = $00;
- {$EXTERNALSYM MCW_DEFAULT}
- MCW_RECT = $01;
- {$EXTERNALSYM MCW_RECT}
- MCW_WINDOW = $02;
- {$EXTERNALSYM MCW_WINDOW}
- MCW_SCREEN = $04;
- {$EXTERNALSYM MCW_SCREEN}
- MCW_VERTICAL = $08;
- {$EXTERNALSYM MCW_VERTICAL}
- MCW_HIDDEN = $10;
- {$EXTERNALSYM MCW_HIDDEN}
- //
- // switch for wParam of IME_SETCONVERSIONMODE
- // and IME_GETCONVERSIONMODE
- //
- IME_MODE_ALPHANUMERIC = $0001;
- {$EXTERNALSYM IME_MODE_ALPHANUMERIC}
- {$IFDEF KOREA} // BeomOh - 9/29/92
- IME_MODE_SBCSCHAR = $0002;
- {$EXTERNALSYM IME_MODE_SBCSCHAR}
- {$ELSE}
- IME_MODE_SBCSCHAR = $0008;
- {$EXTERNALSYM IME_MODE_SBCSCHAR}
- {$ENDIF KOREA}
- IME_MODE_KATAKANA = $0002;
- {$EXTERNALSYM IME_MODE_KATAKANA}
- IME_MODE_HIRAGANA = $0004;
- {$EXTERNALSYM IME_MODE_HIRAGANA}
- IME_MODE_HANJACONVERT = $0004;
- {$EXTERNALSYM IME_MODE_HANJACONVERT}
- IME_MODE_DBCSCHAR = $0010;
- {$EXTERNALSYM IME_MODE_DBCSCHAR}
- IME_MODE_ROMAN = $0020;
- {$EXTERNALSYM IME_MODE_ROMAN}
- IME_MODE_NOROMAN = $0040;
- {$EXTERNALSYM IME_MODE_NOROMAN}
- IME_MODE_CODEINPUT = $0080;
- {$EXTERNALSYM IME_MODE_CODEINPUT}
- IME_MODE_NOCODEINPUT = $0100;
- {$EXTERNALSYM IME_MODE_NOCODEINPUT}
- //
- //
- //
- // IME APIs
- //
- IME_GETIMECAPS = $03;
- {$EXTERNALSYM IME_GETIMECAPS}
- IME_SETOPEN = $04;
- {$EXTERNALSYM IME_SETOPEN}
- IME_GETOPEN = $05;
- {$EXTERNALSYM IME_GETOPEN}
- IME_GETVERSION = $07;
- {$EXTERNALSYM IME_GETVERSION}
- IME_SETCONVERSIONWINDOW = $08;
- {$EXTERNALSYM IME_SETCONVERSIONWINDOW}
- IME_MOVEIMEWINDOW = IME_SETCONVERSIONWINDOW; // KOREA only
- {$EXTERNALSYM IME_MOVEIMEWINDOW}
- IME_SETCONVERSIONMODE = $10;
- {$EXTERNALSYM IME_SETCONVERSIONMODE}
- IME_GETCONVERSIONMODE = $11;
- {$EXTERNALSYM IME_GETCONVERSIONMODE}
- IME_SET_MODE = $12; // KOREA only
- {$EXTERNALSYM IME_SET_MODE}
- IME_SENDVKEY = $13;
- {$EXTERNALSYM IME_SENDVKEY}
- IME_ENTERWORDREGISTERMODE = $18;
- {$EXTERNALSYM IME_ENTERWORDREGISTERMODE}
- IME_SETCONVERSIONFONTEX = $19;
- {$EXTERNALSYM IME_SETCONVERSIONFONTEX}
- //
- // IME_CODECONVERT subfunctions
- //
- IME_BANJAtoJUNJA = $13; // KOREA only
- {$EXTERNALSYM IME_BANJAtoJUNJA}
- IME_JUNJAtoBANJA = $14; // KOREA only
- {$EXTERNALSYM IME_JUNJAtoBANJA}
- IME_JOHABtoKS = $15; // KOREA only
- {$EXTERNALSYM IME_JOHABtoKS}
- IME_KStoJOHAB = $16; // KOREA only
- {$EXTERNALSYM IME_KStoJOHAB}
- //
- // IME_AUTOMATA subfunctions
- //
- IMEA_INIT = $01; // KOREA only
- {$EXTERNALSYM IMEA_INIT}
- IMEA_NEXT = $02; // KOREA only
- {$EXTERNALSYM IMEA_NEXT}
- IMEA_PREV = $03; // KOREA only
- {$EXTERNALSYM IMEA_PREV}
- //
- // IME_HANJAMODE subfunctions
- //
- IME_REQUEST_CONVERT = $01; // KOREA only
- {$EXTERNALSYM IME_REQUEST_CONVERT}
- IME_ENABLE_CONVERT = $02; // KOREA only
- {$EXTERNALSYM IME_ENABLE_CONVERT}
- //
- // IME_MOVEIMEWINDOW subfunctions
- //
- INTERIM_WINDOW = $00; // KOREA only
- {$EXTERNALSYM INTERIM_WINDOW}
- MODE_WINDOW = $01; // KOREA only
- {$EXTERNALSYM MODE_WINDOW}
- HANJA_WINDOW = $02; // KOREA only
- {$EXTERNALSYM HANJA_WINDOW}
- //
- // error code
- //
- IME_RS_ERROR = $01; // genetal error
- {$EXTERNALSYM IME_RS_ERROR}
- IME_RS_NOIME = $02; // IME is not installed
- {$EXTERNALSYM IME_RS_NOIME}
- IME_RS_TOOLONG = $05; // given string is too long
- {$EXTERNALSYM IME_RS_TOOLONG}
- IME_RS_ILLEGAL = $06; // illegal charactor(s) is string
- {$EXTERNALSYM IME_RS_ILLEGAL}
- IME_RS_NOTFOUND = $07; // no (more) candidate
- {$EXTERNALSYM IME_RS_NOTFOUND}
- IME_RS_NOROOM = $0a; // no disk/memory space
- {$EXTERNALSYM IME_RS_NOROOM}
- IME_RS_DISKERROR = $0e; // disk I/O error
- {$EXTERNALSYM IME_RS_DISKERROR}
- IME_RS_INVALID = $11; // Win3.1/NT
- {$EXTERNALSYM IME_RS_INVALID}
- IME_RS_NEST = $12; // called nested
- {$EXTERNALSYM IME_RS_NEST}
- IME_RS_SYSTEMMODAL = $13; // called when system mode
- {$EXTERNALSYM IME_RS_SYSTEMMODAL}
- //
- // report messge from IME to WinApps
- //
- WM_IME_REPORT = $0280;
- {$EXTERNALSYM WM_IME_REPORT}
- //
- // report message parameter for WM_IME_REPORT
- //
- IR_STRINGSTART = $100;
- {$EXTERNALSYM IR_STRINGSTART}
- IR_STRINGEND = $101;
- {$EXTERNALSYM IR_STRINGEND}
- IR_OPENCONVERT = $120;
- {$EXTERNALSYM IR_OPENCONVERT}
- IR_CHANGECONVERT = $121;
- {$EXTERNALSYM IR_CHANGECONVERT}
- IR_CLOSECONVERT = $122;
- {$EXTERNALSYM IR_CLOSECONVERT}
- IR_FULLCONVERT = $123;
- {$EXTERNALSYM IR_FULLCONVERT}
- IR_IMESELECT = $130;
- {$EXTERNALSYM IR_IMESELECT}
- IR_STRING = $140;
- {$EXTERNALSYM IR_STRING}
- IR_DBCSCHAR = $160;
- {$EXTERNALSYM IR_DBCSCHAR}
- IR_UNDETERMINE = $170;
- {$EXTERNALSYM IR_UNDETERMINE}
- IR_STRINGEX = $180; // New for 3.1
- {$EXTERNALSYM IR_STRINGEX}
- IR_MODEINFO = $190;
- {$EXTERNALSYM IR_MODEINFO}
- //#define WM_CONVERTREQUESTEX 0x0109
- WM_WNT_CONVERTREQUESTEX = $0109; // WM_CONVERTREQUESTEX: 109 for NT, 108 for OT
- {$EXTERNALSYM WM_WNT_CONVERTREQUESTEX}
- WM_CONVERTREQUEST = $010A;
- {$EXTERNALSYM WM_CONVERTREQUEST}
- WM_CONVERTRESULT = $010B;
- {$EXTERNALSYM WM_CONVERTRESULT}
- WM_INTERIM = $010C;
- {$EXTERNALSYM WM_INTERIM}
- WM_IMEKEYDOWN = $290;
- {$EXTERNALSYM WM_IMEKEYDOWN}
- WM_IMEKEYUP = $291;
- {$EXTERNALSYM WM_IMEKEYUP}
- //
- // UNDETERMINESTRING structure for IR_UNDETERMINE
- //
- type
- tagUNDETERMINESTRUCT = record
- dwSize: DWORD;
- uDefIMESize: UINT;
- uDefIMEPos: UINT;
- uUndetTextLen: UINT;
- uUndetTextPos: UINT;
- uUndetAttrPos: UINT;
- uCursorPos: UINT;
- uDeltaStart: UINT;
- uDetermineTextLen: UINT;
- uDetermineTextPos: UINT;
- uDetermineDelimPos: UINT;
- uYomiTextLen: UINT;
- uYomiTextPos: UINT;
- uYomiDelimPos: UINT;
- end;
- {$EXTERNALSYM tagUNDETERMINESTRUCT}
- UNDETERMINESTRUCT = tagUNDETERMINESTRUCT;
- {$EXTERNALSYM UNDETERMINESTRUCT}
- LPUNDETERMINESTRUCT = ^UNDETERMINESTRUCT;
- {$EXTERNALSYM LPUNDETERMINESTRUCT}
- PUNDETERMINESTRUCT = ^UNDETERMINESTRUCT;
- {$EXTERNALSYM PUNDETERMINESTRUCT}
- NPUNDETERMINESTRUCT = ^UNDETERMINESTRUCT;
- {$EXTERNALSYM NPUNDETERMINESTRUCT}
- TUndetermineStruct = UNDETERMINESTRUCT;
- tagSTRINGEXSTRUCT = record
- dwSize: DWORD;
- uDeterminePos: UINT;
- uDetermineDelimPos: UINT;
- uYomiPos: UINT;
- uYomiDelimPos: UINT;
- end;
- {$EXTERNALSYM tagSTRINGEXSTRUCT}
- STRINGEXSTRUCT = tagSTRINGEXSTRUCT;
- {$EXTERNALSYM STRINGEXSTRUCT}
- LPSTRINGEXSTRUCT = ^STRINGEXSTRUCT;
- {$EXTERNALSYM LPSTRINGEXSTRUCT}
- PSTRINGEXSTRUCT = ^STRINGEXSTRUCT;
- {$EXTERNALSYM PSTRINGEXSTRUCT}
- NPSTRINGEXSTRUCT = ^STRINGEXSTRUCT;
- {$EXTERNALSYM NPSTRINGEXSTRUCT}
- TStringexStruct = STRINGEXSTRUCT;
- {$ENDIF JWA_IMPLEMENTATIONSECTION}
- {$IFNDEF JWA_OMIT_SECTIONS}
- implementation
- //uses ...
- {$ENDIF JWA_OMIT_SECTIONS}
- {$IFNDEF JWA_INTERFACESECTION}
- {$IFNDEF JWA_INCLUDEMODE}
- const
- imelib = 'user32.dll';
- {$IFDEF UNICODE}
- AWSuffix = 'W';
- {$ELSE}
- AWSuffix = 'A';
- {$ENDIF UNICODE}
- {$ENDIF JWA_INCLUDEMODE}
- {$IFDEF DYNAMIC_LINK}
- var
- _SendIMEMessageExA: Pointer;
- function SendIMEMessageExA;
- begin
- GetProcedureAddress(_SendIMEMessageExA, imelib, 'SendIMEMessageExA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SendIMEMessageExA]
- end;
- end;
- var
- _SendIMEMessageExW: Pointer;
- function SendIMEMessageExW;
- begin
- GetProcedureAddress(_SendIMEMessageExW, imelib, 'SendIMEMessageExW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SendIMEMessageExW]
- end;
- end;
- var
- _SendIMEMessageEx: Pointer;
- function SendIMEMessageEx;
- begin
- GetProcedureAddress(_SendIMEMessageEx, imelib, 'SendIMEMessageEx' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SendIMEMessageEx]
- end;
- end;
- {$ELSE}
- function SendIMEMessageExA; external imelib name 'SendIMEMessageExA';
- function SendIMEMessageExW; external imelib name 'SendIMEMessageExW';
- function SendIMEMessageEx; external imelib name 'SendIMEMessageEx' + AWSuffix;
- {$ENDIF DYNAMIC_LINK}
- {$ENDIF JWA_INTERFACESECTION}
- {$IFNDEF JWA_OMIT_SECTIONS}
- end.
- {$ENDIF JWA_OMIT_SECTIONS}
|