OVH Cloud OVH Cloud

Ecrire dans un fichier sans utiliser filesystemobject

5 réponses
Avatar
BOP
Bonjour,
J'ai lu dans ce newsgroup il y a quelques temps déjà, qu'il était
déconseillé d'utiliser le filesystemobject pour écrire dans un fichier, si
l'on souhaitait avoir de bonnes performances. Je sais qu'il était conseillé
d'utiliser les API windows mais comme je ne connais pas ces API, je ne sais
pas qu'elles sont les fonctions à utiliser. De plus je ne retrouve aucune
trace sur ce sujet désormais dans ce newsgroup ...
Merci de bien vouloir me dépanner
Cdlt

5 réponses

Avatar
BOP
Bien sûr le langage est le vbscript ...


Bonjour,
J'ai lu dans ce newsgroup il y a quelques temps déjà, qu'il était
déconseillé d'utiliser le filesystemobject pour écrire dans un fichier, si
l'on souhaitait avoir de bonnes performances. Je sais qu'il était conseillé
d'utiliser les API windows mais comme je ne connais pas ces API, je ne sais
pas qu'elles sont les fonctions à utiliser. De plus je ne retrouve aucune
trace sur ce sujet désormais dans ce newsgroup ...
Merci de bien vouloir me dépanner
Cdlt


Avatar
Fred
Dans le message:,
BOP écrit:
Bien sûr le langage est le vbscript ...


Bonjour,
J'ai lu dans ce newsgroup il y a quelques temps déjà, qu'il était
déconseillé d'utiliser le filesystemobject pour écrire dans un
fichier, si l'on souhaitait avoir de bonnes performances. Je sais
qu'il était conseillé d'utiliser les API windows mais comme je ne
connais pas ces API, je ne sais pas qu'elles sont les fonctions à
utiliser. De plus je ne retrouve aucune trace sur ce sujet désormais
dans ce newsgroup ...
Merci de bien vouloir me dépanner
Cdlt



Bonjour,
Je pense que tu as lu cela dans le group vb. En vb il y a des
alternatives, en vbs je ne crois pas. Ceci dit, si quelqu'un connaît un
moyen d'appeler des API en bvs, cela m'intéresse !

--
Fred


Avatar
Jean-Claude BELLAMY
Dans le message news:ufn% ,
Fred s'est ainsi exprimé:

[...] Ceci dit, si quelqu'un connaît
un moyen d'appeler des API en bvs, cela m'intéresse !


C'est simple : il suffit de passer par un contrôle ActiveX (écrit en VB, en
C, Delphi,...) qui va se charger d'appeler les fonctions de l'API choisie
...

C'est ainsi que je pratique avec mon ActiveX "jcb.ocx" (écrit en VB de VBCCE
5), dans lequel j'appelle des fonctions aussi diverses que
OpenProcessToken (advapi32.dll)
LookupPrivilegeValue (id.)
FormatMessage (kernel32.dll)
GetSystemDirectory (id.)
SendMessageTimeout (user32.dll)
GetSystemMetrics (id.)
SHGetSpecialFolderLocation (shell32.dll)
URLDownloadToFile (urlmon.dll)
...


P.ex. dans le fichier JCB.VBP, j'ai créé une fonction "SetPrivileges", qui
me sert à définir des privilèges SE_RESTORE_NAME et SE_BACKUP_NAME (pour
charger des ruches depuis un VBS).
Cette fonction appelle OpenProcessToken puis AdjustTokenPrivileges.

J'ai défini un usercontrol nommé "tools"
Le fichier compilé s'appelel jcb.ocx, et s'enregistre dans la BDR sous la
clef "HKCRjcb.tools"

Depuis un script VBS, j'appelle cette fonction SetPrivileges ainsi :

jcbCOM
set tools = wscript.CreateObject("jcb.tools")
...
tools.SetPrivileges
...



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*

Avatar
Fred
Dans son message
Jean-Claude BELLAMY nous dit :

Dans le message news:ufn% ,
Fred s'est ainsi exprimé:

[...] Ceci dit, si quelqu'un connaît
un moyen d'appeler des API en bvs, cela m'intéresse !


C'est simple : il suffit de passer par un contrôle ActiveX (écrit en
VB, en C, Delphi,...) qui va se charger d'appeler les fonctions de
l'API choisie ...



Merci Jean-Claude.
Donc tu confirmes indirectement que cela n'est pas faisable directement.
:-)
Dans le même ordre d'idée j'ai testé cette technique en .NET en faisant
un "wrapper" sur des classes du framework et cela fonctionne
effectivement très bien.
J'avais trouvé cela ici :
http://msdn.microsoft.com/vbrun/vbfusion/5000classes/
(je sais c'est un peu lourd mais si on est pressé ... :-))



--
Fred


Avatar
BOP
Merci pour vous réponses mais connaissez vous les fonctions des API windows
qui permettent d'écrire dans un fichier de façon performante ?
Merci d'avance


Dans son message
Jean-Claude BELLAMY nous dit :

Dans le message news:ufn% ,
Fred s'est ainsi exprimé:

[...] Ceci dit, si quelqu'un connaît
un moyen d'appeler des API en bvs, cela m'intéresse !


C'est simple : il suffit de passer par un contrôle ActiveX (écrit en
VB, en C, Delphi,...) qui va se charger d'appeler les fonctions de
l'API choisie ...



Merci Jean-Claude.
Donc tu confirmes indirectement que cela n'est pas faisable directement.
:-)
Dans le même ordre d'idée j'ai testé cette technique en .NET en faisant
un "wrapper" sur des classes du framework et cela fonctionne
effectivement très bien.
J'avais trouvé cela ici :
http://msdn.microsoft.com/vbrun/vbfusion/5000classes/
(je sais c'est un peu lourd mais si on est pressé ... :-))



--
Fred