2016-12-28 1 views
2

Ich verwende AutoIt DLLs in meinen C# Anwendungsdaten von anderen aktiven Fenstern des Programms zu erhalten. Auf meinem Computer, wo ich diese Anwendung kompilieren, funktioniert es in Ordnung, aber wenn ich es auf anderen Computern ausführen versucht habe ich Ausnahme:C# .NET-Anwendung unter Verwendung von AutoIt.dll Ausgabe

System.Runtime.InteropServices.COMException (0x80040154): Cash-COM-Klasse ab Werk Komponente mit CLSID {1A671297-FA74-4422-80FA-6C5D8CE4DE04} konnte aufgrund der folgenden Fehler: 80040154 unregistrierte Klasse. (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

in System.RuntimeTypeHandle.CreateInstance (Runtime Typ, Boolean publicOnly, NOCHECK Boolean, Boolean & canBeCached, RuntimeMethodHandleInternal & Ctor, Boolean & bNeedSecurityCheck)
in System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, skipCheckThis Boolean, Boolean FillCache, StackCrawlMark & stackMark)
in System.RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, skipCheckThis Boolean, Boolean FillCache, StackCrawlMark & stackMark) in System.Activator.CreateInstance (Typ Typ, Boolean nonPublic) in System.Activat or.CreateInstance (Typ Typ) in GetFromGam.GetFromGamForm.receiveData() in GetFromGam.GetFromGamForm.receiveButton_Click (Object sender, EventArgs e) in System.Windows.Forms.Control.OnClick (EventArgse) in System.Windows .Forms.Button.OnClick (EventArgse) in System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) in System.Windows.Forms.Control.WmMouseUp (Message & m, Mousetaste klickt Int32) im System .Windows.Forms.Control.WndProc (Message & m) in System.Windows.Forms.ButtonBase.WndProc (Message & m) in System.Windows.Forms.Button.WndProc (Message & m) in System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & m) in System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & m) in System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd , Int32 msg, IntPtr wParam, IntPtr lParam)

Was in dieser Situation falsch sein könnte?

Antwort

2

Der Computer, den Sie versuchen, Ihren Code auszuführen er die AutoIt COM-Schnittstelle nicht registriert hatte. Das Folgende ist aus der AutoItX Dokumentation:

Mit der COM-Schnittstelle Bevor Sie die COM-Schnittstelle verwenden können, ist AutoItX braucht es „registriert“ werden (Dies geschieht automatisch, Box, wenn Sie die Vollversion von AutoIt Schuh installieren Sie benötigen einen kleinen es manuell zu tun, wenn Sie AutoItX separat verwenden).

Es die COM-Schnittstelle registrieren:

  1. Öffnen Sie eine Eingabeaufforderung

  2. Verzeichnis wechseln (mit der CD) in das Verzeichnis enthält AutoItX3.dll Das

  3. Typ regsvr32.exe AutoItX3 .dll und drücken Sie die Eingabetaste

Der Name der AutoItX Steuerung ist AutoItX3.Control

+0

Eigentlich hat es nicht funktioniert – fafal

+0

Ich denke, Sie müssen wahrscheinlich die DLL von einer erhöhten Eingabeaufforderung registrieren, oder sehen Sie diese Frage: http://StackOverflow.com/Questions/14644258/get-Autoit-Reference-Working-in -c-sharp – Richard

+0

Okay. Könnten Sie mir einen kleinen Rat geben? Was kann ich tun, wenn ich meine Bewerbung teilen möchte? Dass ich keine Werte manuell ändern muss // – fafal

2

auf die richtige Antwort Hinzufügen - Visual Studio verfügt über ein integriertes Projekt ein Installationsprogramm für Ihre Anwendung zu erstellen. Dadurch können Sie die DLL in eine Installationsroutine einfügen. Dies macht Ihre Weitergabe zu einem angenehmen Erlebnis für den Empfänger.

Verwandte Themen