Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze richtlijnen en vereisten kunnen u helpen bij het ontwikkelen van een aangepaste Input Method Editor (IME) om een gebruikersinvoertekst in een taal te helpen die niet eenvoudig kan worden weergegeven op een standaard QWERTY-toetsenbord.
Zie Input Method Editor (IME) voor een overzicht van IME's.
Standaard-IME
Een gebruiker kan een van de actieve IME's (Instellingen -> Tijd en taal - Taal ->> Voorkeurstalen -> Taalpakket - Opties) selecteren als de standaard-IME voor hun voorkeurstaal.
Selecteer het standaardtoetsenbord in het scherm Instellingen voor taalopties voor de voorkeurstaal.
Belangrijk
Het is niet raadzaam om rechtstreeks naar het register te schrijven om het standaardtoetsenbord voor uw aangepaste IME in te stellen.
Compatibiliteitsvereisten
Hier volgen de basiscompatibiliteitsvereisten voor een aangepaste IME.
IME moet compatibel zijn met Windows-apps
Gebruik het Text Services Framework (TSF) om IME's te implementeren. Voorheen had u de mogelijkheid om Input Method Manager (IMM32) te gebruiken voor invoerservices. Het systeem blokkeert nu IME's die worden geïmplementeerd met behulp van Input Method Manager (IMM32).
Wanneer een app wordt gestart, laadt TSF het IME-DLL-bestand voor de IME die momenteel door de gebruiker is geselecteerd. Wanneer een IME wordt geladen, is deze onderhevig aan dezelfde app-containerbeperkingen als de app. Een IME heeft bijvoorbeeld geen toegang tot internet als een app geen internettoegang heeft aangevraagd in het manifest. Dit gedrag zorgt ervoor dat IME's geen inbreuk kunnen maken op beveiligingscontracten.
TSF is de intermediair tussen de app en uw IME. TSF communiceert invoergebeurtenissen naar de IME en ontvangt invoertekens van de IME nadat de gebruiker een teken heeft geselecteerd.
Dit gedrag is hetzelfde als eerdere versies van Windows, maar het laden in een Windows-app is van invloed op de mogelijke mogelijkheden van een IME.
Als uw IME verschillende functionaliteit of gebruikersinterface moet bieden tussen Windows-apps en desktop-apps, moet u ervoor zorgen dat het DLL-bestand dat door TSF wordt geladen, controleert in welk type app deze wordt geladen. Roep de methode ITfThreadMgrEx::GetActiveFlags aan in uw IME en controleer de vlag TF_TMF_IMMERSIVEMODE, zodat uw IME verschillende toepassingslogica activeert, afhankelijk van het resultaat.
Windows-apps bieden geen ondersteuning voor TTS-IME's (Table Text Service).
Opmerking
Sommige hulpprogramma's voor het genereren van TTS-IMEs produceren IME's die zijn gemarkeerd als malware door Windows.
IME moet compatibel zijn met het systeemvak
Er is geen taalbalk voor het hosten van IME-pictogrammen. In plaats daarvan wordt een invoerindicator weergegeven in het systeemvak dat de huidige invoeroptie aangeeft. De invoerindicator geeft alleen het pictogram van de IME-huisstijl weer om aan te geven welke IME momenteel wordt uitgevoerd. Er is ook een pictogram in de IME-modus dat links van het IME-huisstijlpictogram wordt weergegeven, waarmee gebruikers de meest gebruikte IME-modus kunnen wisselen, zoals het in- of uitschakelen van de IME.
De invoerindicator toont alleen het pictogram van de IME-huisstijl en het moduspictogram voor compatibele IME's. IME's die niet compatibel zijn, hebben het huisstijlpictogram en het moduspictogram niet weergegeven in het systeemvak. In plaats daarvan geeft de invoerindicator de afkorting van de taal weer in plaats van het IME-huisstijlpictogram.
Sla de IME-pictogrammen op in een DLL- of EXE-bestand in plaats van een zelfstandig .ico bestand. Het ontwerp van IME-pictogrammen moet voldoen aan de richtlijnen die worden beschreven in de volgende sectie met richtlijnen voor het ontwerpen van de gebruikersinterface.
IME-huisstijlpictogram
De invoerindicator haalt het IME-huisstijlpictogram op uit het IME-DLL-bestand met behulp van de resource-id die is gedefinieerd door de IME toen deze is geregistreerd op het systeem.
IME-modus-pictogram
Sommige IME's moeten mogelijk vertrouwen op de invoerindicator die wordt weergegeven in het systeemvak om het pictogram van de IME-modus weer te geven. In dit geval geeft de IME het IME-moduspictogram door aan de invoerindicator met behulp van GUID_LBI_INPUTMODE.
Wanneer u de IME-moduspictogrammen doorgeeft aan de invoerindicator in het systeemvak, is de standaardgrootte van het IME-moduspictogram 16x16 pixels. Het schalen van de gebruikersinterface volgt DPI.
Wanneer u het IME-moduspictogram doorgeeft aan de invoerindicator op UAC (Gebruikersaccountbeheer in de Beveiligde bureaubladomgeving), is de standaardgrootte van het IME-moduspictogram 20x20 pixels. Het pictogram van de IME-modus in de gebruikersinterface binnen UAC schaalt mee met PPI.
IME moet werken in de app-container
Sommige IME-functies worden beïnvloed in een app-container.
- Woordenlijstbestanden : vaak hebben IME's alleen-lezen woordenlijstbestanden om gebruikersinvoer toe te wijzen aan specifieke tekens. Als u toegang wilt krijgen tot deze bestanden vanuit een app-container, moet uw IME deze onder de programmabestanden of Windows-mappen plaatsen. Deze mappen kunnen standaard worden gelezen vanuit een app-container, zodat IME's toegang hebben tot woordenlijstbestanden die op deze locaties zijn opgeslagen. Als uw IME het woordenlijstbestand ergens anders moet opslaan, moet het de toegangsbeheerlijsten (ACL) van de woordenlijstbestanden expliciet bewerken om toegang vanuit app-containers toe te staan.
- Internetupdates : als uw IME de woordenlijsten moet bijwerken met behulp van gegevens van internet, kan dit niet betrouwbaar in een app-container, omdat internettoegang niet altijd is toegestaan. In plaats daarvan moet uw IME een afzonderlijk bureaubladproces uitvoeren dat verantwoordelijk is voor het bijwerken van de woordenlijstbestanden met gegevens van internet.
- On-the-fly learning : als een IME wordt uitgevoerd in een app-container met internettoegang, is er geen beperking voor de eindpunten waarmee de IME kan communiceren. In dit geval kan een IME een cloudserver gebruiken om on-the-fly learning-services te bieden. Sommige IME's downloaden en uploaden gebruikersinvoer onderweg, terwijl de gebruiker typt. Omdat internettoegang niet gegarandeerd is in een app-container, is dit mogelijk niet altijd toegestaan.
- Informatie delen tussen processen : IME's moeten mogelijk gegevens delen over de invoervoorkeuren van de gebruiker tussen apps die zich in verschillende app-containers bevinden. Gebruik een webservice om gegevens tussen apps te delen.
Belangrijk
Als u beveiligingsregels voor app-containers probeert te omzeilen, wordt uw IME mogelijk behandeld als malware en geblokkeerd.
IME en aanraaktoetsenbord
Uw IME moet ervoor zorgen dat de gebruikersinterface van het kandidaatdeelvenster en andere elementen van de gebruikersinterface niet onder het aanraaktoetsenbord worden getekend. Het schermtoetsenbord wordt weergegeven in een hogere z-orderband dan alle apps en de IME-gebruikersinterface wordt weergegeven in dezelfde z-orderband als de app waarin deze actief is. Hierdoor kan het schermtoetsenbord de IME-gebruikersinterface overlappen en verbergen. In de meeste gevallen moet de app het formaat van het venster wijzigen om rekening te houden met het schermtoetsenbord. Als de grootte van een app niet wordt gewijzigd, kan de IME nog steeds de InputPane-API gebruiken om de positie van het schermtoetsenbord op te halen. De IME voert een query uit op de eigenschap Locatie of registreert een handler voor de gebeurtenissen Weergeven en verbergen van het schermtoetsenbord. De Show-gebeurtenis wordt elke keer opgewekt wanneer de gebruiker op een bewerkingsveld tikt, zelfs als het schermtoetsenbord op dat moment wordt weergegeven. Uw IME kan deze API gebruiken om de schermruimte op te halen die wordt gebruikt door het schermtoetsenbord voordat de IME een kandidateninterface (of andere UI-elementen) tekent, en om de gebruikersinterface van de IME aan te passen om te voorkomen dat er onder het schermtoetsenbord wordt getekend.
De gewenste schermtoetsenbordindeling opgeven
De IME kan opgeven welke schermtoetsenbordindeling moet worden gebruikt en de IME is ingeschakeld voor gebruik met indelingen die zijn geoptimaliseerd voor aanraakbediening. Deze functionaliteit is beperkt tot IME's voor de invoertalen Koreaans, Japans, Vereenvoudigd Chinees en Traditioneel Chinees.
Er zijn zeven indelingen die worden ondersteund door het schermtoetsenbord, waarvan drie klassieke indelingen zijn en waarvan vier indelingen die zijn geoptimaliseerd voor aanraakbediening. De klassieke indelingen zien eruit en gedragen zich als een fysiek toetsenbord.
Alle drie de klassieke indelingen zijn bedoeld voor het invoeren van traditioneel Chinees in verschillende vormen:
- Fonetische invoer
- Changjie-invoer
- Dayi-invoer
Naast de klassieke indelingen is er één indeling die is geoptimaliseerd voor aanraakbediening voor elk van de Invoertalen Koreaans, Japans, Vereenvoudigd Chinees en Traditioneel Chinees.
Als u deze functionaliteit wilt gebruiken, moet uw IME de ITfFnGetPreferredTouchKeyboardLayout-interface implementeren, die door de IME wordt geëxporteerd met behulp van de Text Services Framework ITfFunctionProvider-API .
Als uw IME de ITfFnGetPreferredTouchKeyboardLayout-interface niet ondersteunt, resulteert het gebruik van de IME in de standaard klassieke indeling voor de taal die wordt weergegeven door het schermtoetsenbord.
Als uw IME een van de klassieke indelingen als voorkeursindeling moet instellen, is er geen extra werk vereist aan de IME-zijde, naast het ondersteunen van de ITfFnGetPreferredTouchKeyboardLayout- en ITfFunctionProvider-interfaces. Er is echter extra werk vereist in de IME om te werken met de indelingen die zijn geoptimaliseerd voor aanraakbediening. Dit wordt beschreven in de volgende sectie.
Indeling die is geoptimaliseerd voor aanraakbediening
De toetsenborden die zijn geoptimaliseerd voor aanraakbediening voor het Koreaans, Japans, Vereenvoudigd Chinees en traditioneel Chinees, geven een andere indeling weer voor de conversiemodi IME Aan en IME Off. Er is een toets op het schermtoetsenbord om de IME-conversiemodus in te stellen op Aan of Uit, maar de IME-modus van het toetsenbord kan ook veranderen als de focus verandert tussen besturingselementen voor bewerken.
De toetsenborden die zijn geoptimaliseerd voor aanraakbediening voor japanse, vereenvoudigd Chinees en traditionele Chinese invoertalen bevatten een toets of toetsen die de IME gebruikt om door kandidaatpagina's te navigeren. Voor Japans en Vereenvoudigd Chinees wordt de kandidaatpaginasleutel weergegeven in de indeling die is geoptimaliseerd voor aanraakbediening. Voor traditioneel Chinees zijn er afzonderlijke toetsen voor de vorige en volgende kandidaatpagina's.
Wanneer deze toetsen worden ingedrukt, roept het schermtoetsenbord de SendInput-functie aan om de volgende Unicode Private Use Area-tekens te verzenden naar de toepassing die zich in de aandacht bevindt, welke de IME kan onderscheppen en waarop gereageerd kan worden.
- Volgende pagina (0xF003): verzonden wanneer de kandidaatpaginatoets wordt ingedrukt op het toetsenbord dat is geoptimaliseerd voor aanraakbediening voor Japans en Vereenvoudigd Chinees, of wanneer de volgende paginatoets wordt ingedrukt op het schermgeoptimeerde toetsenbord voor traditioneel Chinees.
- Vorige pagina (0xF004): verzonden wanneer de kandidaatpaginatoets op hetzelfde moment wordt ingedrukt als de Shift-toets op het schermgeoptimeerd toetsenbord voor Japans en Vereenvoudigd Chinees, of wanneer de vorige paginatoets wordt ingedrukt op het toetsenbord dat is geoptimaliseerd voor traditioneel Chinees.
Deze tekens worden verzonden als Unicode-invoer. In de volgende alinea wordt beschreven hoe u de tekeninformatie extraheert tijdens de meldingen van toetsgebeurtenissen die de IME van het Text Services Framework ontvangt. Deze tekenwaarden worden niet gedefinieerd in een headerbestand, dus u moet deze definiëren in uw code.
Als u toetsenbordinvoer wilt onderscheppen, moet uw IME zich registreren als een toetsgebeurtenissink. Voor Unicode-invoer die wordt gegenereerd met behulp van de functie SendInput, bevat de WPARAM-parameter van de callbacks van ITfKeyEventSink (OnKeyDown, OnKeyUp, OnTestKeyDown, OnTestKeyUp) altijd de virtuele sleutel VK_PACKET en wordt het teken niet rechtstreeks geïdentificeerd.
Implementeer de volgende aanroepreeks voor toegang tot het teken:
// Keyboard state
BYTE abKbdState[256];
if (!GetKeyboardState(abKbdState))
{
return 0;
}
// Map virtual key to character code
WCHAR wch;
if (ToUnicode(VK_PACKET, 0, abKbdState, &wch, 1, 0) == 1)
{
return wch;
}
IME-zoekintegratie
Gebruikers voorzien van zoekfuncties via het zoekcontract en integratie met het zoekvenster.
Zoekvenster en IME-suggesties
Het zoekvenster is een centrale locatie waar gebruikers zoekopdrachten kunnen uitvoeren in al hun apps. Voor IME-gebruikers biedt Windows een unieke zoekervaring waarmee compatibele IME's kunnen worden geïntegreerd met Windows voor een grotere efficiëntie en bruikbaarheid.
Gebruikers die typen met een IME die compatibel is met zoeken, hebben twee belangrijke voordelen:
- Naadloze interactie tussen de IME en de zoekervaring. IME-kandidaten worden inline weergegeven onder het zoekvak zonder zoeksuggesties af te sluiten. De gebruiker kan het toetsenbord gebruiken om naadloos te navigeren tussen het zoekvak, de IME-conversiekandidaten en de zoeksuggesties.
- Snellere toegang tot relevante resultaten en suggesties van toepassingen. De app heeft toegang tot alle huidige conversiekandidaten om relevantere suggesties te bieden. Om betere prioriteit te geven aan zoeksuggesties, worden conversies gegeven aan apps in volgorde van relevantie. Gebruikers vinden en selecteren het gewenste resultaat zonder te converteren, gewoon door fonetisch te typen.
Een IME is compatibel met de geïntegreerde zoekervaring als deze voldoet aan de volgende criteria:
- Compatibel met een Windows-shell in dezelfde stijl.
- Implementeer de TSF-UILess-mode-API's. Zie Overzicht van uiloze modus voor meer informatie.
- Implementeer de TSF-zoekintegratie-API's, ITfFnSearchCandidateProvider en ITfIntegratableCandidateListUIElement.
Wanneer deze functie is geactiveerd in het zoekvenster, wordt een compatibele IME in de UIless-modus geplaatst en kan de gebruikersinterface niet worden weergegeven. In plaats daarvan worden conversiekandidaten naar Windows verzonden, die ze in de inline kandidatenlijstcontrole weergeeft, zoals weergegeven in de vorige schermafbeelding.
Ook verzendt de IME kandidaten die moeten worden gebruikt om de huidige zoekopdracht uit te voeren. Deze kandidaten kunnen hetzelfde zijn als de conversiekandidaten, of ze kunnen worden afgestemd op zoekopdrachten.
Goede zoekkandidaten voldoen aan de volgende criteria:
- Geen overlapping van voorvoegsel. Bijvoorbeeld: 北京学 en北京 zijn overbodig omdat het ene voorvoegsel van het andere is.
- Geen redundante kandidaten. Een redundante kandidaat is niet nuttig voor zoekopdrachten, omdat dit niet helpt bij het filteren van resultaten. Een resultaat dat bijvoorbeeld overeenkomt met 北京学 komt ook overeen met 北京.
- Geen voorspellingskandidaat, alleen convertering. Als de gebruiker bijvoorbeeld 'be' typt, kan de IME 北 retourneren als kandidaat, maar niet 北京学. Voorspellingskandidaten zijn meestal te beperkend.
IME's die niet aan de criteria voldoen, zijn niet op dezelfde manier compatibel met de zoekinterface als andere besturingselementen en kunnen geen gebruik maken van UI-integratie en de selectie van zoekkandidaten. Apps ontvangen alleen query's nadat de gebruiker klaar is met opstellen.
Wanneer een app die ondersteuning biedt voor het zoekcontract een query ontvangt, bevat de querygebeurtenis een matrix 'queryTextAlternatives' die alle bekende alternatieven bevat, gerangschikt van de meest relevante (waarschijnlijk) naar minst relevante (onwaarschijnlijke).
Wanneer er alternatieven worden opgegeven, moet de app elk alternatief behandelen als een query en alle resultaten retourneren die overeenkomen met een van de alternatieven. De app moet zich gedragen alsof de gebruiker meerdere query's op hetzelfde moment heeft uitgegeven, waarbij in wezen een 'or'-query wordt uitgegeven aan de service die de resultaten levert. Voor prestatieoverwegingen beperken apps vaak overeenkomsten tussen 5 en 20 van de meest relevante alternatieven.
Richtlijnen voor het ontwerpen van de gebruikersinterface
Alle IME's moeten de richtlijnen voor gebruikerservaring volgen die worden beschreven in Windows-apps ontwerpen en coden.
Gebruik geen plakvensters
Uw IME-vensters moeten alleen worden weergegeven wanneer dat nodig is en ze mogen niet altijd zichtbaar zijn. Als gebruikers niet hoeven te typen, mogen IME-vensters niet worden weergegeven. Het IME-venster mag geen volledig schermvenster zijn. IME-vensters mogen elkaar niet overlappen. De vensters moeten worden ontworpen in een Windows-stijl en de ui-schaalaanpassing volgen.
IME-pictogrammen
Er zijn twee soorten IME-pictogrammen, huisstijlpictogrammen en moduspictogrammen. Alle IME-pictogrammen moeten alleen met zwart-witkleuren worden ontworpen. De nieuwe IME-pictogrammen lenen uit het glyphische uiterlijk van de systeemvakpictogrammen. Deze stijl is gemaakt, zodat alle talen het kunnen gebruiken om de familiaire look aan te vullen, terwijl ze ook van elkaar verschillen.
De bestandsindeling voor IME-pictogrammen is ICO. U moet de volgende pictogramgrootten opgeven.
- 16x16 pixels
- 20x20 pixels
- 24x24 pixels
- 32x32 pixels
- 40x40 pixels
- 48x48 pixels
Zorg ervoor dat 32-bits pictogrammen met alfakanaal zijn opgegeven in alle resoluties.
IME-merkpictogrammen worden gedefinieerd door een wit vak waarin een typografische glyph wordt weergegeven in een modern lettertype. Elk definiërend symbool wordt gekozen door elk taalteam. De glyph is zwart. De doos bevat een buitenste lijn van 1 pixel in zwart bij 50% dekking. Nieuwe versies worden gedefinieerd door een afgeronde hoek in de linkerbovenhoek van het vak.
IME-moduspictogrammen worden gedefinieerd door een wit typografisch glyph in een modern lettertype met een zwarte buitenste lijn van 1 pixel dikte op 50% dekking.
| Icon | Description |
|---|---|
|
|
Voorbeeld van IME-merkpictogram voor Traditioneel Chinees ChangeJie. |
|
|
Voorbeeld van IME-merkpictogram voor Traditioneel Chinees ChangeJie. |
|
|
Voorbeeld van ime-moduspictogram. |
Beheerd venster
Als u de kandidatengebruikersinterface wilt weergeven, moet een IME het venster instellen als eigendomsvenster, zodat deze boven de momenteel actieve app kan worden weergegeven. Gebruik de methode ITfContextView::GetWnd om het venster op te halen waaraan u eigenaar bent. Als GetWnd een fout of een NULLHWND retourneert, roept u de functie GetFocus aan.
if (FAILED(pView->GetWnd(&parentWndHandle)) || (parentWndHandle == nullptr)) { parentWndHandle = GetFocus(); }
Interactie van IME-kandidaatvensters met licht-dismissen oppervlakken
Het ontslagmodel voor pop-upvensters wordt 'light dismiss' genoemd, omdat een gebruiker dergelijke vensters eenvoudig kan sluiten. IME's werken goed binnen het Windows-interactiemodel. De IME-vensters moeten deelnemen aan het light dismiss-model.
Als u wilt deelnemen aan het model voor lichte afsluiting, moet uw IME drie nieuwe Windows-gebeurtenissen activeren met de functie NotifyWinEvent of een vergelijkbare functie. Deze nieuwe gebeurtenissen zijn:
- EVENT_OBJECT_IME_SHOW : deze gebeurtenis genereren wanneer de IME zichtbaar wordt.
- EVENT_OBJECT_IME_HIDE : deze gebeurtenis genereren wanneer de IME verborgen is.
- EVENT_OBJECT_IME_CHANGE - Deze gebeurtenis activeren wanneer de IME beweegt of van grootte verandert.
Compatibiliteit declareren
IME's verklaren dat ze compatibel zijn door de categorie GUID_TFCAT_TIPCAP_IMMERSIVESUPPORT voor hun IME te registreren met behulp van ITfCategoryMgr::RegisterCategory.
De standaard IME-modus instellen op Aan
We bieden een betere UX voor IME's.
Ondersteuning voor DPI-schaalaanpassing voor bureaubladtoepassingen
Verbeterde ondersteuning voor DPI-schaalaanpassing maakt het mogelijk om een query uit te voeren op het gedeclareerde DPI-bewustzijnsniveau van elk bureaubladproces om te bepalen of de gebruikersinterface moet worden geschaald. In een scenario met meerdere beeldschermen schaalt Windows de gebruikersinterface op de juiste wijze voor verschillende DPI-instellingen op elke monitor.
Omdat uw IME wordt uitgevoerd in de context van het proces van elke toepassing, moet u geen DPI-bewustzijnsniveau declareren voor uw IME. Dit zorgt ervoor dat uw IME op het DPI-awarenessniveau van het huidige proces wordt uitgevoerd.
Om ervoor te zorgen dat alle IME UI-elementen evenredig schalen met de UI-elementen van het proces waarin u werkt, moet u correct reageren op verschillende DPI-waarden.
Opmerking
Om pariteit met nieuwe bureaubladtoepassingen te garanderen, moet uw IME ondersteuning bieden per monitor-DPI-bewustzijn, maar mag geen niveau van bewustzijn zelf declareren. Het systeem bepaalt de juiste schaalvereisten in elk scenario.
Zie Hoge DPI voor meer informatie over de ondersteuningsvereisten voor DPI-schaling voor desktoptoepassingen.
IME-installatie
Als u uw IME bouwt met behulp van Microsoft Visual Studio, maakt u een installatie-ervaring voor uw IME met behulp van een installatieprogramma van derden, zoals InstallShield van Flexera Software.
De volgende stappen laten zien hoe u InstallShield gebruikt om een installatieproject te maken voor uw IME DLL.
- Installeer Visual Studio.
- Visual Studio starten.
- Wijs in het menu Bestand de optie Nieuw aan en selecteer Project. Het dialoogvenster Nieuw project wordt geopend.
- Navigeer in het linkerdeelvenster naar Sjablonen > andere projecttypen > instellen en implementeren, klik op InstallShield Limited Edition inschakelen en klik op OK. Volg de installatie-instructies.
- Start Visual Studio opnieuw.
- Open het ime-oplossingsbestand (.sln).
- Klik in Solution Explorer met de rechtermuisknop op de oplossing, wijs Toevoegen aan en selecteer Nieuw project. Het dialoogvenster Nieuw project toevoegen wordt geopend.
- Navigeer in het linkerbesturingselement voor de structuurweergave naar Sjablonen > Andere projecttypen > InstallShield Limited Edition.
- Klik in het middelste venster op InstallShield Limited Edition Project.
- Typ 'SetupIME' in het tekstvak Naam en klik op OK.
- Klik in het dialoogvenster Projectassistent op Toepassingsgegevens.
- Vul de bedrijfsnaam en de andere velden in.
- Klik op Toepassingsbestanden.
- Klik in het linkerdeelvenster met de rechtermuisknop op de map [INSTALLDIR] en selecteer Nieuwe map. Geef de map Invoegtoepassingen een naam.
- Klik op Bestanden toevoegen. Navigeer naar uw IME DLL en voeg deze toe aan de map Plugins . Herhaal deze stap voor de IME-woordenlijst.
- Klik met de rechtermuisknop op de IME DLL en selecteer Eigenschappen. Het dialoogvenster Eigenschappen wordt geopend.
- Klik in het dialoogvenster Eigenschappen op het tabblad COM & .NET-instellingen .
- Selecteer onder Registratietypede optie Zelfregistratie en klik op OK.
- Bouw de oplossing. De IME DLL is gebouwd en InstallShield maakt een setup.exe-bestand waarmee gebruikers uw IME kunnen installeren in Windows.
Als u uw eigen installatie-ervaring wilt maken, roept u de methode ITfInputProcessorProfileMgr::RegisterProfile aan om de IME te registreren tijdens de installatie. Schrijf registervermeldingen niet rechtstreeks.
Als de IME onmiddellijk na de installatie bruikbaar moet zijn, roept u InstallLayoutOrTip aan om de IME toe te voegen aan invoermethoden die door de gebruiker zijn ingeschakeld, met behulp van de volgende indeling voor de psz-parameter:
<LangID 1>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
IME-toegankelijkheid
Implementeer de volgende conventie om uw IME's te laten voldoen aan de toegankelijkheidsvereisten en om met Verteller te werken. Als u kandidaatlijsten toegankelijk wilt maken, moeten uw IME's deze conventie volgen.
- De lijst met kandidaten moet een UIA_AutomationIdPropertyId gelijk zijn aan 'IME_Candidate_Window' voor lijsten met conversiekandidaten of 'IME_Prediction_Window' voor lijsten met voorspellingskandidaten.
- Wanneer de lijst met kandidaten wordt weergegeven en verdwijnt, worden gebeurtenissen van het type UIA_MenuOpenedEventId en UIA_MenuClosedEventId gegenereerd.
- Wanneer de huidige geselecteerde kandidaat wordt gewijzigd, wordt er een UIA_SelectionItem_ElementSelectedEventId in de lijst met kandidaten weergegeven. Het geselecteerde element moet een eigenschap hebben UIA_SelectionItemIsSelectedPropertyId gelijk aan TRUE.
- De UIA_NamePropertyId voor elk item in de lijst met kandidaten moet de naam van de kandidaat zijn. U kunt eventueel aanvullende informatie verstrekken om kandidaten ondubbelzinnig te maken via UIA_HelpTextPropertyId.
Verwante onderwerpen
Windows developer