Page 1 sur 1

CSharp dans AutoIt

Posté : dim. 13 oct. 2019 19:37
par mdanielm
CSharp dans AutoIt, c'est possible, simplement.

https://www.autoitscript.com/forum/topi ... nt-1366978

A utiliser chaque fois que vous avez besoin de rapidité d'exécution. Exemples:
- recherche d'un bitmap à l'intérieur d'un autre bitmap plus large,
- traitement spécifique sur de gros tableaux.

Je vais montrer la simplicité de mise en oeuvre en incorporant le code CSharp dans le fichier AutoIt, mais je pourrais aussi développer un code CSharp plus important, avec des outils spécifiques, dans un fichier à part. Je pourrais aussi utiliser Visual Basic à la place de CSharp.

Exemple:
Je demande à CSharp d'effectuer un calcul simple, puis à AutoIt d'effectuer le même calcul.
#include "DotNetAll.au3"

RunCodeCSharp()
RunCodeAutoIt()
ConsoleWrite("Lequel a raison ?" & @CRLF)

Func RunCodeCSharp()
   Local $oNetCode = DotNet_LoadCScode( GetNetCode(@ScriptFullPath, "CodeCSharp"), "System.dll" )
   Local $oClass = DotNet_CreateObject( $oNetCode, "Calcul" )
   $oClass.Puissance()
EndFunc

func RunCodeAutoIt()
   Local $x = -1^2
   ConsoleWrite("Calcul fait par AutoIt: -1^2 = " & String($x) & @crlf)
EndFunc

#cs CodeCSharp
using System;
class Calcul {
   public void Puissance() {
      double x = - Math.Pow(1, 2);
      Console.WriteLine("Calcul fait par CSharp: -1^2 = " + x.ToString());
   }
}
#ce CodeCSharp
DotNetAll.au3
(51.76 Kio) Téléchargé 509 fois
Commentaire sur le code C#
Attention, le C# est sensible à la casse et les instructions se terminent par ';'
using - est l'équivalent de #include
"System.dll" - est la bibliothèque qui contient la définition de la classe Console
class Calcul - annonce la définition d'une classe de nom Calcul
public - est un attribut de méthode qui autorise l'utilisation à partir d'un objet
void - précise que la méthode ne retourne pas de valeur
Puissance() - est le nom de la méthode de classe qui n'a ici aucun paramètre
Console.WriteLine(); - méthode WriteLine de l'objet Console.

Commentaire sur le code AutoIt
GetNetCode - extrait le code C# contenu dans le Comment-Block nommé "CodeCSharp":
DotNet_LoadCScode - charge en mémoire le code C# et le compile en mémoire.
DotNet_CreateObject - Crée une instance de l'objet Calcul
$oClass.Puissance() - appelle une méthode de l'objet.

Re: CSharp dans AutoIt

Posté : mar. 19 nov. 2019 00:18
par mavitten
Bonsoir et merci pour l'astuce que vous avez partagée, elle m'a beaucoup aidé. Une connaissance de plus.