Une méthode pour obtenir le nom d'un ordinateur ? (UNICODE)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Une méthode pour obtenir le nom d'un ordinateur ? (UNICODE)

Message par jambon »

Bonjour, à tous et à toute voila dans le cadre d'un de mes projet j'ai besoin de récupérer le nom d'utilisateur du pc ou le programme s'execute.

J'utilise donc la méthode existant de pure basic.
monstring$ = GetEnvironmentVariable("USERNAME")

Je compile et tout va pour le mieux, je récupere bien mon nom d'utilisateur, sauf dans un des cas quand le programme tourne sur des systèmes avec une langue type Russe,Arabe,Chinois ect.. ou purebasic me retourne un nom d'utilisateur totalement illisible et incorecte.

DDDD_DD dans ce genre là au lieu de:
ПЕТЯ

Du coup c'est moi ou GetEnvironementVariable ne marche pas en unicode ? (oui j'ai déja cocher la compilation en unicode)
Parce que j'ai bien l'impression que c'est un problème lié donc au fait que la procedure ne marche pas en Unicode et seulement en ASCII.

Vous connaisez une méthode plus fiable et qui marche de façon global sur les pc Windows ?
Cordialement,
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par Kwai chang caine »

Bonjour JAMBON, content de parler pour la premiere fois avec toi :D

Avec les API peut être.., t'as essayé ça:

Code : Tout sélectionner

 NomSession.s = Space(500) 
NameLen = Len(NomSession) 
GetUserName_(@NomSession, @NameLen) 
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par case »

pour ma part GetEnvironmentVariable("USERNAME") fonctionne compilé en unicode


peut être faut il la bonne font pour l'affichage car si c'est en chinois et que tu n'as pas les caractères chinois cela ne s'affiche pas correctement
ImageImage
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par Ar-S »

Idem,

Code : Tout sélectionner

Debug GetEnvironmentVariable("USERNAME") 
ça marche chez moi aussi en unicode.
Font de mon IDE : Consolas
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par case »

Ar-S a écrit :Idem,

Code : Tout sélectionner

Debug GetEnvironmentVariable("USERNAME") 
ça marche chez moi aussi en unicode.
Font de mon IDE : Consolas
en même temps ton nom d'utilisateur n'est sans doute pas en chinois en arabe ou en russe :)
ImageImage
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par jambon »

Salut Kwai chang caine, merci pour l'idée je vais tester ta solution.

Et bien oui @Ar-S et case, quand je parle que sa ne fonctionne pas en Unicode je me suis surement mal exprimer.
Enfaite je compile en unicode, et la fonction marche bien chez moi. (bah oui système français ou anglais donc forcément je peut pas trop savoir à l'avance si sa marche sur tout les système)

Techniquement l'unicode devrai me retourner le bon username/nom de compte en "Russe" hors là sa m'affiche "D-D-D-DDD". (rien à voir)
Ce qui me porte bien à croire que c'est la fonction PureBasic qui ne supporterai pas l'unicode. (genre dans la fonction y'a un flag #ASCII , ce qui donnerai du sens au problème qui n'intervient ou ne se voit que sur des systèmes ou la langue n'est pas dérivé du Latin )


En ce qui concerne la "font" je peut vous éliminer ce cas d'école, parce que le programme est compilée, et tourne chez un client ou son système est totalement en russe. (donc bon là..)


Je vous dit quoi et je vais mettre à jour le topic.
Merci ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par Ar-S »

Donc en gros tu dis que sur l'OS Russe, la fonction ne retourne pas le bon nom ?
Ne supprimons pas tout de suite l'éventuel soucis de font.
Il faut tout de même vérifier si la Font de l'IDE sur le système Russe comporte les caractères de l'USER, ce n'est peut-être pas le cas. Il faut peut être aussi lui imposer une font lors de la compilation. ça coute rien de vérifier. ;) (voir sujet inclure font externe)
Je ne peux pas tester plus avant.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Une méthode pour obtenir le nom d'un ordinateur ? (UNICO

Message par jambon »

Effectivement, je vient de tester sur un OS russe (Vista) en Machine Virtuel et à ma surprise les deux fonction me retourne bien via une messagebox le nom en russe sans problème 8O (Je vous dit pas quand j'ai vu sa, mon brain ma sortie "Fatal Error")


Je vais regarder pour les font à inclure, faut dire aussi que le mec en question tourne sous XP.
Si je trouve l'anguille sous la roche, je vous ferai signe, c'est pas un gros problème en soit mais sa reste "génant".
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Une méthode pour obtenir le nom d'un ordinateur ? (UNICODE)

Message par jambon »

Je met à jour le thread.
Enfaite il semblerai que sa soit la fonction HTTP_GET() que j'utilise pour transmettre les information qui soit en cause
http://www.purebasic.fr/english/viewtopic.php?p=217326


Effectivement, c'est en ASCII que la requete est réaliser.
Ce qui me permet donc de trouver l'origine du problème.


Maintenant plus qu'a trouver comment résoudre ce dit problème.
Répondre