Page 1 sur 1

[..] Comment intégrer des .REG dans une DLL et les appeler

Posté : lun. 09 déc. 2013 20:29
par LeeK
Bonsoir,

Je débute depuis peu sur Autoit.

Voilà mon problème. J'ai scripté un programme en DOS. Je voudrai le retravailler avec Autoit.

Je souhaite intégrer des raccourcis ainsi que des fichiers de registre et des fichiers INI.
J'ai réussi à écrire dans la base de registre avec la commande ci-dessous.

Code : Tout sélectionner

[i]Run("cmd.exe /c reg import C:\Script\BDR.reg")[/i]
Après compilation, une fois le fichier supprimé ou déplacé, cela ne fonctionne plus.

J'ai donc voulu l'intégrer dans une DLL.

J'ai réussi à intégrer des fichiers REG en tant que RCData dans une DLL.
J'arrive à le lancer avec la ligne de commande ci-dessous

Code : Tout sélectionner

[i]Dllcall("TEST.dll", @ScriptFullPath, "BDR")
[/i]
Mais cette commande ne m'écrit rien dans la base de registre.

Je voudrai dans un 2e temps, extraire les fichiers INI de la DLL vers un répertoire spécifique.
Une petite aide?

En vous remerciant :D

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : lun. 09 déc. 2013 21:03
par jguinch
Bonsoir LeeK, bienvenue sur le forum.
Il existe des fonctions intégrées à AutoIt pour lire/écrire dans la base de registre, ainisi que pour les fichiers INI.
Voir dans l'aide les fonctions RegWrite et IniWrite.

Si ton fichier .reg contient beaucoup d'infos et que tu souhaites le laisser "en dehors" du script, tu peux l'embarquer dans l'exécutable compilé. Il suffira alors de le sortir de l'exécutable avant de les utiliser.

Petit ex :

Code : Tout sélectionner

FileInstall("BDR.reg", @TempDir & "\BDR.reg", 1)
Run('regedit /s "' & @TempDir & '\BDR.reg"', @SystemDir, @SW_HIDE)

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : lun. 09 déc. 2013 21:08
par mikell
Bienvenue sur le forum

Tu devrais regarder dans le fichier d'aide d'Autoit la fonction FileInstall() et les fonctions sous Registry Management :wink:

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : lun. 09 déc. 2013 22:17
par LeeK
@jguinch

Merci pour ton script. Cela fonctionne, mais j'aimerai une possibilité où les fichiers REG et les fichiers INI soient "compilés" avec le fichier final. N'avoir qu'un seul fichier EXE.

En effet, j'ai 5 fichiers REG , dont 1 qui a plus de 3600 lignes.

@mikell

J'avais regardé du coté des fonctions sous Registry Management, mais avec le nombres de lignes que j'ai, cela serait trop long. De plus, si je veux mettre à jour les clés de registre, il est plus simple de faire un "export" de la base de registre, vers un .REG et de l'intégrer à autoit.

Concernant les fichiers INI, ce sont des fichiers propre à des logiciels. Du style si le fichier INI est en francais, alors le logiciel se lancera en francais, avec le bon path etc...

Avez vous d'autres suggestions?

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : mar. 10 déc. 2013 00:24
par Tlem
LeeK a écrit :j'aimerai une possibilité où les fichiers REG et les fichiers INI soient "compilés" avec le fichier final. N'avoir qu'un seul fichier EXE.
FileInstall() fait parfaitement l'affaire. ^^

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : mar. 10 déc. 2013 00:29
par mikell
Absolument...

Maintenant on peut aussi bricoler :roll: pour intégrer à peu près ce qu'on veut comme texte dans le code
► Afficher le texte

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : mar. 10 déc. 2013 00:42
par Tlem
Ne fonctionne pas une fois compilé. :P

On peux aussi prendre la truelle pour mettre le beurre sur la biscotte, mais je le répète : FileInstall() fait parfaitement l'affaire dans ce cas précis, sinon, il va falloir passer par des méthodes de compilation du texte des fichiers dans des variables pour les extraire afin de recréer les fichiers (cf mon exemple dans la section des UDFs), donc pas la peine de prendre la truelle. ^^

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : mar. 10 déc. 2013 10:50
par jguinch
C'est pas pour faire la malin là, mais dans le code que j'ai posté, j'ai justement utilisé FileInstall() :P
LeeK a écrit :mais j'aimerai une possibilité où les fichiers REG et les fichiers INI soient "compilés"
Oui, c'est justement ce qu'on te dit tous les 3 :la fonction FileInstall() fait ça : regarde la doc :roll:

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : mar. 10 déc. 2013 12:23
par jchd
Je plussoie : la documentation est certifiée ne contenir ni explosif, ni sarin, ni anthrax. On peut donc la consulter sans précautions particulières.

Re: [..] Comment intégrer des .REG dans une DLL et les appel

Posté : mar. 10 déc. 2013 20:57
par Tlem
jguinch a écrit :C'est pas pour faire la malin là, mais dans le code que j'ai posté, j'ai justement utilisé FileInstall()
C'est bien pour cela que je confirme l'utilisation de cette fonction. J'aurais pu faire "+1" mais c'était moins porteur. ^^