// Init
Projet:Init()
Merci à tous
----------------------------------------------------------------------------------------------------------
Salut !
1) Imprimante change de nom à chaque login : ? Comprends pas que ça le
fasse. Faut voir ou tu récupères ce nom. Nous, on utilise
AppelDll32("winspool.drv","EnumPrintersA", .......)
2) Stocker dans .ini 2 imp différentes et pour chaque user :
ImpDef = INILit("INIT","IMPRIMANTE_DEF" + sansespace(ReseauUtilisateur())
,lpDefault,lpFileName)
ImpCbarre = INILit("INIT","IMPRIMANTE_CBAR" +
sansespace(ReseauUtilisateur()) ,lpDefault,lpFileName)
Il y aura donc autant de lignes que de Users *2 (1 ligne pour Imp défaut,
une autre pour Code Barre)
Rem : pour moi, ce que tu appelles un utilisateur ou un client = un User
Windows (login session).
Espérant avoir aidé,
Victor
Bonjour,
En mode TSE, les imprimantes des clients (imprimantes distantes) prennent ce
nom au moment de la connexion au serveur TSE (serveur en TSE 2003, clients
en XP Pro ou Vista): "HP laserjet 1200 (à partir de PC_DISTANT) depuis la
session 2", je l'ai constaté sur le serveur 2003 (dans la fenêtre
"paramètres\imprimantes et copieurs") au moment ou l'utilisateur se loguait.
Avec AppelDll32("winspool.drv","EnumPrintersA", .......) tu vas récupérer
les imprimantes locales il me semble ?! la fonction va donc te retourner les
imprimantes locales du serveur et pas celles des clients distants ?!
> 2) Stocker dans .ini 2 imp différentes et pour chaque user :
>
> ImpDef = INILit("INIT","IMPRIMANTE_DEF" + sansespace(ReseauUtilisateur())
> ,lpDefault,lpFileName)
> ImpCbarre = INILit("INIT","IMPRIMANTE_CBAR" +
> sansespace(ReseauUtilisateur()) ,lpDefault,lpFileName)
>
> Il y aura donc autant de lignes que de Users *2 (1 ligne pour Imp défaut,
> une autre pour Code Barre)
>
> Rem : pour moi, ce que tu appelles un utilisateur ou un client = un User
> Windows (login session).
>
Effectivement, ca permet effectivement de gérer le cas en mode TSE. Je vais
mettre en place ton idée de ReseauUtilisateur
Encore merci pour tes idées
Bonjour,
J'ai des applications qui tournent sous Citrix (pas sous TSE) et je
stocke les informations de l'application (.INI) dans les répertoires à
la norme Windows en utilisation de la fonction "sysrep" de windev.
ce soft remonte sur le poste du client et recherche ses imprimantes
directement sur le poste de l'utilisateur connecté en TSE
Bonjour,
Oui, ça serait une solution; mais quel soft est capable de faire ça ?
Bonjour,
> Je ne connais pas Citrix, mais avec Windows Terminal Server, les
> imprimantes distantes prennent un nom associé à la connexion
> (sous la forme "HP laserjet 1200 (à partir de PC_DISTANT)
> depuis la session 2") C'est mon problème car, du coup, je ne peux
> pas stocker ce nom dans un INI
> puisqu'il ne correspond pas au nom de l'imprimante qui est connectée
> physiquement au poste distant.
iListeImprimante() doit te rendre les imprimantes liées au poste CITRIX,
TSE ou autre.
Ensuite tu fais ta sauvegarde dans le répertoire utilisateur
SysRep ( srAppDataCommun )
Par contre dans ce cas la sauvegarde est par utilisateur et ce n'est
peut-être pas ce que tu cherches. Cependant dans ton message initial tu
parles bien de sauvegarde par poste client ?
En tout les cas de mon côté j'utilise ce principe car je trouve qu'il
ouvre plus de possibilités qu'un paramétrage commun à tous et ce quelque
soit la configuration système.
Amicalement,
Emmanuel Haefelé.
Ce programme localise la station du client,
declenche un soft sur le client (le copie s'il n'est pas là, ca
evitera une telediff)
Le soft ( sur poste client) t'extrait les imprimantes (c'est facile si
t'es en local) , l'ecrit dans un fichier xml ou txt
Le soft (coté serveur) va chercher le fichier en question et connaitra
les imprimantes du client.
Si tu veux eviter de balader des fichiers, passe par des sockets.
pour connaitre le poste du client, tu dois trouver ca des les
sysEnvironnement il me semble
Sinon, à distance, tu peux interroger le registre du client mais je
vois pas trop comment taper dans le HK_CURRENT_USER....
Ce programme localise la station du client,
declenche un soft sur le client (le copie s'il n'est pas là, ca
evitera une telediff)
Le soft ( sur poste client) t'extrait les imprimantes (c'est facile si
t'es en local) , l'ecrit dans un fichier xml ou txt
Le soft (coté serveur) va chercher le fichier en question et connaitra
les imprimantes du client.
Si tu veux eviter de balader des fichiers, passe par des sockets.
pour connaitre le poste du client, tu dois trouver ca des les
sysEnvironnement il me semble
Sinon, à distance, tu peux interroger le registre du client mais je
vois pas trop comment taper dans le HK_CURRENT_USER....
Oui, je vais réfléchir à cette méthode, qui effectivement devrait résoudre
mon problème. Mais ça me parrait assez compliqué à mettre en oeuvre....
surtout pour le besoin (qui est seulement de paramétrer l'imprimante par
défaut du client)
En tous cas merci pour ton aide
Phil
style la case à cocher qui va bien "definir l'imprimante local par
defaut ..."
vais demander aux admin ... ca coute rien :o)
On 19 nov, 18:06, "I.G.LOG" <ig...@free.fr> wrote:
> <thierry.jacqu...@gmail.com> a écrit dans le message de news:
> e192a85d-b64a-420c-b807-a0b90b540...@40g2000prx.googlegroups.com...
>
> iListeImprimante() doit te rendre les imprimantes liées au poste CITRIX,
> TSE ou autre.
>
C'est bien la fonction que j'utilise. Mais elle me retourne la liste des
imprimantes sous la forme "HP laserjet 1200 (à partir de PC_DISTANT) depuis
la session 2" !!! Et c'est bien là qu'est le problème !
Lorsque l'utilisateur sélectionne un item dans la liste, je voudrais
enregistrer son choix dans un fichier INI (ce choix correspondant à
l'imprimante par défaut dans l'application) mais "HP laserjet 1200 (à partir
de PC_DISTANT) depuis la session 2" n'est pas forcemment un nom valide
d'imprimante puisqu'il dépend de la session (et de l'utilisateur) : si il
est le 1er à se logger au serveur il aura le n° de session 1 et par là même
l'imprimante "HP laserjet 1200 (à partir de PC_DISTANT) depuis la session
1"... et cette imprimante ne sera pas dans le fichier ini !!!
Et je ne vois pas comment régler ce problème !
> Ensuite tu fais ta sauvegarde dans le répertoire utilisateur
> SysRep ( srAppDataCommun )
>
> Par contre dans ce cas la sauvegarde est par utilisateur et ce n'est
> peut-être pas ce que tu cherches. Cependant dans ton message initial tu
> parles bien de sauvegarde par poste client ?
>
Si, par poste client (donc par utilisateur) c'est ce que je recherche,
puisque je veux pouvoir configurer, pour l'appli, l'imprimante par défaut.
> En tout les cas de mon côté j'utilise ce principe car je trouve qu'il
> ouvre plus de possibilités qu'un paramétrage commun à tous et ce quelque
> soit la configuration système.
>
>
C'est bien ce principe que j'utilise (un fichier INI par utilisateur)
> Amicalement,
>
> Emmanuel Haefelé.
>
Encore merci
Salut !
Je n'avais pas fait attention au fait que les Imp étaient locales aux
stations clientes.
Dans ce cas, si le nom change à chaque login, je ne vois pas trop comment
pouvoir indiquer de manière "permanente" (dans un .ini) que telle imprimante
= code barre, telle autre = listes, etc..
Autre idée : si la config ne change pas trop souvent, et si le serveur
redonne la liste des imp du poste client toujours dans le même ordre, tu
pourrais stocker pour chaque User (cf mon message précédent) non pas le nom
mais le N° d'imprimante (2ème de la liste, 3ème, etc). Donc tu sais que pour
tel poste, l'imp code barre est la 2ème. Tu vas chercher dans la liste le
2ème nom.
Ca fait peut être "bricolage", mais s'il n'y a pas d'autres solutions...
Victor
style la case à cocher qui va bien "definir l'imprimante local par
defaut ..."
vais demander aux admin ... ca coute rien :o)
Bonjour,
Oui il y a ça dans la config bureau à distance, mais ca permet de définir
l'imprimante windows ! dans mon cas, je veux pouvoir dire, au niveau de
l'appli, quelle imprimante je dois utiliser (le client peut avoir plusieurs
imprimantes, utiliser la 1ere sous windows et la seconde pour l'appli - je
veux seulement définir l'imprimante par défaut dans l'appli)
Je crois que ce problème est insoluble (voir post de Victor dans ce fil) à
cause de TSE qui donne des noms dynamiques aux imprimantes distantes
En tous cas merci à vous tous pour vos réponses
En tous cas, merci de vous être interessés au problème
Bonjour,
> En effet, je crois qu'il n'y a pas de solution simple.
Etant confronté en théorie au même problème que toi j'ai fait quelques
recherches supplémentaires et ai à priori trouvé une solution paliative.
D'après ce que j'ai compris il faut que tes imprimantes soient installées
sur le serveur et soient en IP. Dans ce cas le numéro de session
n'apparait pas.
Avec TSE n'est-il pas logique qu'il en soit ainsi ? Il semblerait en tout
les cas que chez nous la plupart de nos clients soient dans ce type de
configuration et que ça expliquerait que je ne rencontre pas ce problème.
Cordialement,
Emmanuel Haefelé.
par contre, faut faire le bazar et surtout se taper la doc
microsoft...
y'a un exemple dans une LST il me semble
On 20 nov, 14:37, "Emmanuel Haefele" <e.haef...@wanadoo.fr> wrote:
> "I.G.LOG" <ig...@free.fr> a écrit dans le message denews:4925151a$0$892$ba4a...@news.orange.fr...
Mais dans mon cas ce sont bien des imprimantes distantes qu'il est question,
donc pas d'IP, elles sont connectés aux port LPT ou USB du client. C'est une
config. tout a fait normale, je ne comprends pas que je sois seul à
rencontrer ce problème; en fait pour avoir ce problème, il faut avoir besoin
d'imprimer sur une imprimante différente de celle définie par défaut et
surtout de vouloir conserver ce choix !!! Je dois être seul à faire ça ?!
(nota: dans mon cas l'agence est à 800 km du site central, donc les
imprimantes "locales" sont indispensables)
Bonjour,
Je vais essayer de retrouver cet exemple et voir si ça peut régler mon
problème.
Merci pour cette idée
J'ai du abandonner la vente d'une solution utilisant des "petits" scanners
en local à cause de cela.
Bon courage.
Victor
Considérant que le début du nom de l'imprimante ne change pas (vu que
ce n'est que la fin du nom qui est variable, contenant le n° de session
TSE) il suffit de faire une recherche sur une partie du nom.
Voici un bout de code que j'utilise, je vous laisse le plaisir de
l'adapté.
(dans mon cas, je remplit une zone mémoire des imprimantes disponibles
sur le serveur pour l'utilisateur. ensuite je fait la recherche dans
cette zone mémoire)
PROCEDURE MtVerifImprimante(PNom)
// Cette fonction sert pour les utilisateur en TSE
// Windows met et change des n° de session dans les noms d'imprimante
// Cette fonction RENVOYER la meme imprimante sans s'occupé du n° de
session
WNom est une chaîne = PNom
WNomTrouve est une chaîne
WChg est un booléen
wtrouve,wstop est un booléen
Wtrace est un booléen
Wtrace=Val(OWG:MOFParUtil:MtLit("Trace","Imprimante","0"))
SI PNom~="" ALORS
SI Wtrace ALORS OWG:MOFParUtil:MtEcrit("Imprimante_Verif","Recherche
Vide"," ...")
RENVOYER ""
FIN
// initialisation de la liste des imprimante du poste
SI PAS :MZImpOk ALORS :_MZImpInit()
WNomTrouve=MemRecherche(:MZImp,WNom)
SI MemTrouvé(:MZImp) ALORS
SI Wtrace ALORS OWG:MOFParUtil:MtEcrit("Imprimante_Verif",PNom,"
Trouve direct")
RENVOYER WNom // c'est ok, c'est une imprimante qui existe
FIN
// le nom de l'imprimante n'existe pas, recherche de l'imprimante dont
le nom correspond le mieux
// (au moins les 10 premier caratère doivent être identiques)
wtrouve=Faux
TANTQUE PAS wtrouve ET Taille(WNom)>10
WNomTrouve=MemPremier(:MZImp);wstop=Faux
TANTQUE PAS MemEnDehors(:MZImp) ET PAS wstop
SI WNomTrouve[=WNom ALORS wstop=Vrai;wtrouve=Vrai
SI WNomTrouve>WNom ALORS wstop=Vrai
SI PAS wstop ALORS WNomTrouve=MemSuivant(:MZImp)
FIN
WNom=WNom[[1 A Taille(WNom)-1 ]]
FIN
SI wtrouve ALORS
SI Wtrace ALORS OWG:MOFParUtil:MtEcrit("Imprimante_Verif",PNom,"
renvoi => "+WNomTrouve)
RENVOYER WNomTrouve
SINON
SI Wtrace ALORS OWG:MOFParUtil:MtEcrit("Imprimante_Verif",PNom,"Pas
trouvé !")
RENVOYER PNom
FIN
Je conserve tel quel le nom de l'imprimante choisie par l'utilisateur.
Ex : MonImprimante (a partir sur poste \\monposte) dans la session 10
C'est lors de la demande de l'utilisation de l'imprimante que je
cherche le nom valide actuel
Ex : MonImprimante (a partir sur poste \\monposte) dans la session 22
En général, d'une session sur l'autre, mon nom de poste n'a pas changé,
comme la langue.
Celà ne doit poser aucun problème sur un serveur autre que francais.
(Cela ne marcherait plus si le n° de session était enregistré en début
de nom)
A noté, que le nom de l'imprimante est enregistré sur le serveur,
puisque c'est les imprimante du serveur que l'on utilise (en TSE) meme
si celle ci est physiquement branché derrière le poste client.
Sur des serveurs différents, les imprimantes du poste client peuvent
avoir un nom différent voir n'être pas du tout mappées en fonction des
driver installés sur le serveur.