Beiträge von K.K.

    Die erste Zeile ist ein Array, in dem die Monatsnamen enthalten sind. Mit $a_months[x] kann man das Element aus dem Array mit dem Index x erhalten.
    Mit @Mon erhält man dann für Januar z.B. 1 (oder für Febrauar 2, also der wievielte Monat es im Kalenderjahr ist). Allerdings sind Arrays nullbasiert. Das heißt, dass das erste Element den Index 0 hat. (somit der Index aller Monate im Array um 1 kleiner ist als ihr @Mon Wert)


    Würde man $a_months[@Mon] nehmen, würde man also immer einen Monat später zurückbekommen. Jetzt im Februar also März (und bei Dezember einen Fehler, da @Mon im Dezember 12 ist, das Array aber nur die Elemente 0...11 hat). Also einfach @Mon - 1 nehmen, dann erhält man das richtige Element und gleicht sozusagen aus, dass das Array nullbasiert ist. (Bsp Februar: @Mon = 2-> @Mon - 1 = 1 -> $a_months[1] = Februar)


    Sonst ist die MsgBox die, die Du auch im ersten Post hattest, nur dass ich die festen Monatsnamen durch das Array ersetzt habe.

    Hi,
    ich würde es so machen:


    AutoIt
    Dim $a_months[12] = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]
    
    
    MsgBox(0, "Datum", "Heute ist der" & Chr(32) & @MDAY & "." & Chr(32) & $a_months[@Mon - 1] & Chr(32) & @YEAR)

    Ja, das stimmt, das sollte man importieren, um nicht so viel zu tippen.


    Aber solange die Funktion in der DLL nicht als Public (bzw. das Äquivalent in C# dazu) deklariert ist, kann ich auf die Funktion nicht zugreifen, auch nicht mit Import. //EDIT: Also mit VB nicht, mit AutoIt komischerweise schon!



    Aber ich denke, dass es hier eigentlich um AutoIt gehen sollte, deswegen belassen wir das Thema jetzt mal dabei, oder?
    Und - wie ich schon erwähnt hatte - für AutoIt finde ich dein Tutorial sehr nützlich. Bis hierhin wusste ich noch gar nicht, dass es eine Möglichkeit gibt, VB-/C#-DLLs in AutoIt zu benutzen.

    Hallo alpines,


    Den VB-Code hatte ich auch schon hinbekommen, ich meinte eher, dass ich mit einem VB-Programm nicht auf die Funktion in deiner C#-DLL zugreifen kann! (siehe Bild 1; Verweis ist gesetzt, was eig. ausreicht, wie bei meiner VB-Übersetzung siehe Bild 2)



    Noch eine kleine Anmerkung zu deinem VB-Code:
    Markiert dir die IDE da gar nichts? Wenn ich nichts übersehen habe, gibt deine Funktion gar keinen Wert zurück, welcher hier checkPrime wäre.
    Dass man zum Exportieren einer Funktion in einer DLL das <DLLExport...> braucht wäre mir auch neu... Oder braucht man das nur, wenn man die DLL für AutoIt kompatibel machen möchte?


    Hier noch mein VB-Code:


    Der entscheidende Unterschied ist, dass ich meine Funktion als Public deklariert habe, was entscheidend ist, damit anderes außer die gleiche Klasse in der die Funktion ist (hier die Klasse checkPrimeVB in der DLL), darauf Zugriff haben.


    Ich habe meine DLL mal angehängt, dann kannst du das ja mal ausprobieren. Ist die .zip-Datei. DLLs kann man nicht anhängen.


    P.S: Nenne am besten deine Klasse in der DLL um. Noch muss man die über Class1 ansprechen, was eher unschön ist.

    Hallo alpines,


    meiner Meinung nach ist Dir das Tutorial durchaus gut gelungen. Der Test unter AutoIt funktionierte bei mir gut.
    Nur unter VB.NET konnte ich nicht auf die Funktion in deiner DLL zugreifen. Möglicherweise hast Du die Funktion falsch deklariert (Private statt Public?)


    Insgesamt jedoch finde ich Dein Tutorial sehr nützlich, da ich in letzter Zeit häufiger mit VB.NET arbeite und es daher sehr praktisch wäre, eine VB-DLL in AutoIt nutzen zu können.


    LG K.K.

    Mit dem Koda Form Designer habe ich folgenden Code generiert. Das sollte das sein, was du wolltest, glaube ich:



    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 438, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_MAXIMIZE,$WS_TABSTOP))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


    LG K.K.

    Hi,


    nur so als Idee:


    Musst du vielleicht beim ersten Parameter die Datei selbst mitangeben?
    Bei dir wäre das dann

    $oZip = @ScriptDir & "\tmp\minecraft.zip"
    _Zip_AddFile($oZip & "\mob\char.png", @ScriptDir & "\tmp\char.png")


    Ich habe es nicht ausprobiert, weiß also nicht ob das das Problem löst!


    LG K.K.

    Hallo UEZ,


    vielen Dank ür die Antwort.


    Bei Koda habe ich nun die Styles "WS_HSCROLL" und "WS_VSCROLL" gefunden.

    $Pic1 = GUICtrlCreatePic("", 48, 24, 65, 137, BitOR($GUI_SS_DEFAULT_PIC,$WS_HSCROLL,$WS_VSCROLL))


    Weiß jemand ob und wie das damit funktioniert?
    Zudem möchte ich, wenn ich ein Bild lade, dass dieses in Originalgröße angezeigt wird, aber die Größe des Pic-Steuerlements nicht verändert wird. Wenn man bei Koda bei Pic1 unter "Stretch" "sRealSize" auswählt, wird die Größe der Picturebox auf die Originalgröße des Bildes verändert!Gibt es dort eine Lösung?


    LG K.K.

    Hallo,


    ich möchte in ein Pic-Steuerlement ($Pic1 = GUICtrlCreatePic...) ein Bild laden lassen. Wenn dieses jedoch zu groß ist, sollen Scrollbars erscheinen, um zu scrollen.


    Wie kann ich dieses Problem lösen?


    Ich hoffe ihr könnt mir helfen!


    LG K.K.

    Hallo,


    in der Hilfe zu
    SplashTextOn
    habe ich folgendes gefunden:


    "Nur ein SplashImage/Text Fenster ist zur selben Zeit erlaubt. Sollen
    verschiedene Image/Text Fenster durchgegangen werden, ist
    SplashImageOn/SplashTextOn wiederholt mit den neuen Informationen
    aufzurufen."


    Daher denke ich kannst du nicht 2 gleichzeitig anzeigen lassen.


    LG K.K.

    Hallo,


    ich habe mir die BASS UDF mal angesehen, aber ich blicke nicht wirklich durch die vielen Funktionen durch.


    Meine Frage wäre, ob man mit der BASS UDF überhaupt CDs rippen kann und wenn ja mit welchen Funktionen?


    Ich hoffe ihr könnt mir helfen!
    Vielen Dank schonmal im vorraus!


    LG K.K.

    Hallo,


    mich würde es interessieren, ob es in AutoIt eine Möglichkeit gibt MP3s zu schneiden, z.B. eine UDF o.ä.


    Kennt jemand eine Möglichkeit?


    LG K.K.

    Hallo,


    wenn du Dateien auf eine CD/DVD brennen willst, kannst du das mit der IMAPI2-UDF machen. Damit kannst du dann auch alle Laufwerke auslesen lassen:



    #include <IMAPI2.au3>


    $ID = _IMAPI2_DrivesGetID()


    If $ID[0] = 0 Then
    MsgBox(48, "Fehler", "Kein Laufwerk gefunden!")
    ElseIf $ID[0] = 1 Then
    GuiCtrlSetData($Combo1, _IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[1])) & ":")
    ElseIf $ID[0] = 2 Then
    GuiCtrlSetData($Combo1, _IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[1])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[2])) & ":")
    ElseIf $ID[0] = 3 Then
    GuiCtrlSetData($Combo1, _IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[1])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[2])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[3])) & ":")
    ElseIf $ID[0] = 4 Then
    GuiCtrlSetData($Combo1, _IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[1])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[2])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[3])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[4])) & ":")
    ElseIf $ID[0] = 5 Then
    GuiCtrlSetData($Combo1, _IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[1])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[2])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[3])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[4])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[5])) & ":")
    ElseIf $ID[0] = 6 Then
    GuiCtrlSetData($Combo1, _IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[1])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[2])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[3])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[4])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[5])) & ":"&"|"&_IMAPI2_DriveGetLetter(_IMAPI2_DriveGetObj($ID[6])) & ":")
    EndIf


    Erklärung:
    In $ID[0] ist die Anzahl der Laufwerke gespeichert.
    _IMAPI2_DriveGetLetter ermittelt den Laufwerksbuchstaben ("E:\", "D:\",...), dafür benötigt man dann noch _IMAPI2_DriveGetObj
    Alle Buchstaben mit einem ":" (,da _IMAPI2_DriveGetLetter nur z.B. "E" zurückgibt) werden in eine Combobox geschrieben ($Combo1)



    Die IMAPI2.au3 ist im Anhang!


    Ich hoffe ich konnte helfen!


    LG K.K.