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. KloMeister

Beiträge von KloMeister

  • _stringbetween andersrum

    • KloMeister
    • 10. Februar 2015 um 11:50

    beruhigt euch erstmal.

    Ich hoffe ich mache mich nicht strafbar, mit meiner Hilfe :D


    Also mit dieser Methode, würdest du deine Ergebnisse rückwärts ausgeben... Wenn das hilft.

    Oder geht es generell darum, Rechenaufwand zu sparen und somit die vorne im Source stehenden Ergebnisse garnicht erst einzulesen?.

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

    #include <Array.au3>
    #include <String.au3>

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

    Example()

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

    Func Example()
    Local $aArray = _StringBetween("[18][20][3][5][500][60]", "[", "]")
    local $i
    for $i = UBound($aArray) - 1 to 0 step -1
    msgbox(0,"Gefundene Ergebniss nach der Reihe Rueckwaerts", $aArray[$i])
    next

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

    EndFunc

    [/autoit]
  • png in GUICtrlCreatePic

    • KloMeister
    • 5. Februar 2015 um 15:31

    So kann das unteranderem funktionieren:


    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>

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

    _Example()

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

    Func _Example()
    Local $sFile = FileOpenDialog("Select an image", "", "Images (*.bmp;*.png;*.jpg;*.gif;*.tif)")
    If @error Or Not FileExists($sFile) Then Return

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

    If Not _GDIPlus_Startup() Then
    MsgBox($MB_SYSTEMMODAL, "ERROR", "GDIPlus.dll v1.1 not available")
    Return
    EndIf
    Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
    Local $iWidth = 600
    Local $iHeight = _GDIPlus_ImageGetHeight($hImage) * 600 / _GDIPlus_ImageGetWidth($hImage)
    Local $hGui = GUICreate("GDI+ v1.1", $iWidth, $iHeight)
    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iWidth, $iHeight)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Example

    [/autoit]
  • DllCall | api.dll von gta-api.de | SA:MP

    • KloMeister
    • 31. Januar 2015 um 15:30

    Ich kann dir folgenden Beispiel-Code zum auslesen des Prozessspeichers anbieten, welcher so auch 100% funktioniert:

    [autoit]


    #include <WinAPI.au3>
    #include <MsgBoxConstants.au3>
    #include <Constants.au3>

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

    Global $Process="Winamp.exe";Ersetze mit deinem Prozess
    Global $Pointer = 0x004B5E54; Ersetze mit deiner Adresse
    $handle=_WinAPI_OpenProcess(BitOR($PROCESS_VM_OPERATION,$PROCESS_VM_READ),False,ProcessExists($Process))
    $s=DllStructCreate("int")
    Local $read
    _WinAPI_ReadProcessMemory($handle,$Pointer,DllStructGetPtr($s),DllStructGetSize($s),$read)
    MsgBox(0,"Gelesener Wert",DllStructGetData($s,1))

    [/autoit]

    Aktuell ließt die Funktion die aktuelle Trackzeit aus Winamp aus.

    Wenn du den Prozess in GTA und die Speicher-Adresse in einen deiner Werte änderst, kannst du das ganze auch mal mit GTA testen. Sollte dann immernoch 0 zurückkommen, ist vermutlich wirklich etwas verkehrt.

    Wenn Spiele gepatched werden, kann es durchaus zu einer Verschiebung bestimmte Speicheradressen kommen.


    Was natürlich auch noch sein kann: Manche Anwendungen benötigen besondere Rechte zum Auslesen des Prozesspeichers. Um daran zu kommen muss man sich erst die Rechte freischalten mit ein paar Api Befehlen...
    Dazu habe ich keinen AutoIt Code, in VB6 ging das so:

    Spoiler anzeigen
    Code
    Option Explicit
    Public Const TOKEN_ADJUST_PRIVILEGES = &H20
    Public Const TOKEN_QUERY = &H8
    Public Const ANYSIZE_ARRAY = 1
    Public Const PROCESS_ALL_ACCESS = &H1F0FFF
    Public Const SE_DEBUG_NAME = "SeDebugPrivilege"
    Public Const SE_PRIVILEGE_ENABLED = &H2
    
    
    Type LUID
    lowpart As Long
    highpart As Long
    End Type
    
    
    Type LUID_AND_ATTRIBUTES
    pLuid As LUID
    Attributes As Long
    End Type
    
    
    Private Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
    End Type
    Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
    Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, BufferLength As Any, PreviousState As Any, ReturnLength As Any) As Long
    Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    
    
    Function getProcessHandle(pid As Long) As Long
    EnableDebugPrivilege (True)
    getProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
    EnableDebugPrivilege (False)
    End Function
    
    
    Function EnableDebugPrivilege(bOnOff As Boolean) As Boolean
    Dim tp As TOKEN_PRIVILEGES
    Dim tpPrev As TOKEN_PRIVILEGES
    Dim lid As LUID
    Dim tpSize As Long
    Dim lRet As Long
    Dim hCurProc As Long
    Dim hToken As Long
    tpSize = Len(tp)
    
    hCurProc = GetCurrentProcess()
    lRet = OpenProcessToken(hCurProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)
    lRet = LookupPrivilegeValue("", SE_DEBUG_NAME, lid)
    tp.PrivilegeCount = 1
    tp.Privileges(0).pLuid = lid
    tp.Privileges(0).Attributes = 0
    lRet = AdjustTokenPrivileges(hToken, 0, tp, tpSize, tpPrev, tpSize)
    tpPrev.PrivilegeCount = 1
    tpPrev.Privileges(0).pLuid = lid
    If bOnOff = True Then
    tpPrev.Privileges(0).Attributes = tpPrev.Privileges(0).Attributes Or (SE_PRIVILEGE_ENABLED)
    Else
    tpPrev.Privileges(0).Attributes = tpPrev.Privileges(0).Attributes Xor _
                                             (SE_PRIVILEGE_ENABLED And tpPrev.Privileges(0).Attributes)
    End If
    lRet = AdjustTokenPrivileges(hToken, 0, tpPrev, tpSize, ByVal CLng(0), ByVal CLng(0))
       CloseHandle (hToken)
    EnableDebugPrivilege = CBool(lRet)
    End Function
    Alles anzeigen
  • Frage zum Script :

    • KloMeister
    • 31. Januar 2015 um 01:14

    Du brauchst:

    [autoit]

    GUICtrlSetPos

    [/autoit]

    und

    [autoit]

    ControlGetPos

    [/autoit]
  • Guictrlcreatepic ?

    • KloMeister
    • 31. Januar 2015 um 00:05

    Ich verstehe zwar nicht ganz, was genau du wolltest und was du gelöst hast... aber okay!

    Also man kann einem Steuerelement eine Variable zuweisen und diese auch auf bestimmte Ereignisse wie z.B. MouseClick, Mouseover, etc. überwachen. Ebenfalls kann man auch Parameter wie "Position, Größe, etc." nachträglich ändern.

  • DllCall | api.dll von gta-api.de | SA:MP

    • KloMeister
    • 30. Januar 2015 um 19:24

    Sorry hatte (Weil ich den Code aus nem AutoIt Beispiel hatte) da noch User32.dll drin stehen, habs in API.dll geändert (Hoffe das hast du gemerkt und schon vorher geändert)... Denn ansonsten ist der Absturz relativ klar

    Kannst ja auch mal versuchen statt "GetServerName" einen anderen API Befehl zu nehmen. Das Problem ist bei "GetServerName", handelt es sich ja vermutlich um einen String und nicht um einen Integer.


    Kann aber auch sein, das mein Aufbau des Befehls grundsätzlich nicht 100% korrekt ist, ich kenne mich mit dem Aufruf von DLL Funktionen nicht wirklich aus... Testen kann ich das ganze leider auch nicht, weil ich GTA dafür brauche.

  • DllCall | api.dll von gta-api.de | SA:MP

    • KloMeister
    • 30. Januar 2015 um 15:52

    Du sagst, ja das du eine vollständig neue .DLL eines anderen Entwicklers nutzt. Trotzdem verwendest du einen Begriff, der vermutlich für die alte .dll gillt:

    [autoit]

    $hModule = DllCall($dll, "UINT", "LoadLibrary", "str", "API.dll")

    [/autoit]

    Ich denke dieser Befehl ist eine Funktion der alten .dll und somit nicht kompatibel.


    Ich glaube du musst direkt mit DllCall deine Funktion ausführen...
    z.B.

    [autoit]

    Local $hDLL = DllOpen("API.dll")

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

    Local $aResult = DllCall($hDLL,"int:cdecl","GetServerName")
    msgbox (0,"",$aResult )
    DllClose($hDLL)

    [/autoit]

    Aber ich bin da auch nicht der Fachmann...

  • Dateipfad

    • KloMeister
    • 28. Januar 2015 um 11:28

    Es gibt garantiert einige Varianten, hier meine:


    [autoit]


    #include <StringConstants.au3>
    #include <MsgBoxConstants.au3>
    local $Pfade[6]

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

    $Pfade[0]= "\\asdf\jkl\dsl\tzu\567\Autodesk-Viewer-2013\"
    $Pfade[1]= "\\asdf\jkl\dsl\3343\5612127\234324\GoogleChrome\"
    $Pfade[2]= "\\asdf\jkl\dsl\tzu\567\Autodesk-Viewer-2013\Kartoffelecke"
    $Pfade[3]= "\\asdf\jkl\dsl\tzu\567\Nasenbaer\1\2\3\4\lol"
    $Pfade[4]= "\\asdf\jkl\dsl\tzu\567\Autodesk-Viewer-2013\Steinkohle\Elefant\Iltisratte"
    $Pfade[5]= "\\Egon\Gagamehl\Peter\"

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

    for $i = 0 to ubound($Pfade)
    local $PfadFormatiert = Stringsplit(stringreverse($Pfade[$i]),"\") ;String invertieren, da relevante Information am Ende
    if $PfadFormatiert[1] = "" then ;Checken ob ein \ am Anfang steht
    msgbox(0,"",stringreverse($PfadFormatiert[2]))
    else
    msgbox(0,"",stringreverse($PfadFormatiert[1]))
    endif
    Next

    [/autoit]
  • HTML-Class > Value verändern?

    • KloMeister
    • 26. Januar 2015 um 15:23

    Im Prinzip ist eine .html Datei einfach nur eine Text-Datei. Wenn du willst das deine Eingaben dauerhaft in die Datei eingebettet werden, musst du einfach dein .html File mit FileReadLine bis zum Ende einlesen (Array). Anschließend wenn du deinen Button drückst, musst du wissen wo welche Änderung geschieht und dann mit StringInstr, StringReplace, StringRegExpReplace etc. (Gibt mehrere Varianten) die Stelle finden und deine Änderungen einfügen. Anschließend das File mit FileWriteLine (Array), wieder abspeichern.

    Wenn das File auf einem Server gelagert ist, brauchst du ein Upload Script oder FTP Daten. Wenn es lokal ist, kannst du es direkt wie oben gesagt mit FileWrite / FileRead einlesen. Andernfalls müsstest du über _IEDocReadHTML den Quellcode holen, replacen, abspeichern, hochladen.

    Ich hoffe ich habe das so richtig verstanden mit dem "Ich will direkt das HTML-Dokument verändern, nicht nur das Objekt"

  • Prozess schleißen, wenn er öfter als einmal offen ist

    • KloMeister
    • 26. Januar 2015 um 14:57

    Oder

    [autoit]

    ProcessExists

    [/autoit]


    Ich weiß nicht genau welche Anwendung du wann startest, aber wenn sie öfter startet und du aktuell nicht weißt warum, mach eine simple Abfrage davor:

    [autoit]


    If ProcessExists("Deine Anwendung.exe") Then
    ;Nichts tun
    Else
    ShellExecute("Deine Anwendung.exe")
    EndIf

    [/autoit]


    bzw. If ProcessExists("Deine Anwendung.exe") = 0 then (Wenn du das Else sparen willst)

  • Einfache ImageSearch Lösung für x64 System

    • KloMeister
    • 26. Januar 2015 um 09:15

    Ich möchte euch nicht von eurem Vorhaben abbringen, aber vielleicht kommt man ja, wenn es sich um eine Internet-Instance handelt mit:

    [autoit]


    ...
    _IEAttach ($hWnd, "embedded")

    [/autoit]

    ...

    weiter und kann dann die Elemente direkt ansteuern?

  • Script blockt Doppel-Klick auf Desktop - Warum?

    • KloMeister
    • 22. Januar 2015 um 16:18

    Hallo, ich bin gerade dabei ein Programm zu basteln, allerdings wegen eines Problems, was ich vorher beheben muss noch nicht weit gekommen.

    Ich lese aktuell den Text des Steuerelementes unter dem Mauszeiger aus. Dabei möchte ich möglichst wenig Delay haben. Die Funktion habe ich soweit fertig:

    [autoit]


    #include <WinAPI.au3>
    #include <MsgBoxConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    #NoTrayIcon

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

    $Form1_1 = GUICreate("Elemente Auslesen V1.0", 410, 800, 191, 90)
    $Input1 = GUICtrlCreateInput("", 8, 56, 193, 21)
    $Input2 = GUICtrlCreateInput("", 208, 56, 193, 21)
    $Label1 = GUICtrlCreateLabel("Aktuelles Steuerelement", 8, 8, 398, 17)
    $Label2 = GUICtrlCreateLabel("Handle", 8, 32, 38, 17)
    $Label3 = GUICtrlCreateLabel("Text", 208, 32, 25, 17)

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

    ;HotKeySet("{ESC}", "Close")
    Global $tStruct = DllStructCreate($tagPOINT)
    GUISetState(@SW_SHOW)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")

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

    Opt("GUIOnEventMode", 1)

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

    While 1
    PositionCursor()
    sleep(100)
    WEnd

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

    Func Close()
    Exit
    EndFunc

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

    Func PositionCursor()
    Local $hWnd
    Position() ; Update the X and Y elements with the X and Y co-ordinates of the mouse.
    $hWnd = _WinAPI_WindowFromPoint($tStruct) ;
    _GUICtrlEdit_SetText($Input1, $hWnd)
    _GUICtrlEdit_SetText($Input2, ControlGetText ($hWnd,"",""))
    EndFunc

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

    Func Position()
    DllStructSetData($tStruct, "x", MouseGetPos(0))
    DllStructSetData($tStruct, "y", MouseGetPos(1))
    EndFunc

    [/autoit]

    Sobald ich die Sleep Pause in der Schleife, in der die Funktionen ausgeführt werden, relativ gering setze, werden Doppelklicks auf dem Desktop geblockt. Die Frage ist warum ist das so und was tue ich dagegen? Die Sleep-Dauer zu erhöhen ist nicht die Lösung, da es wohl möglich sein muss, im Interval von 100ms ein Steuerelement auslesen zu können.

    Danke für eure Hilfe.

  • !Mehrere! Datein per FTP-Downloaden mit Progressbar

    • KloMeister
    • 16. Januar 2015 um 15:45

    Ich denke mal er meinte Variante 2. (oder eine Kombination aus beiden)

    Da du eine fertige Include Funktion benutzt und diese dein gewünschtes Vorhaben nicht bietet (Aber den Ansatz dazu), empfehle ich, einfach mal rein zu schauen in die Include Funktion:

    Spoiler anzeigen
    [autoit]

    ;
    #FUNCTION# ====================================================================================================================
    ; Author ........: limette, Prog@ndy
    ; Modified.......: jchd
    ; ===============================================================================================================================
    Func _FTP_ProgressDownload($l_FTPSession, $s_LocalFile, $s_RemoteFile, $FunctionToCall = "")
    If $__ghWinInet_FTP = -1 Then Return SetError(-2, 0, 0)

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

    Local $fhandle = FileOpen($s_LocalFile, $FO_OVERWRITE + $FO_BINARY)
    If $fhandle < 0 Then Return SetError(-1, 0, 0)

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

    Local $ai_ftpopenfile = DllCall($__ghWinInet_FTP, 'handle', 'FtpOpenFileW', 'handle', $l_FTPSession, 'wstr', $s_RemoteFile, 'dword', $GENERIC_READ, 'dword', $FTP_TRANSFER_TYPE_BINARY, 'dword_ptr', 0)
    If @error Or $ai_ftpopenfile[0] = 0 Then Return SetError(-3, _WinAPI_GetLastError(), 0)

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

    Local $ai_FTPGetFileSize = DllCall($__ghWinInet_FTP, 'dword', 'FtpGetFileSize', 'handle', $ai_ftpopenfile[0], 'dword*', 0)
    If @error Then Return SetError(-2, _WinAPI_GetLastError(), 0)

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

    If $FunctionToCall = "" Then ProgressOn("FTP Download", "Downloading " & $s_LocalFile)

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

    Local $glen = _WinAPI_MakeQWord($ai_FTPGetFileSize[0], $ai_FTPGetFileSize[2]) ;FileGetSize($s_RemoteFile)
    Local Const $ChunkSize = 256 * 1024
    Local $last = Mod($glen, $ChunkSize)

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

    Local $parts = Ceiling($glen / $ChunkSize)
    Local $buffer = DllStructCreate("byte[" & $ChunkSize & "]")

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

    Local $ai_InternetCloseHandle, $ai_FTPread, $out, $ret, $lasterror
    Local $x = $ChunkSize
    Local $done = 0
    For $i = 1 To $parts
    If $i = $parts And $last > 0 Then
    $x = $last
    EndIf

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

    $ai_FTPread = DllCall($__ghWinInet_FTP, 'bool', 'InternetReadFile', 'handle', $ai_ftpopenfile[0], 'struct*', $buffer, 'dword', $x, 'dword*', $out)
    If @error Or $ai_FTPread[0] = 0 Then
    $lasterror = _WinAPI_GetLastError()
    $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
    ; No need to test @error.
    FileClose($fhandle)
    If $FunctionToCall = "" Then ProgressOff()
    Return SetError(-4, $lasterror, 0)
    EndIf
    $ret = FileWrite($fhandle, BinaryMid(DllStructGetData($buffer, 1), 1, $ai_FTPread[4]))
    If Not $ret Then
    $lasterror = _WinAPI_GetLastError()
    $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
    ; No need to test @error.
    FileClose($fhandle)
    FileDelete($s_LocalFile)
    If $FunctionToCall = "" Then ProgressOff()
    Return SetError(-7, $lasterror, 0)
    EndIf
    $done += $ai_FTPread[4]

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

    If $FunctionToCall = "" Then
    ProgressSet(($done / $glen) * 100)
    Else
    $ret = Call($FunctionToCall, ($done / $glen) * 100)
    If $ret <= 0 Then
    $lasterror = @error
    $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
    ; No need to test @error.
    FileClose($fhandle)
    FileDelete($s_LocalFile)
    If $FunctionToCall = "" Then ProgressOff()
    Return SetError(-6, $lasterror, $ret)
    EndIf
    EndIf
    Sleep(10)
    Next

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

    FileClose($fhandle)

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

    If $FunctionToCall = "" Then ProgressOff()

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

    $ai_InternetCloseHandle = DllCall($__ghWinInet_FTP, 'bool', 'InternetCloseHandle', 'handle', $ai_ftpopenfile[0])
    If @error Or $ai_InternetCloseHandle[0] = 0 Then
    Return SetError(-5, _WinAPI_GetLastError(), 0)
    EndIf

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

    Return 1
    EndFunc ;==>_FTP_ProgressDownload

    [/autoit]


    100% habe ich den Code nicht angeschaut und verstanden. Aber ich vermute mal es funktioniert folgendermaßen:

    Es wird die Dateigröße ermittelt (Progressbar max value), darauffolgend wird die Datei heruntergeladen. Das Wachstum der gerade im Download befindlichen Datei wird bis zur vorher ermittelten Dateigröße ausgelesen - (ist somit also der Progressbar Fortschritt)

    Du musst die Funktion im Prinzip so abändern, dass zunächst die Dateigröße aller Dateien ermittelt wird und dann addiert wird ( Progressbar max value...) und dass die Dateien nacheinander heruntergeladen werden und deren Größenzunahme addiert werden (Fortschritt der Progressbar)

  • Send / Copy Problme

    • KloMeister
    • 8. Januar 2015 um 12:42

    Versuch mal mit

    [autoit]

    number($variable)

    [/autoit]

    zu vergleichen...
    Sonst kann es sein, das er einen string vergleicht.


    Edit: Sehe gerade das wurde ja schon geschrieben... habe ich übersehen

  • Telnet verbindung mit AutoIt herstellen

    • KloMeister
    • 6. Januar 2015 um 15:40

    So wie ich das verstanden habe, willst du Telnet nicht über CMD ausführen, sondern direkt aus AutoIt heraus?
    Ich kenne mich nicht ganz mit Telnet aus, aber soweit ich das richtig verstehe ist das eine TCP-Verbindung mit bestimmten Commands.

    Vielleicht hilft dir TCPSend weiter:
    https://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm

  • Nur jüngsten Ordner nicht löschen?

    • KloMeister
    • 17. Dezember 2014 um 15:24

    Hallo,

    Mit:

    [autoit]

    #include <FileConstants.au3>
    FileGetTime("Pfad", $FT_MODIFIED, 1))

    [/autoit]


    Erhälst du das Änderungsdatum der Datei.

    Und mit _FileListToArray | https://www.autoit.de/dokumentation_…ListToArray.htm
    Bekommst du eine Liste der Ordner oder Dateien eines Pfades.

    Du musst also nur noch den Array, der mit _"FileListToArray" erzeugt wurde mit einer Schleife (For $i = 0 to UBound(....) durchlaufen lassen, die Zeitstempel abfragen und vergleichen.

    Und anschließend den jüngsten Ordner über:

    [autoit]

    DirRemove ("Pfad")

    [/autoit]


    löschen

  • Eigenen Script-Editor programmieren, dazu ein paar Fragen.....

    • KloMeister
    • 17. Dezember 2014 um 08:58

    Neben SciTE, gibts auch noch den "AutoIt Debugger", sowie "ISN AutoIt Studio"

    Deine Idee finde ich ganz gut, es wird jedoch schwer die ganzen Befehle leicht zugänglich zu machen. Wenn ich die Befehle erst aus einer 5000 Einträge langen Liste auswählen muss, wird es für fortgeschrittene Programmierer, die wissen wie der Befehl heißt, deutlich länger dauern.

    Nur für Anfänger, die erstmal nicht wissen wie die Befehle zu nutzen sind und wie sie aufgebaut sind, werden davon profitieren.

    Richtig nett wäre es ja, wenn man "grafisch" mit Logik-Blöcken programmieren kann und daraus dann der entsprechende Code generiert wird.
    (Für Mikrocontroller gibts ja sowas z.B: http://gcbasic.sourceforge.net/aboutgcgb.html )

    Ich konnte dir zwar nicht direkt helfen, aber vielleicht konnte ich dir trotzdem ein paar Informationen / Inspirationen geben.

  • Uhr

    • KloMeister
    • 16. Dezember 2014 um 22:14

    Du hast einen nicht ganz unwichtigen Punkt, der eine Uhr ausmacht, vergessen. Der Stundenzeiger springt nicht stündlich weiter, sondern dreht sich langsam mit... Was bedeutet, dass man die Minuten prozentual mit zu den Stunden addieren muss.

    Das kann man so realisieren:

    [autoit]

    ; hour
    $dRad = -(($PI*2) / 12) *(@HOUR + (@MIN / 60))-$PI

    [/autoit]
  • COM zum WindowsMediaPlayer

    • KloMeister
    • 15. Dezember 2014 um 16:16

    Wenn der Windows Media Player nicht pflicht ist, dann empfehle ich dir den "Media Player Classic Home Cinema" zu verwenden.

    Dieser hat eine eingebaute API, was bedeutet, man kann dem Player alle möglichen Informationen entnehmen oder senden, ohne das dieser im Vordergrund sein muss...

    Es gibt sogar schon ein fertiges AutoIt script mit den entsprechenden API Befehlen:
    http://www.autoitscript.com/forum/topic/85…ia-wm-copydata/

  • Inputbox voreingesteller Text

    • KloMeister
    • 12. Dezember 2014 um 23:20

    Stimmt , das ist auch eine Variante... Hier nochmal ein Copy Paste Beispiel mit der Variante von bbm1995

    [autoit]


    Global Const $EM_SETCUEBANNER = 0x1501
    Global Const $GUI_EVENT_CLOSE = -3

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

    GUICreate('Test_Form', 300, 150)

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

    $Input1 = GUICtrlCreateInput('', 12, 12, 200, 23)
    GUICtrlSendMsg($Input1, $EM_SETCUEBANNER, 1, "Hier bitte etwas eingeben 1")

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

    $Input2 = GUICtrlCreateInput('', 12, 41, 200, 23)
    GUICtrlSendMsg($Input2, $EM_SETCUEBANNER, 1, "Hier bitte etwas eingeben 2")

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

    GUISetState()
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]

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™