Beiträge von alpines
-
-
gibt es eigentlich auch eine UDF für open office? Da könnte man das "Theater" mit instaliertem Excel sauber umgehen - denn OO gibt es ja auch portable.
Sieh mal hier nach: https://www.autoitscript.com/forum/topic/15…olibo-calc-udf/
-
Wenn du jemanden markieren möchtest (so, dass er eine Benachrichtigung bekommt) dann verwende schreib vor seinen Namen ein @ (oder zitier ihn).
Beispiel: DaveTDancer . Du musst nicht mal den vollen Namen schreiben da WBB eine Intellisense mit verfügbaren Namen anzeigt.
-
Die Excel-UDF benötigt ein installiertes Excel.
Das ist mir schon klar, ich war mir aber nicht sicher ob er nur kein sichtbares Excel-Fenster wollte oder generell kein Excel.
Ansonsten kann man die UDF dafür verwenden, die liegt bei jeder AutoIt Installtion nämlich mit dabei, PowerShell nicht.
-
gibt es ein Script oder eine Möglichkeit eine xls-Datei in eine csv-Datei umzuwandeln ohne Excel zu benutzen?
Auch nicht mittels der ExcelUDF?
-
For $i = 0 To $aRechner[0]
Wenn in [0] die Anzahl steht dann meinst du doch sicherlich For $i = 1 To $aRechner[0].
-
Wenn du OnEventMode verwendest dann brauchst du da für das Makro @GUI_CtrlId.
-
obwohl ich den Code noch nicht ganz verstehe
Ich erklärs dir gerne wenn du mir sagst was du daran nicht verstehst.
-
Da das ganze wirklich ein bisschen schwierig zu erklären ist hier mal ein kleines Beispiel.
/unsafe muss in den Projekteinstellungen gesetzt sein.
C#
Alles anzeigen[DllExport("doSomething", CallingConvention = CallingConvention.StdCall)] public static unsafe int* doSomething(int* count) { fixed(int* arrayToReturn = new int[2]) { arrayToReturn[0] = 1337; arrayToReturn[1] = 42; *count = 2; return arrayToReturn; } }Und so kriegst du das ganze in AutoIt auch wieder raus:
AutoIt$tCount = DllStructCreate("int") $pCount = DllStructGetPtr($tCount) $aRet = DllCall("intArrayReturn.dll", "ptr", "doSomething", "ptr", $pCount) ConsoleWrite("Count = " & DllStructGetData($tCount, 1) & @CRLF) $tReturn = DllStructCreate("int[" & DllStructGetData($tCount, 1) & "]", $aRet[0]) ConsoleWrite(DllStructGetData($tReturn, 1, 1) & @CRLF) ConsoleWrite(DllStructGetData($tReturn, 1, 2) & @CRLF)$tCount ist dazu da um die Größe des Arrays zu erfassen und der Return des DllCalls beinhaltet den Pointer zu dem Int-Array.
Dann erzeugt man ein Int-Array-Struct mit der passenden Größe mittels $tCount und dem Pointer $aRet[0] und zack du hast dein Array im Struct.

@Churanos die Antwort kommt vielleicht ein wenig spät aber du kannst in der Dll Klassen intern static deklarieren und sie so an deine Markdown-Funktionen weitergeben.
Dann schreibst du noch ein paar Wrapper-Funktionen um diese statischen Instanzen zu füllen und fertig.
Behalt einfach alles was mit markdowninternen Klassen zu tun hat in der Dll und empfange und sende an AutoIt nur die Ergebnisse bzw. Eingaben.
-
Arrays als solche werden von AutoIt nicht unterstützt, aber du kannst stattdessen einen Pointer zurückgeben.
Returne in deiner Methode ein "int*" und dann erzeugst du aus dem Pointer ein DllStruct mit einem int[]-Eintrag.
Das ist in VS C# leichter gesagt als getan, da Pointer-Arithmetik (im C-Stil) dort als unsafe gehandelt wird.
Du musst diese Option erst im Compiler erlauben (Projekteigenschaften > Build > "Unsicheren Code zulassen") und dann deine Methode als unsafe deklarieren.
Und als ob das nicht reicht musst du auch noch den fixed Operator verwenden um Arrays als Pointer zu verarbeiten in C#.
Das ist alles so kompliziert, da C# eigentlich nicht dafür ausgelegt ist mit Pointern zu arbeiten, sondern diese mehr oder weniger mit Objekten dargestellt sind.
In C/C++ kann man keine Arrays von Funktionen zurückgeben, dort wird das ganze ebenfalls mit Pointern (1D) oder Pointer auf Pointer (2D) gelöst.
-
Du kannst das Objekt auch static setzen, das ist absolut kein Problem.
Erzeug einfach z.B. ein static string path = null; in der Klassedefinition und greife von deinen Methoden darauf zu.
Sofern du DllOpen verwendest, bleiben die Zuordnungen gültig. Das bedeutet bspw., wenn du in der setPath Methode path = "bla" setzt,
dann wird in deiner getPath Methode auch "bla" zurückgegeben werden.
Du kannst aber auch Structs übergeben und füllen, die erzeugst du in AutoIt und übergibst dann den Pointer.
Mal so gefragt: Was genau willst du denn speichern?
-
Du solltest vielleicht in Betracht ziehen noch weiter runterzugehen, damit deine DLL mit PCs funktioniert die noch nicht das aktuellste netFX haben.
Meistens benötigt man auch die aktualisierten Funktionen nicht, ich habe für mein aktuelles Projekt z.B. mit der 3.5 exportiert.
-
System.ArgumentException: Der angeforderte Wert "Version46" konnte nicht gefunden werden.
Version46 scheint glaube ich dein Target-Framework von netFX zu sein, probier mal 3.5, 4.0 oder 4.5 aus, damit sollte es klappen.
-
Mal so nebenbei gefragt, was willst du denn im IE automatisieren?
-
Lieber zu spät als nie, herzlich Willkommen im Forum

-
Na klar, auf dem Profil des jeweiligen Users (hier im Thread mit der Maus über dem Namen schweben) kannst du auf den Briefumschlag klicken "Konversation starten", das ist dann eine persönliche Nachricht.
Oder du gehst auf die Profilseite und klickst das Icon Benutzer an, dann öffnet sich ein Menu in dem du das auswählen kannst.
Oscar move das doch bitte mal nach Talk / OT
Danke! -
Bezüglich Datenbanken - sollte ich mich auf sowas einlassen (hab da tatsächlich noch etwas Angst vor), muss dann irgendwas zusätzlich installliert werden oder bringt das AutoIt mit den entsprechenden UDF's alles mit? Wie gesagt Datenbanken sind mega Neuland für mich.
Ein Datenbankserver in der Firma ist notwendig, wenn da ein Rechner 24/7 läuft kannst du beispielsweise einen MySQL Server installieren und den einfach drauf laufen lassen.
Da ihr vermutlich den Server nicht mit tausend Anfragen die Sekunde vollbombadiert braucht ihr da keinen Extraserver mit vielen Rechenleistung dafür.
UDFs gibts: z.B. SQLite, MySQL und noch paar andere. Damit kannst du dich zum Server verbinden und dann Anfragen stellen.
Für MySQL (und ich schätze mal auch für die anderen) ist ein Verbindungstreiber erforderlich (ODBC bei SQL), SQLite hat alles in Form einer kleinen DLL schon dabei (und bereits in AutoIt integriert). Allerdings weiß ich nicht ob SQLite nur lokale Datenbanken unterstützt oder auch online.
Wenn man einmal die Nutzerkonten eingerichtet hat sind die Abfragen selbst eigentlich ein Kinderspiel, irgendwann hat man den Dreh raus.
-
Wie soll die Abfrage der Termin stattfinden? Bisher habe ich noch nie mit Datenbanken gearbeitet, sondern immer nur mit Ini-Dateien oder Testdateien um Inhalte zu speichern.
Das ist geschmackssache und kommt sicherlich auch teilweise darauf an ob du das ganze lokal oder für mehrere Mitarbeiter nutzen möchtest.
Wenn mehrere Mitarbeiter daran sitzen, dann wäre wohl eine Datenbank die beste Option damit du dort alle Touren auflisten kannst.
Ansonsten täte es auch eine Ini-Datei (oder eine Datei mit einem eigenen Format). Da gibts unzählbar viele Möglichkeiten.
Für die Scrollbare-Ansicht kannst du GUIScrollbars.au3 verwenden und ein Fenster drumherumlegen um nur einen Teil scrollbar zu machen.
Aber bevor du mit der Arbeit anfängst, gibt es nicht vielleicht schon Programme die sogar kostenlos sind?
Auch wenn es ein paar Features mehr mitbringt könntest du dir die Arbeit ja ersparen. Man muss das Rad ja nicht neu erfinden.
-
Funktioniert damit nicht.
Etwas präziser?
-
Naja, mal vorausgesetzt das wäre wirklich so "einfach", dann hätte es diesen und die hunderte anderen Threads mit gesuchten Lösungen zum "NOMAD"-Problem nicht gegeben.
Nur weil du jemandem ein Werkzeug in die Hand gibst, mit dem er ein Problem einfacher lösen kann, heißt es nicht, dass sie mit dem Werkzeug umgehen können.
Da sich Scriptkiddies eben mit der Scriptsprache kaum beschäftigen sondern alles copy&pasten, werden dennoch dutzende Threads erstellt.
Warum liest er die Adresse nicht? Warum funktioniert mein Script nicht? Was ist ein Syntaxerror?
Ich denke du weißt was ich meine
