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.
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
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

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

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

pour intégrer à peu près ce qu'on veut comme texte dans le code
► Afficher le texte
Code : Tout sélectionner
$txt = StringRegExpReplace(FileRead(@scriptfullpath), '(?s).+<my_file>(.+)</my_file>.*', "$1")
Msgbox(0,"", $txt)
#cs
<my_file>
Introduction
AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying "runtimes" required!
AutoIt was initially designed for PC "roll out" situations to reliably automate and configure thousands of PCs. Over time it has become a powerful language that supports complex expressions, user functions, loops and everything else that veteran scripters would expect. Features:
Easy to learn BASIC-like syntax
Simulate keystrokes and mouse movements
Manipulate windows and processes
Interact with all standard windows controls
Scripts can be compiled into standalone executables
Create Graphical User Interfaces (GUIs)
COM support
Regular expressions
Directly call external DLL and Windows API functions
Scriptable RunAs functions
Detailed helpfile and large community-based support forums
Compatible with Windows 2000 / XP / 2003 / Vista / 2008 / 7
Unicode and x64 support
Digitally signed for peace of mind
Works with Windows Vista's User Account Control (UAC)
AutoIt has been designed to be as small as possible and stand-alone with no external .dll files or registry entries required making it safe to use on Servers. Scripts can be compiled into stand-alone executables with Aut2Exe.
Also supplied is a combined COM and DLL version of AutoIt called AutoItX that allows you to add the unique features of AutoIt to your own favourite scripting or programming languages!
Best of all, AutoIt continues to be FREE - but if you want to support the time, money and effort spent on the project and web hosting then you may donate at the AutoIt homepage.
</my_file>
#ce
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é.
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()
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

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. ^^