|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| API Windows - SetInputScope() |
| Iniciado por LeonCosnyd, 30,ene. 2020 11:14 - 2 respuestas |
| |
| | | |
|
| |
Miembro registrado 51 mensajes |
|
| Publicado el 30,enero 2020 - 11:14 |
Bonjour,
J'ai besoin de faire appel à l'API windows pour gérer le type de clavier tactile qui s'ouvre sur une tablette windows (surface). Quand un champ de saisie windev est de type numérique actuellement le clavier tactile (tabtip.exe) de windows s'ouvre en saisie texte et non en saisie numérique.
Après avoir un peu échanger avec PcSoft ils m'ont indiqué que cela était possible en utilisant l'api windows et la fonction SetInputScope() : https://docs.microsoft.com/en-us/windows/win32/api/inputscope/nf-inputscope-setinputscope
Cependant j'ai du mal à l'utiliser... Pouvez-vous m'aider svp ?
Comment transformer l'énumération windows InputScope pour l'utiliser dans windev ?
API("msctf.dll","SetInputScope",Handle(MaFenêtre),"IS_NUMBER") En essayant de passer par une chaine et non par l'objet "InputScope" je n'ai pas d'exception mais le clavier ne s'ouvre toujours pas en mode numérique...
Et quand j'essaie d'implémenter l'énumération InputScope ce provoque une exception (paramètre non valide)
InputScope est une Enumération IS_DEFAULT IS_URL IS_FILE_FULLFILEPATH IS_FILE_FILENAME IS_EMAIL_USERNAME IS_EMAIL_SMTPEMAILADDRESS IS_LOGINNAME IS_PERSONALNAME_FULLNAME IS_PERSONALNAME_PREFIX IS_PERSONALNAME_GIVENNAME IS_PERSONALNAME_MIDDLENAME IS_PERSONALNAME_SURNAME IS_PERSONALNAME_SUFFIX IS_ADDRESS_FULLPOSTALADDRESS IS_ADDRESS_POSTALCODE IS_ADDRESS_STREET IS_ADDRESS_STATEORPROVINCE IS_ADDRESS_CITY IS_ADDRESS_COUNTRYNAME IS_ADDRESS_COUNTRYSHORTNAME IS_CURRENCY_AMOUNTANDSYMBOL IS_CURRENCY_AMOUNT IS_DATE_FULLDATE IS_DATE_MONTH IS_DATE_DAY IS_DATE_YEAR IS_DATE_MONTHNAME IS_DATE_DAYNAME IS_DIGITS IS_NUMBER IS_ONECHAR IS_PASSWORD IS_TELEPHONE_FULLTELEPHONENUMBER IS_TELEPHONE_COUNTRYCODE IS_TELEPHONE_AREACODE IS_TELEPHONE_LOCALNUMBER IS_TIME_FULLTIME IS_TIME_HOUR IS_TIME_MINORSEC IS_NUMBER_FULLWIDTH IS_ALPHANUMERIC_HALFWIDTH IS_ALPHANUMERIC_FULLWIDTH IS_CURRENCY_CHINESE IS_BOPOMOFO IS_HIRAGANA IS_KATAKANA_HALFWIDTH IS_KATAKANA_FULLWIDTH IS_HANJA IS_HANGUL_HALFWIDTH IS_HANGUL_FULLWIDTH IS_SEARCH IS_FORMULA IS_SEARCH_INCREMENTAL IS_CHINESE_HALFWIDTH IS_CHINESE_FULLWIDTH IS_NATIVE_SCRIPT IS_YOMI IS_TEXT IS_CHAT IS_NAME_OR_PHONENUMBER IS_EMAILNAME_OR_ADDRESS IS_PRIVATE IS_MAPS IS_NUMERIC_PASSWORD IS_NUMERIC_PIN IS_ALPHANUMERIC_PIN IS_ALPHANUMERIC_PIN_SET IS_FORMULA_NUMBER IS_CHAT_WITHOUT_EMOJI IS_PHRASELIST IS_REGULAREXPRESSION IS_SRGS IS_XML IS_ENUMSTRING FIN
oInputscope est un InputScope = IS_DIGITS API("msctf.dll","SetInputScope",Handle(MaFenêtre),oInputscope)
==> Exception : Le paramètre n°4 n'est pas d'un type valide pour AppelDLL(). |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 324 mensajes |
|
| Publicado el 30,enero 2020 - 12:51 |
Après quelques test, la ca ne fait pas d'erreur, l'api ,me renvoi 0 en résultat, donc ca doit fonctionner
"An HRESULT is an opaque result handle defined to be zero or positive for a successful return from a function, and negative for a failure. Generally, successful functions return the S_OK HRESULT value (which is equal to zero)."
API("Msctf","SetInputScope",Handle(MaFenêtre),"IS_DIGITS")
Par contre ca ne met quand même pas uniquement des chiffres à la saisieMensaje modificado, 30,enero 2020 - 13:01 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 51 mensajes |
|
| Publicado el 30,enero 2020 - 14:13 |
Je viens de solutionner mon problème !
Pour importer l'énumération InputScope, j'utilise des constantes et non une énumération Windev. Et en parcourant le net j'ai vu qu'il fallait affecter un numéro comme ceci :
CONSTANTE IS_DEFAULT=0 IS_URL=1 IS_FILE_FULLFILEPATH=2 IS_FILE_FILENAME=3 IS_EMAIL_USERNAME=4 IS_EMAIL_SMTPEMAILADDRESS=5 IS_LOGINNAME=6 IS_PERSONALNAME_FULLNAME=7 IS_PERSONALNAME_PREFIX=8 IS_PERSONALNAME_GIVENNAME=9 IS_PERSONALNAME_MIDDLENAME=10 IS_PERSONALNAME_SURNAME=11 IS_PERSONALNAME_SUFFIX=12 IS_ADDRESS_FULLPOSTALADDRESS=13 IS_ADDRESS_POSTALCODE=14 IS_ADDRESS_STREET=15 IS_ADDRESS_STATEORPROVINCE=16 IS_ADDRESS_CITY=17 IS_ADDRESS_COUNTRYNAME=18 IS_ADDRESS_COUNTRYSHORTNAME=19 IS_CURRENCY_AMOUNTANDSYMBOL=20 IS_CURRENCY_AMOUNT=21 IS_DATE_FULLDATE=22 IS_DATE_MONTH=23 IS_DATE_DAY=24 IS_DATE_YEAR=25 IS_DATE_MONTHNAME=26 IS_DATE_DAYNAME=27 IS_DIGITS=28 IS_NUMBER=29 IS_ONECHAR=30 IS_PASSWORD=31 IS_TELEPHONE_FULLTELEPHONENUMBER=32 IS_TELEPHONE_COUNTRYCODE=33 IS_TELEPHONE_AREACODE=34 IS_TELEPHONE_LOCALNUMBER=35 IS_TIME_FULLTIME=36 IS_TIME_HOUR=37 IS_TIME_MINORSEC=38 IS_NUMBER_FULLWIDTH=39 IS_ALPHANUMERIC_HALFWIDTH=40 IS_ALPHANUMERIC_FULLWIDTH=41 IS_CURRENCY_CHINESE=42 IS_BOPOMOFO=43 IS_HIRAGANA=44 IS_KATAKANA_HALFWIDTH=45 IS_KATAKANA_FULLWIDTH=46 IS_HANJA=47 IS_HANGUL_HALFWIDTH=48 IS_HANGUL_FULLWIDTH=49 IS_SEARCH=50 IS_FORMULA=51 IS_SEARCH_INCREMENTAL=52 IS_CHINESE_HALFWIDTH=53 IS_CHINESE_FULLWIDTH=54 IS_NATIVE_SCRIPT=55 IS_YOMI=56 IS_TEXT=57 IS_CHAT=58 IS_NAME_OR_PHONENUMBER=59 IS_EMAILNAME_OR_ADDRESS=60 IS_PRIVATE=61 IS_MAPS=62 IS_NUMERIC_PASSWORD=63 IS_NUMERIC_PIN=64 IS_ALPHANUMERIC_PIN=65 IS_ALPHANUMERIC_PIN_SET=66 IS_FORMULA_NUMBER=67 IS_CHAT_WITHOUT_EMOJI=68 IS_PHRASELIST=69 IS_REGULAREXPRESSION=70 IS_SRGS=71 IS_XML=72 IS_ENUMSTRING=73 FIN
Et pour l'appel à la fonction il ne faut pas utiliser le handle de la fenêtre mais bien le handle du champ ! Ca me parait plus simple et plus logique.
Du coup pour les champs de saisie Windev de type numérique, je mets ce code dans le code d'initialisation du champ :
API("msctf.dll","SetInputScope",Handle(MONCHAMP),IS_DIGITS)
Avec cela tout fonctionne bien ! Reste à définir le type de saisie attendu avec les constantes IS_NUMBER, IS_DIGITS, etc.... |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|