.net autoit ocx registering

Cómo usar AutoItX en.NET(C#) sin registrarse



ocx registering (4)

Copie y pegue el archivo AutoItX3.dll en la carpeta /bin/Debug o /bin/Release . O para el evento posterior a la construcción, establezca la siguiente línea de comando:

copy /Y "$(SolutionDir)/packages/AutoItX.3.3.12.0/AutoItX3.dll" "$(ProjectDir)/bin/Debug"

copy /Y "$(SolutionDir)/packages/AutoItX.3.3.12.0/AutoItX3.dll" "$(ProjectDir)/bin/Release"

Un ejemplo para cargar un archivo a través de la ventana del sistema de Windows usando Firefox como navegador. Yo uso AutoItX v3.3.12.0.

/// <summary> /// Method which allows you to upload a file through windows system window using firefox as browser /// </summary> /// <param name="file">path file</param> /// <param name="winTitle">Window title</param> /// <param name="idEditBox">Text box identifier (es. [CLASS:Edit; INSTANCE:1])</param> /// <param name="idBtnLoad">Open button identifier (es. [CLASS:Button; INSTANCE:1])</param> /// <returns>void</returns> /// <author>Michele Delle Donne</author public static void UploadFileByWindowsFireFoxDialog(string file, string winTitle, string idEditBox, string idBtnLoad) { AutoItX.Init(); AutoItX.WinWait(winTitle); AutoItX.WinActivate(winTitle); AutoItX.ControlSetText(winTitle, "", idEditBox, file); AutoItX.ControlClick(winTitle, "", idBtnLoad); }

¿Cómo uso AutoitX (biblioteca OCX / ActiveX ) en una aplicación .NET C # sin registrarlo?

Me gustaría crear una aplicación con él sin necesidad de utilizar los derechos de administrador para la instalación.

Encontré algunas páginas en MSDN como, Activación sin registro de componentes COM: Un tutorial sobre la creación de archivos de manifiesto para archivos DLL. Lo probé y no lo logré. Entonces tal vez sea posible y lo creé mal. Desafortunadamente, perdí los archivos XML, así que no puedo publicarlo aquí.

También intenté establecer tipos aislados y habilitar interoperabilidad en propiedades de referencia sin éxito.

¿Es posible que AutoItX funcione en C # sin necesidad de registrarse? Si es así, ¿cómo lo hago?

Creo que debería ser posible utilizarlo como DLL y no como OCX, pero no sé exactamente cómo hacerlo en C #.

Actualmente, lo uso como:

AutoItX3Lib.AutoItX3 autoit = new AutoItX3Lib.AutoItX3(); autoit.AutoItSetOption("WinTitleMatchMode", 2);

Entonces, si quisiera ir directamente a las llamadas a DLL, ¿cómo lo haría entonces?


En su proyecto de C # de Visual Studio, solo vaya a Referencia -> Agregar referencia -> Navegue a su dll AutoIt y listo. No hay necesidad de registrarlo por separado. Pero utilizando este método tienes que registrarte.

Una mejor manera es usar la DLL directamente, con las declaraciones de [DllImport]. Aquí hay una clase de muestra que puede usar: http://www.autoitscript.com/forum/topic/72905-c-use-of-the-dll-some-idears-for-you/

Define funciones como esta:

[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)] static public extern int AU3_MouseUp([MarshalAs(UnmanagedType.LPStr)] string Button);


Es muy fácil. Solo necesitas añadir una biblioteca desde tu proyecto. Haga clic derecho en su proyecto de referencia - Agregar referencia - Examinar - Ir a la ubicación AutoitX3Lib.dll (C: / Archivos de programa / AutoitX3 / AutoitX / AutoitX3.dll)

AutoItX3Lib.AutoItX3 autoit = new AutoItX3Lib.AutoItX3();

Para más detalles visita aquí.


Via PInvoke

var assemblies = new NRegFreeCom.AssemblySystem(); var module = assemblies.LoadFrom(Path.Combine(Environment.CurrentDirectory, "AutoItX3.dll")); var createdDirectly = NRegFreeCom.ActivationContext.CreateInstanceDirectly(module, clsid) as IAutoItX3; createdDirectly.Run("Notepad");

Vía manifiestos

AutoItX3.dll.manifest:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity type="win32" name="AutoItX3.dll" version="3.3.8.1" />
<file name = "AutoItX3.dll">
<comClass
clsid="{1A671297-FA74-4422-80FA-6C5D8CE4DE04}"
threadingModel = "Free" />
<typelib tlbid="{F8937E53-D444-4E71-9725-35B64210CC3B}"
version="1.0" helpdir=""/>
</file>
<comInterfaceExternalProxyStub
name="IAutoItX3"
iid="{3D54C6B8-D283-40E0-8FAB-C97F05947EE8}"
proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
baseInterface="{00000000-0000-0000-C000-000000000046}"
tlbid = "{F8937E53-D444-4E71-9275-35B64210CC3B}" />
</assembly>

AutoItX3Dependency.manifest:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dependency>
<dependentAssembly asmv2:codebase="AutoItX3.dll.manifest">
<assemblyIdentity name="AutoItX3.dll" version="3.3.8.1" type="win32" />
</dependentAssembly>
</dependency>
</asmv1:assembly>

Program.cs Principal:

var createdViaManifest = NRegFreeCom.ActivationContext.CreateInstanceWithManifest(new Guid("{1A671297-FA74-4422-80FA-6C5D8CE4DE04}"), "AutoItX3Dependency.manifest"); var autoItWithManifest = (IAutoItX3)createdViaManifest; autoItWithManifest.Run("Notepad");

El código usa la herramienta para registrarse gratis en C # ( https://github.com/asd-and-Rizzo/NRegFreeCom ). Código copiado de ( https://github.com/asd-and-Rizzo/pyautoit )