1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. alpines

Beiträge von alpines

  • Datei temporär erstellen?

    • alpines
    • 8. Januar 2014 um 22:03

    Lad sie einfach in @TempDir herunter und lösche sie mit FileDelete, FileDelete verschiebt sie normalerweise nicht in den Papierkorb.

  • Seconds to String

    • alpines
    • 8. Januar 2014 um 21:18

    Du könntest einen Mode einbauen der einen Parameter checkt ob drinne de oder en enthalten ist und dann Tag / Day auszugeben.

  • Simples Skript benötigt

    • alpines
    • 8. Januar 2014 um 19:44

    Das ist doch das falsche Forum, hier bekommst du Hilfe für deine Snippets die nicht funktionieren.
    Wenn du fertige Scripte haben willst dann poste in Zukunft bitte hier: https://autoit.de/index.php?page=Board&boardID=51

  • C# / VB .NET DLLs erstellen und in AutoIt verwenden

    • alpines
    • 8. Januar 2014 um 19:11

    Danke für das Feedback, werde den Thread umbenennen.

  • C# / VB .NET DLLs erstellen und in AutoIt verwenden

    • alpines
    • 8. Januar 2014 um 16:15

    Einen guten Mittag euch allen da draußen!

    Mir ist in letzter Zeit (oder generell) auf gefallen das einige versuchen .NET DLLs in AutoIt zu verwenden aber es nicht schaffen. Damit keine weiteren Threads oder Fragen darüber gestellt werden wie man es schafft eine .NET DLL in AutoIt zu verwenden und nicht C++ oder ähnliches (Delphi exportiert ebenfalls vernünftig) zu lernen habe ich für euch dieses Tutorial geschrieben.
    Ich hoffe ich kann euch damit helfen .NET DLLs in AutoIt einzubinden.

    In diesem Tutorial werde ich hauptsächlich auf C# zurückgreifen und nicht auf Visual Basic, da mir C# lieber ist. Fangen wir an!
    ___________________________________________________________________________

    Zunächst brauchen wir Microsofts Visual Studio, das gibts in der Express Version 30 Tage lang gratis und danach kann man sich kostenfrei registrieren.
    Den Link dazu findet ihr hier: Visual Studio Download
    Einfach zu Visual Studio Express scrollen, Visual Studio Express 2013 für Windows Desktop anklicken und herunterladen.
    Das Tutorial sollte eigentlich auch mit anderen Versionen von Visual Studio kompatibel sein.

    Nachdem ihr VS installiert habt öffnet ihr es und es taucht der Startbildschirm auf.
    [Blockierte Grafik: http://i.imgur.com/0K8ZdDI.png]

    Wir gehen auf Neues Projekt und wählen Klassenbibliothek aus.
    [Blockierte Grafik: http://i.imgur.com/DnCJDPN.png]

    Ich habe das Projekt jetzt checkPrime genannt, da ich eine Funktion dort exportieren möchte Primzahlen errechnet. Weiteres später.
    Nach einer recht kurzen Wartezeit öffnet sich anschließend unser C# Projekt.
    [Blockierte Grafik: http://i.imgur.com/KEZfNk8.png]

    Ihr könnt auch eine einfache Addition schreiben um es zu testen, achtet aber auf die Datentypen!

    Die Funktion primeCheck (warum ich mehr oder weniger dieses komplizierte Beispiel genommen habt sehr ihr später!)
    [Blockierte Grafik: http://i.imgur.com/Ssfa0z5.png]

    Zuerst sollte man seinen NuGet-Packet-Manager updaten.
    Das geschiet in dem ihr hier klickt und von dort auf Updates > Produktupdates. Ich würde es gerne zeigen, allerdings ist das Update bei mir nicht mehr sichtbar, weil ich es schon aktuell hab.
    Sofern das Update da nicht zu sehen ist spielt das keine Rolle und ihr könnt mit dem nächsten Schritt weitermachen.
    [Blockierte Grafik: http://i.imgur.com/HFNQxAm.png]

    Nachdem ihr euren Paket-Manager geupdatet habt, oder auch nicht, fahren wir mit folgendem Schritt vor. Dem installieren der benötigten Pakete.
    Wo und wie man den PM findet, sehr ihr hier.
    [Blockierte Grafik: http://i.imgur.com/rAMAuXv.png]

    Und schon taucht ein neues Fenster auf, ich habs mir nach links gezogen, weil es mir da besser gefiel. Falls oben nicht nuget.org steht (in der ComboBox) stellt es um, das dort nuget.org steht.
    [Blockierte Grafik: http://i.imgur.com/eh4PjC2.png]

    Wir tippen dort Install-Package UnmanagedExports ein und drücken die Enter-Taste.
    [Blockierte Grafik: http://i.imgur.com/96Md8CM.png]

    Wenn alles gut läuft sollte es wie dort oben gezeigt aussehen.

    So, die DLL Funktionen für dieses Projekt wurden installiert, nun müssen wir eine kleine Einstellung übernehmen.
    Statt Any CPU müssen wir das auf x86 setzen, aber x86 ist oben nicht vertreten, wie man das hinzufügt sehr ihr hier. Desweiteren von Debug auf Release.
    [Blockierte Grafik: http://i.imgur.com/PSryPsC.png]

    Danach erscheint der Konfigurations-Manager.
    [Blockierte Grafik: http://i.imgur.com/oIgNO7w.png]

    Wir wählen in Aktive Projektmappenplattform: Neu aus und schon erscheint ein neues Fenster.
    [Blockierte Grafik: http://i.imgur.com/jcaVtqr.png]

    Wir stellen die Einstellungen auf folgendes um damit die DLL kompatibel ist.
    [Blockierte Grafik: http://i.imgur.com/KZQAbfL.png]

    Anschließend klicken wir auf OK und Schließen das Fenster. Sofern ihr alles bisher richtig gemacht habt sollte oben wo Any CPU stand jetzt x86 stehen und statt Debug Release.

    So, soweit so gut. Aber eins haben wir noch vergessen, nämlich die Funktion zu exportieren dies geschieht indem wir erstmal

    Code
    using System.Runtime.InteropServices;
    using RGiesecke.DllExport;

    oben hinzufügen.

    So, jetzt haben wir alles was wir zum Exportieren brauchen, jetzt schreiben wir noch eine Zeile zum Exportieren selbst hin.
    Diese Zeile lautet in meinem Fall

    Code
    [DllExport("checkPrime", CallingConvention = CallingConvention.StdCall)]


    DllExport sagt sicherlich schon was es ist, "checkPrime" ist die Funktion und den Rest dafür das es ein StdCall ist (StdCall = Standard-Funktionsaufruf)

    Mittlerweile sieht mein Code so aus.
    [Blockierte Grafik: http://i.imgur.com/IopYRq5.png]

    Jetzt ist eigentlich alles fertig und nichts steht mehr im Weg unsere DLL endlich zu kompilieren, also können wir entweder F7 drücken oder F5
    Der Unterschied zwischen F7 und F5 ist der, dass F7 das Projekt kompiliert und F5 kompiliert sowie debugged.
    F5 wird zwar das Projekt kompilieren aber spuckt unnötigerweise eine Fehlermeldung aus die wir mit F7 vermeiden können.

    Also drücken wir F7!
    [Blockierte Grafik: http://i.imgur.com/7Lt9Kt7.png]

    Damit sollte in Dokumente > Visual Studio 2013 > Project > checkPrime > checkPrime > bin > x86 > Release die checkPrime.dll liegen.
    [Blockierte Grafik: http://i.imgur.com/RAdW6WE.png]

    Ich hab einen kleinen Test vorbereitet, das war auch eigentlich der Grund warum ich Primzahlen für den Test genommen hab.
    Denn ich möchte euch den Geschwindigkeitsunterschied zwischen AutoIt und C# zeigen.

    So sieht mein Testordner aus.
    [Blockierte Grafik: http://i.imgur.com/Vmlstwm.png]

    Das Testscript sieht so aus.

    AutoIt
    ; Speedtest.au3
    
    $hTimer = TimerInit()
    
    Local $a = 2, $b = 2, $c = 0
    
    Do
        $b = 2
        While $a >= $b
            If mod($a, $b) = 0 Then $c += 1
            $b += 1
        WEnd
    
        If $c > 2 Then $c = 0 ;keine Primzahl
        If $c = 1 Then $c = 0 ;Primzahl
    
        $a += 1
    Until TimerDiff($hTimer) >= 5000
    
    ConsoleWrite("Speedtest AutoIt 5 Sec Prime: " & $a & @CRLF)
    
    $hTimer = TimerInit()
    
    Local $a = 2
    
    Do
        DllCall("checkPrime.dll", "bool", "checkPrime", "int", $a)
        $a+=1
    Until TimerDiff($hTimer) >= 5000
    
    ConsoleWrite("Speedtest C# 5 Sec Prime: " & $a & @CRLF)
    Alles anzeigen

    So, kommen wir zu dem Aspekt den ich schon die ganze Zeit erwähnen möchte, die Geschwindigkeit.
    Da bei C# kein Interpreter den AutoIt Code noch in C++ Code interpretieren muss, verliert man kaum an Geschwindigkeit.
    Das ist sehr deutlich durch die Speedtest.au3 zu erkennen, trotz dem zusätzlichen DllCall ist die C# DLL schneller, hier die Ergebnisse.

    Code
    Speedtest AutoIt 5 Sec Prime: 2697
    Speedtest C# 5 Sec Prime: 50696

    Man sollte noch anmerken, das bei Primzahlen die Anzahl nicht steigt wie man einfachen Rechnungen, da hier die Zahl selbst und alle Zahlen dadrunter bis 2 durchgerechnet werden um einen Teiler zu finden.
    Man kriegt deutlich eindeutigere Resultate wenn man eine DLL mit Addition exportiert aber das könnt ihr ja versuchen ;)

    Wichtig! Wenn die Funktion string returned oder als Parameter string hat dann düft ihr sie in AutoIt nicht mit string als Typ definieren sondern str!
    Wichtig! Setzt den Accessor auf Public, da einige Sprachen (vb) Probleme haben die Funktion zu importen!

    Im Anhang ist der Testordner + Projektmappe der DLL als .zip!

    ___________________________________________________________________________

    Zum Abschluss möchte ich noch sagen, das es mir Spaß gemacht hat das Tutorial zu verfassen, ich hoffe ich konnte euch damit helfen .NET DLLs erfolgreich in AutoIt zu verwenden.
    Lob, Kritik und jegliches Feedback ist jederzeit gerne gesehen! :)

    Dateien

    Script DLL und Projektmappe.zip 542,46 kB – 1.165 Downloads
  • If Abfrage

    • alpines
    • 8. Januar 2014 um 12:15

    Kannst dir auch überlegen Switch oder Select zu nutzen, der Übersichtlichkeit halber

    [autoit]

    $iCompany = 2230

    [/autoit][autoit][/autoit][autoit]

    Switch $iCompany
    Case 2221, 2222, 2223, 2224, 2225
    MsgBox(64, "Empfänger", "A")
    Case 2226, 2227, 2228, 2229
    MsgBox(64, "Empfänger", "B")
    Case 2230
    MsgBox(64, "Empfänger", "C")
    EndSwitch

    [/autoit][autoit][/autoit][autoit]

    Select
    Case $iCompany < 2226
    MsgBox(64, "Empfänger", "A")
    Case $iCompany > 2225 and $iCompany < 2230
    MsgBox(64, "Empfänger", "B")
    Case $iCompany = 2230
    MsgBox(64, "Empfänger", "C")
    EndSelect

    [/autoit]
  • If Abfrage

    • alpines
    • 8. Januar 2014 um 11:41

    Die Abfrage is falsch da Zahlen immer true sind.
    Statt If $sVar = 1 or 3
    muss da If $sVar = 1 or $sVar = 3 hin.
    Alternativ tuts ein Switch auch.

  • Problem beim Includen

    • alpines
    • 7. Januar 2014 um 22:49

    Es reicht wenn du auf die Seite egal in welcher Methode zugreifst, Browser sind davon nicht betroffen.
    Nicht du bezeichnest was "per se störend" ist, sondern die von eBay.

  • Problem beim Includen

    • alpines
    • 7. Januar 2014 um 22:31

    Dein "Tool" verstößt gegen die eBay AGBs also sollte man, egal in welcher Hinsicht, dir nicht helfen.

  • Problem beim Includen

    • alpines
    • 7. Januar 2014 um 22:23

    Warum nennst du dann das Thema wenn es nur ums includen geht? Nicht ein bisschen redundant?

  • Problem beim Includen

    • alpines
    • 7. Januar 2014 um 22:18

    Es ist egal wie viel ms du als Intervall nimmst, solange du keine schriftliche Erlaubnis davon vorlegen kannst das du es darfst, hast du hier mit eBay nichts verloren.

  • Problem beim Includen

    • alpines
    • 7. Januar 2014 um 21:55

    Bitte nicht noch einmal:
    https://autoit.de/index.php?page…&amp;post348937

  • Problem beim Includen

    • alpines
    • 7. Januar 2014 um 21:38

    Es gab schon mal eine Diskussion über das Requesten von Htmls auf eBay und es ist nicht erlaubt.

  • überprüfen welcher Prozess auf Programm zugreift

    • alpines
    • 7. Januar 2014 um 19:43

    http://msdn.microsoft.com/en-us/library/…9(v=vs.85).aspx

    Das verwenden eigentlich HackShields bzw. Sicherheitsprogramme von Online-Spielen die das Injecten / hacken erschweren.

  • Ort/Pfad für Datei auswählen

    • alpines
    • 7. Januar 2014 um 18:27
    [autoit]

    FileSelectFolder()

    [/autoit]

    ?

  • überprüfen welcher Prozess auf Programm zugreift

    • alpines
    • 7. Januar 2014 um 18:26

    Wenn du wissen willst wer grade auf deinen Prozess zugreift dann schau mal auf msdn nach

    K32EnumProcesses

  • ..und noch einer... :)

    • alpines
    • 6. Januar 2014 um 22:27

    5.5 Jahre später und dann eine Uservorstellung, so muss das sein :D
    Willkommen im Forum!

  • Übereinstimmung checken mit Space ohne das Space in den Input kommt...

    • alpines
    • 5. Januar 2014 um 21:26

    Wo ist das Problem wenn ein Space drinne vorkommt?
    Trigger einfach das was du machen möchtest wenn das gedrückt wurde und

    [autoit]

    $sString = StringReplace($sString, " ")

    [/autoit]

    nehm es weg.

  • Neu dabei

    • alpines
    • 5. Januar 2014 um 19:27

    Wenn du eigene GUIs entwerfen möchtest dann solltest du dir mal GDI+ oder SkinCrafter anschauen.

    //und achja, willkommen im Forum! :D

  • Text nach einem Wort durchsuchen und entfernen

    • alpines
    • 5. Januar 2014 um 19:26

    " nicht" ja, aber was ist wenn ein Satz so ist? Lala.Nicht?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™