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

Beiträge von DeepRed92

  • AutoIt3ExecuteLine funktioniert nicht mehr?

    • DeepRed92
    • 18. März 2014 um 09:36

    Danke dir. Ich speichere das gleich mal ab. Habe aber inzwischen auf die Version 3.3.8.1 gedowngraded.
    Leider funktionieren viele Skripte mit der neuen Version von mir nicht mehr. Inklusive die iTunes.au3. Liegt wahrscheinlich an den COM-Objekten.

  • iTunes Lyrics Scroller

    • DeepRed92
    • 18. März 2014 um 09:32

    Hallo,

    hier mal ein kleines Skript, was ich vor längerer Zeit mal geschrieben hatte. Damit kann man die in MP3 eingefügten Lyrics mithilfe von iTunes auslesen und zum Track synchronisieren. Man muss es nur einmal synchronisieren, dann wird es als INI-Datei gespeichert und man beim nächsten Mal mitsingen oder was auch immer. :D

    Einfach auf den einen Button klicken und es speichert die Zeit, wann es um eine Zeile scrollen soll.

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Text Document.ico
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Description=iTunes lyric autoscroller
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2012 Burak Keskin
    #AutoIt3Wrapper_Res_Field=E-Mail|[email='mail@burakkeskin.de'][/email]
    #AutoIt3Wrapper_Res_Field=CompanyName|1.0.0.0
    #AutoIt3Wrapper_Res_Field=InternalName|LySc
    #AutoIt3Wrapper_Res_Field=Comments|
    #AutoIt3Wrapper_Res_Field=OriginalFilename|lysc.exe
    #AutoIt3Wrapper_Res_Field=ProductName|Lyric Scroller
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <include/iTunes.au3>
    #include <Array.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIEdit.au3>
    #include <ButtonConstants.au3>
    #include <GUIRichEdit.au3>

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

    Opt('GUIOnEventMode', 1)

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

    Local $aOldSongInfo[3] = ['', '', '']
    Local $sTimer = 0
    Local $iCount = 1
    Local $bLyricExists = False
    Local $sScrollTimer = 0
    Local $aScrollEvents = 0
    Local $iScrollCounter = 1
    Local $iTimerLast = 0

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

    _iTunes_Start()

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

    $hGUI = GUICreate("LySc © 2012 Burak Keskin", 720, 188)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_closeProgram')
    $hLyricBox = _GUICtrlRichEdit_Create($hGUI, '', 8, 8, 705, 135, BitOR($ES_MULTILINE, $ES_CENTER, $WS_VSCROLL, $ES_READONLY))

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

    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetData(-1, "Please wait...")
    $hScroll = GUICtrlCreateButton("Lyric autoscroll", 616, 150, 99, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, '_LyricScrollSet')
    $hStatus = GUICtrlCreateLabel("No autoscoll information found!", 8, 160, 250, 19)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUISetState(@SW_SHOW)

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

    Local $sMark = GUICreate('', 687, 20, 8, 65, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0x00FF00, $sMark)
    WinSetTrans($sMark, '', 80)
    GUISetState(@SW_SHOW, $sMark)

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

    _setCurrentSong()

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

    AdlibRegister('_setCurrentSong', 500)
    AdlibRegister('_autoScroll', 10)

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

    While 1
    Sleep(50)
    WEnd

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

    Func _autoScroll()
    If Not $bLyricExists Then Return
    If IsArray($aScrollEvents) Then
    If $aScrollEvents[0][0] < $iScrollCounter Then Return
    If Round(TimerDiff($sScrollTimer), 0) >= $aScrollEvents[$iScrollCounter][1] Then
    _GUICtrlEdit_Scroll($hLyricBox, 1)
    $iScrollCounter += 1
    EndIf
    Else
    $aScrollEvents = IniReadSection(@ScriptDir & '\lyrics\' & _createFileName($aOldSongInfo[0] & ' - ' & $aOldSongInfo[1] & ' - ' & $aOldSongInfo[2]) & '.ini', 'events')
    EndIf
    EndFunc ;==>_autoScroll

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

    Func _LyricScrollSet()
    _GUICtrlEdit_Scroll($hLyricBox, 1)
    Local $iTimer = Round(TimerDiff($sTimer), 0)

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

    If ($iTimer - $iTimerLast) <= 300 Then ;Doppelklick bedeutet Zeile überspringen!
    $iTimer = $iTimerLast
    EndIf

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

    IniWrite(@ScriptDir & '\lyrics\' & _createFileName($aOldSongInfo[0] & ' - ' & $aOldSongInfo[1] & ' - ' & $aOldSongInfo[2]) & '.ini', 'events', 'event' & $iCount, $iTimer)
    $iTimerLast = $iTimer
    $iCount += 1
    EndFunc ;==>_LyricScrollSet

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

    Func _createFileName($sName)
    $sName = StringReplace($sName, '\', '')
    $sName = StringReplace($sName, '/', '')
    $sName = StringReplace($sName, ':', '')
    $sName = StringReplace($sName, '*', '')
    $sName = StringReplace($sName, '?', '')
    $sName = StringReplace($sName, '"', '')
    $sName = StringReplace($sName, '<', '')
    $sName = StringReplace($sName, '>', '')
    $sName = StringReplace($sName, '|', '')
    Return $sName
    EndFunc ;==>_createFileName

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

    Func _setCurrentSong()
    Local $aSongInfo = Execute('_iTunes_Current_GetInfo()')

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

    If Not IsArray($aSongInfo) Then Return

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

    If $aOldSongInfo[0] <> $aSongInfo[2] Or $aOldSongInfo[1] <> $aSongInfo[0] Or $aOldSongInfo[2] <> $aSongInfo[1] Then
    Local $sLyric = _iTunes_Current_LyricsGet()
    If $sLyric <> '0' Then
    _GUICtrlRichEdit_SetText($hLyricBox, _convertTextToRtf($sLyric))
    _GUICtrlRichEdit_SetScrollPos($hLyricBox, 0, 0)
    If FileExists(@ScriptDir & '\lyrics\' & _createFileName($aSongInfo[2] & ' - ' & $aSongInfo[0] & ' - ' & $aSongInfo[1]) & '.ini') Then
    GUICtrlSetData($hStatus, 'Autoscroll information found! :)')
    $bLyricExists = True
    $sScrollTimer = 0
    $sScrollTimer = TimerInit()
    $aScrollEvents = 0
    $iScrollCounter = 1
    Else
    GUICtrlSetData($hStatus, 'No autoscoll information found!')
    $bLyricExists = False
    EndIf

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

    $iCount = 1
    $sTimer = 0
    $sTimer = TimerInit()
    Else
    _GUICtrlRichEdit_SetText($hLyricBox, _convertTextToRtf('No Lyrics found! :/'))
    _GUICtrlRichEdit_SetScrollPos($hLyricBox, 0, 0)
    EndIf
    $aOldSongInfo[0] = $aSongInfo[2]
    $aOldSongInfo[1] = $aSongInfo[0]
    $aOldSongInfo[2] = $aSongInfo[1]
    EndIf
    EndFunc ;==>_setCurrentSong

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

    Func _closeProgram()
    Exit
    EndFunc ;==>_closeProgram

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

    Func _convertTextToRtf($sText)
    Local $sSplitText = StringSplit($sText, @LF)
    Local $sRTF = '{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Calibri;}}' & @LF & _
    '{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sl276\slmult1\qc\lang7\f0\fs28\par\par ' ;\par\par wegen Markierung

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

    For $i = 1 To $sSplitText[0]
    $sRTF &= $sSplitText[$i] & '\par' & @LF
    Next

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

    $sRTF &= '\par\par' ;\par\par wegen markierung
    $sRTF &= '}'

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

    Return $sRTF
    EndFunc ;==>_convertTextToRtf

    [/autoit]

    Dateien

    LySc.zip 488,53 kB – 562 Downloads
  • AutoIt3ExecuteLine funktioniert nicht mehr?

    • DeepRed92
    • 18. März 2014 um 07:14

    Schönen guten Morgen euch allen,

    habe gestern Abend noch auf die neue AutoIt-Version geupdatet und musste kurz danach feststellen, dass dieses Skript nicht mehr läuft, wenn man es kompiliert:

    [autoit]

    Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(4096, ''Hello World!'', ''Hi!'')"')

    [/autoit]

    Führe ich es nur mit "Run Script" aus, klappt alles wunderbar? Wieso funktioniert es nicht mehr? Ist das nur bei mir so? Habe leider keine Möglichkeit es auf anderen Rechnern zu testen.


    Beste Grüße!

  • Handyzugriff mit AutoIt

    • DeepRed92
    • 1. Juni 2013 um 00:07
    Zitat

    Was dein Script angeht:
    So wie ich das überflogen habe soll das Script erstmal nur das Anschließen des Gerätes erkennen und dir Daten darüber liefern, was schonmal ein wichtiger Schritt wäre. Du hast leider nicht geschrieben ob das soweit funktioniert und was dir die ganzen Konsolenausgaben im Script liefern.

    Hallo misterspeed,
    das Script von meinem ersten Post hat nicht funktioniert. Hatte das auf autoitscript.com im Forum gefunden. Habe hier und da mal was verändert/hinzugefügt und jetzt klappt es. Ich kann erkennen, ob das Handy angeschlossen wurde bzw. getrennt wurde.

    Wie man genau JETZT abfragen kann, ob mein Handy angeschlossen ist, bleibt mir ein Rätsel.


    Nokia Suite Tool
    [autoit]

    Local $oWMISink, $sData

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

    _MonitorUSBDevices($oWMISink)
    If @error Then Exit ConsoleWrite("! Error: " & @error & @LF)

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

    While 1
    Sleep(100)
    WEnd

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

    Func SINK_OnObjectReady($objLatestEvent, $objAsyncContext)
    #forceref $objAsyncContext
    Switch $objLatestEvent.Path_.Class
    Case "__InstanceCreationEvent"
    If (Execute("$objLatestEvent.TargetInstance.PNPDeviceID") == "USB\VID_0421&PID_0154\xxxxxxxxxxxxxxx") Then
    If Not ProcessExists('NokiaSuite.exe') Then Run('C:\Program Files (x86)\Nokia\Nokia Suite\NokiaSuite.exe -tray')
    EndIf
    Case "__InstanceDeletionEvent"
    If (Execute("$objLatestEvent.TargetInstance.PNPDeviceID") == "USB\VID_0421&PID_0154\xxxxxxxxxxxxxxx") Then
    If ProcessExists('NokiaSuite.exe') Then ProcessClose('NokiaSuite.exe')
    EndIf
    EndSwitch
    EndFunc ;==>SINK_OnObjectReady

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

    Func _MonitorUSBDevices(ByRef $oObj)
    $oObj = ObjCreate("WbemScripting.SWbemSink")
    If @error Or Not IsObj($oObj) Then Return SetError(1, 0, -1)
    ObjEvent($oObj, "SINK_")
    If @error Then Return SetError(2, 0, -1)
    Local $Obj_WMIService = ObjGet('winmgmts:\\localhost\root\cimv2')
    If @error Or Not IsObj($oObj) Then Return SetError(3, 0, -1)
    $Obj_WMIService.ExecNotificationQueryAsync($oWMISink, "SELECT TargetInstance FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_PnPEntity'")
    EndFunc ;==>_MonitorUSBDevices

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

    Func _close()
    Exit
    EndFunc

    [/autoit]
  • Handyzugriff mit AutoIt

    • DeepRed92
    • 31. Mai 2013 um 17:58

    Hallo Community,

    habe ein kleines Problem. Und zwar schaffe ich es nicht, auf mein Handy mit AutoIt zuzugreifen. Dies geht weder noch durch FileExists oder FileRead. Das Problem ist, dass mein Handy keinen Laufwerksbuchstaben hat.

    Hier ein kleines Bild (Handy unter "Arbeitsplatz")

    [Blockierte Grafik: http://image.burakkeskin.de/rechner/arbeitsplatz.png]

    "Mein" Script bisher:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}", "_Exit")

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

    Global $sDeviceProperty = "Name" ;Caption, Description, DeviceID, Name, PNPDeviceID
    Global $sUSBDevice = "Nokia 5800 XpressMusic USB Serial Port (COM3)" ;property value for Caption, Description, DeviceID, Name or PNPDeviceID

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

    Global $fDeviceActive = _FindUSBDevice($sDeviceProperty) ;initialize variable with device state. global var prevents retriggering by other device insertion/removal
    ConsoleWrite($fDeviceActive & @LF)
    exit
    ;~ If $fDeviceActive = -1 Then ConsoleWrite("! Error finding device: " & @error & @LF)

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

    ConsoleWrite("> Monitoring - Press ESC to Exit: " & @LF)

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

    _Main()

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

    Func _Main()
    Local Const $WM_DEVICE_CHANGE = 0x0219
    GUICreate("") ;dummy gui for receiving window messaging
    GUIRegisterMsg($WM_DEVICE_CHANGE, "_WM_DEVICE_CHANGE")
    While 1
    Sleep(1000)
    WEnd
    EndFunc ;==>_Main

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Func _WM_DEVICE_CHANGE($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    Local Const $DBT_DEVNODES_CHANGED = 0x00000007
    If $wParam = $DBT_DEVNODES_CHANGED Then
    Switch _FindUSBDevice($sDeviceProperty)
    Case 1
    If Not $fDeviceActive Then ;check current state buffer to prevent events from other usb devices
    $fDeviceActive = True
    ConsoleWrite("+ Device Connected" & @LF)
    EndIf
    Case 0
    If $fDeviceActive Then ;check current state buffer to prevent events from other usb devices
    $fDeviceActive = False
    ConsoleWrite("! Device Disconnected" & @LF)
    EndIf
    Case -1
    ConsoleWrite("! WMI Error: " & @error & @LF)
    EndSwitch
    EndIf
    Return "GUI_RUNDEFMSG"
    EndFunc ;==>_WM_DEVICE_CHANGE

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

    Func _FindUSBDevice($sProperty = "*", $strComputer = ".")
    Local $objWMIService = ObjGet("winmgmts:" & $strComputer & "rootcimv2")
    If @error Then Return SetError(1, 0, -1)
    Local $colDevices = $objWMIService.ExecQuery("Select Dependent From Win32_USBControllerDevice") ;Select Dependent instead of Select * - limit items in collection to speed up response slightly
    If Not IsObj($colDevices) Then Return SetError(2, 0, -1)
    Local $arrDeviceNames, $colUSBDevices
    For $objDevice In $colDevices
    $arrDeviceNames = StringSplit(StringReplace($objDevice.Dependent, Chr(34), ""), "=", 2)
    If @error Or UBound($arrDeviceNames) <> 2 Then Return SetError(3, 0, -1)
    $colUSBDevices = $objWMIService.ExecQuery("Select " & $sProperty & " From Win32_PnPEntity Where DeviceID = '" & $arrDeviceNames[1] & "'");Select $sProperty instead of Select * - limit items in collection to speed up response slightly
    If Not IsObj($colUSBDevices) Then Return SetError(4, 0, -1)
    For $objUSBDevice In $colUSBDevices
    ;ConsoleWrite("USB Description: " & Execute("$objUSBDevice." & $sProperty) & @LF)
    If (Execute("$objUSBDevice." & $sProperty) == $sUSBDevice) Then Return 1 ;device found
    If @error Then Return SetError(5, 0, -1)
    Next
    Next
    Return 0 ;device not found
    EndFunc ;==>_FindUSBDevice

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

    Func _Test($strComputer = ".")
    ;use to find your USB device WMI property name and value, then copy/paste value to $sUSBDevice and property name to $sDeviceProperty
    Local $objWMIService = ObjGet("winmgmts:" & $strComputer & "rootcimv2")
    Local $colDevices = $objWMIService.ExecQuery("Select Dependent From Win32_USBControllerDevice")
    Local $arrDeviceNames, $colUSBDevices, $Output

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

    For $objDevice In $colDevices
    $arrDeviceNames = StringSplit(StringReplace($objDevice.Dependent, Chr(34), ""), "=", 2)
    $colUSBDevices = $objWMIService.ExecQuery("Select * From Win32_PnPEntity Where DeviceID = '" & $arrDeviceNames[1] & "'")

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

    For $objItem In $colUSBDevices ;properties that usually return no value or are not needed are commented
    ;$Output &= "Availability: " & $objItem.Availability & @CRLF
    $Output &= "Caption: " & $objItem.Caption & @CRLF
    $Output &= "Description: " & $objItem.Description & @CRLF
    $Output &= "Name: " & $objItem.Name & @CRLF
    $Output &= "Manufacturer: " & $objItem.Manufacturer & @CRLF
    $Output &= "ClassGuid: " & $objItem.ClassGuid & @CRLF
    ;$Output &= "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
    ;$Output &= "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
    ;$Output &= "CreationClassName: " & $objItem.CreationClassName & @CRLF
    $Output &= "DeviceID: " & $objItem.DeviceID & @CRLF
    ;$Output &= "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
    ;$Output &= "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
    ;$Output &= "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    ;$Output &= "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
    $Output &= "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
    $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
    ;$Output &= "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
    ;$Output &= "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
    $Output &= "Service: " & $objItem.Service & @CRLF
    $Output &= "Status: " & $objItem.Status & @CRLF
    ;$Output &= "StatusInfo: " & $objItem.StatusInfo & @CRLF
    ;$Output &= "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    ;$Output &= "SystemName: " & $objItem.SystemName & @CRLF
    ConsoleWrite("+ " & $Output & @LF) ;use to find your device name, then copy/paste to $sUSBDevice declaration
    $Output = ""
    Next
    Next
    EndFunc ;==>_Test

    [/autoit]


    Hier gibt es etwas, was ich dazu gefunden habe. So ganz verstanden habe ich das leider nicht (Einträge nicht bei mir vorhanden).

    http://www.autoitscript.com/forum/topic/14…cted/?p=1009217

  • Durchschnittsfarbe eines Bildes mit GDIPlus?

    • DeepRed92
    • 13. April 2013 um 16:19

    Hallo Leute,

    habe nach langer Zeit mal wieder angefangen wieder zu scripten und komme an einer Stelle nicht weiter. Und zwar habe ich ein Bild, das beispielsweise 500x500 Pixel groß ist. Mit _GDIPlus_GraphicsDrawImageRect zeichne ich das auf die GUI in der Größe 1x1 Pixel, damit ich die Durchschnittsfarbe des ganzen Bildes habe. Aber irgendwie bekomme ich mit _GDIPlus_GetPixel nur die Farbe vom Format 500x500 Pixel.

    Also ich zeichne erst das Bild mit 1x1 Pixel, ermittel die Farbe davon, lösche es um anschließend die Hintergrundfarbe mit der Farbe zu füllen und zeichne letzendlich das Bild in Vollbild (1:1). Klappt leider nicht :rofl:

    Hier das Script (Siehe Zeile 75-79):

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Burak Keskin

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <class\AutoItObject.au3>
    #include <class\iTunes.au3>
    #include <class\mainGUI.au3>
    #include <class\random.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <Array.au3>

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

    _AutoItObject_Startup()
    _GDIPlus_Startup()

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

    Opt('GUIOnEventMode', 1)

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

    ;Objects
    Local $mainGUI = _new_mainGUI()
    Local $iTunes = _new_iTunes()
    Local $random = _new_Random()
    ;Vars
    Local $iWidth = @DesktopWidth
    Local $iHeight = @DesktopHeight
    Local $aOldSong[3]
    Local $hGraphic, $hImage, $iColor = 0xFF000000
    Local $sTempFile = @TempDir & '\' & $random.genTmpName()

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

    $iTunes.start()

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

    #region mainGUI
    $mainGUI.create()
    $mainGUI.setEvent($GUI_EVENT_CLOSE, '_exit')
    $mainGUI.setEvent($GUI_EVENT_PRIMARYDOWN, '_clickedLeftDown')
    $mainGUI.setEvent($GUI_EVENT_SECONDARYDOWN, '_clickedRightDown')
    $mainGUI.setState(@SW_SHOW)
    #endregion mainGUI

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

    _setCurrentInfo()
    AdlibRegister('_setCurrentInfo', 300)

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

    While 1
    Sleep(50)
    WEnd

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

    Func _setCurrentInfo()
    Local $aSongInfo = $iTunes.curGetInfo()

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

    If Not IsArray($aSongInfo) Or $aSongInfo[1] = '' Or _
    $aOldSong[0] == $aSongInfo[0] Or $aOldSong[1] == $aSongInfo[1] Or $aOldSong[2] == $aSongInfo[2] Then Return 0

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

    _GDIPlus_ImageDispose($hImage)

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

    FileDelete($sTempFile)

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

    $iTunes.curCoverGet($sTempFile)

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND(HWnd($mainGUI.getGUIHandle))
    _GDIPlus_GraphicsClear($hGraphic, $iColor)

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

    $hImage = _GDIPlus_ImageLoadFromFile($sTempFile)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, 2, 2) ;???????
    $iColor = _GDIPlus_GetPixel($hImage, 5, 5)
    _GDIPlus_GraphicsClear($hGraphic, $iColor)

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

    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, ($iWidth - $iHeight) / 2, 0, $iHeight, $iHeight)

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

    $aOldSong[0] = $aSongInfo[0] ;Album
    $aOldSong[1] = $aSongInfo[1] ;Artist
    $aOldSong[2] = $aSongInfo[2] ;Name
    EndFunc

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

    Func _clickedLeftDown()
    $iTunes.next()
    EndFunc

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

    Func _clickedRightDown()
    $iTunes.prev()
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

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

    Func _GDIPlus_GetPixel($hBitmap, $X, $Y)
    Local $result = DllCall($ghGDIPDLL, "int", "GdipBitmapGetPixel", "ptr", $hBitmap, "int", $X, "int", $Y, "dword*", 0)
    If @error Then Return SetError(1, 0, 0)
    Return SetError($result[0], 1, $result[4])
    EndFunc ;==>_GDIPlus_GetPixel

    [/autoit]


    Ich denke mal, das lässt sich ganz simpel lösen, komme aber nicht drauf. :pinch:

    Beste Grüße


    DeepRed92


    Edit: Ups, Anhang vergessen.
    Edit2: Ach ja,in Zeile 75, 76 stimmen wie Werte nicht überein. Funktioniert trotz Anpassung auch nicht.

    Dateien

    iTunesInterface.zip 238,19 kB – 478 Downloads
  • Ein Autoit-Bug?

    • DeepRed92
    • 30. Januar 2013 um 15:45

    Hmm also in der AutoIt-Hilfe ist folgendes zu entnehmen:

    Wenn die Funktion scheitert(also 0 zurückgibt), enthält @error weitere Informationen:
    1 = Der Computer ist offline
    2 = Der Computer ist nicht erreichbar
    3 = Falsche Adresse
    4 = Andere Fehler

    In Deinem Fall bedeutet bei @error eine 1: Der Computer ist offline.

  • Ein Autoit-Bug?

    • DeepRed92
    • 30. Januar 2013 um 15:21

    Hi, versuchs mal so:

    Spoiler anzeigen
    [autoit]

    Local $ziel_ip = "192.168.2.1"
    Local $antwort = 0
    Local $letzte_antwort = 0

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

    _log("Pinger gestartet")

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

    While True

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

    Sleep(100)

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

    $error = _ping($ziel_ip)

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

    If $error > 0 AND $letzte_antwort == 0 Then
    $letzte_antwort = 1
    _log($ziel_ip & " erreichbar.")
    ElseIf $error < 1 AND $letzte_antwort == 1 Then
    $letzte_antwort = 0
    _log($ziel_ip & " nicht erreichbar!")
    EndIf

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

    WEnd

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

    Func _ping($ziel_ip = "192.168.2.1")
    return ping($ziel_ip, 100)
    EndFunc

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

    Func _log($text = "")
    FileWrite("C:\pinglog.txt", "[" & @MDAY & "." & @MON & "." & @YEAR & " - " & @HOUR & ":" & @MIN & ":" & @SEC & "] " & $text & @CRLF)
    EndFunc

    [/autoit]
  • eigene *.dll mit autoit schreiben??

    • DeepRed92
    • 15. Juni 2012 um 15:58

    Du kannst mit Visual Basic eine Programmbibliothek schreiben und es dann mit AutoIt nutzen. Die beiden Sprachen sind ja sehr ähnlich. Müsste so kein Problem sein ;)

  • 2x Countdown gleichzeitig runterzählen

    • DeepRed92
    • 11. Juni 2012 um 18:04

    Hi, so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

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

    Global $iCounter1 = 5, $iCounter2 = 5

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    AdlibRegister("deine_counter_1", 1000)
    $iCounter1 = 5
    $iCounter2 = 5
    Case $Label2
    AdlibRegister("deine_counter_2", 1000)
    $iCounter1 = 5
    $iCounter2 = 5
    EndSwitch
    WEnd

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

    Func deine_counter_1()
    If $iCounter1 >= 0 Then
    GUICtrlSetData($Label1, $iCounter1)
    $iCounter1 -= 1
    Else
    AdlibUnRegister("deine_counter_1")
    EndIf
    EndFunc ;==>deine_counter_1

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

    Func deine_counter_2()
    If $iCounter2 >= 0 Then
    GUICtrlSetData($Label2, $iCounter2)
    $iCounter2 -= 1
    Else
    AdlibUnRegister("deine_counter_2")
    EndIf
    EndFunc ;==>deine_counter_2

    [/autoit]
  • Mini-Programm: iExport

    • DeepRed92
    • 8. Juni 2012 um 20:55

    Man kann die Dateien doch per Drag&Drop in den gewünschten Ordner ziehen!?

  • DeepRed92's Install Creator (in Arbeit)

    • DeepRed92
    • 4. Juni 2012 um 23:33

    FichteFoll: Erstmal danke für die vielen Verbesserungsvorschläge. Sind einige dabei, woran ich nicht gedacht hatte.

    Zitat

    "Sonstige": Warum nur RTF-Dateien? PDF oder TXT geht doch genauso gut. Oder gar CHM. Kann man alles über ShellExecute() öffnen, deswegen würde ich die Gruppe in "Informationsdateien" o.ä. ändern.

    RTF Dateien deswegen, weil man sie in einem Control anzeigen lassen kann. Das gleiche geht auch bei Textdateien. Ob das bei PDFs und Chms geht, bezweifle ich.
    Aber RTF und TXT werden auf jeden Fall eingebaut.

    Zitat

    ... Warum ist da noch ein "Sonstige" Tab mit demselben Inhalt wie beim ersten (abgesehen von der Lizenz)?

    Weil der erste sich auf den Installer bezieht und der zweite auf den Uninstaller.

    Soo, werde ziemlich bald mal die Änderungen übernehmen. :)

  • ISN AutoIt Studio

    • DeepRed92
    • 2. Juni 2012 um 13:22

    Hallo, bin gerade dabei dein Projekt zu testen und finde das bisher super! :)
    Aber warum kann ich nicht die Größe des Hauptfensters ändern? Ist das so gewollt und kann man das ändern?

  • DeepRed92's Install Creator (in Arbeit)

    • DeepRed92
    • 30. Mai 2012 um 18:47

    Also das Bild ist 164x314 Pixel groß :)

  • DeepRed92's Install Creator (in Arbeit)

    • DeepRed92
    • 29. Mai 2012 um 18:06

    Danke. Schön, dass es euch gefällt. :)

    Cheater Dieter: Hey danke. Kann ich die Bilder dann für den Installer verwenden? Sehen gut aus.

  • DeepRed92's Install Creator (in Arbeit)

    • DeepRed92
    • 29. Mai 2012 um 03:20

    Hab es mal etwas überarbeitet. Man kann jetzt die ressource-Informationen ändern, Dateien und Ordner per Drag&Drop hinzufügen und den Installer erstellen, der nur zur Demonstration taugt. Ich denke mal das veranschaulicht, was noch gemacht werden muss, was ich noch vor mir habe ^^.
    Das gute dran ist, dass der Installer ganz ohne FileInstall auskommt (Außer bei einem Bild und die 7-zip32.dll)!

    Edit: Ach ja und der Unterschied zu NSIS etc. beträgt nur 200-300 KB. Der Installer muss außerdem optisch noch etwas verändert werden, da es zu sehr NSIS-Like ist. War eben auf schnelle :D

  • Gui in Gui Artefakte... :(

    • DeepRed92
    • 22. Mai 2012 um 15:11

    Ist bei mir auch so, wenn ich die inner GUI ganz schnell verschiebe. Kannst es aber bestimmt mit

    [autoit]

    _WinAPI_RedrawWindow

    [/autoit]

    lösen.

    Dateien

    Artefakte.png 51,69 kB – 488 Downloads
  • DeepRed92's Install Creator (in Arbeit)

    • DeepRed92
    • 22. Mai 2012 um 15:02

    Danke für euren Feedback. Schön, dass es auch gefallen hat. Werde demnächst weiter Scripten und mich mal einen ganzen Tag dran setzen um es endlich mal fertig zu stellen. Können laut Abstimmung ja viele Leute hier gebrauchen :)

  • Das Ausführen der EXE-Datei nur für die erlaubten MAC-Adressen ermöglichen?

    • DeepRed92
    • 14. Mai 2012 um 00:45

    Hier ein Beispiel, was sehr verbesserungsbedürftig ist (Fehlerabfragen etc.):

    Spoiler anzeigen
    [autoit]

    Global $networkadapter[1][2]

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

    _GetNetworkadapterInf()
    If _getMac() <> 'deineMACAdresse' Then Exit

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

    Func _getMac() ;Die erste Mac-Adresse
    For $i = 0 To UBound($networkadapter) - 1
    If $networkadapter[$i][1] <> '' Then Return $networkadapter[$i][1]
    Next
    EndFunc ;==>_getMac

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

    Func _GetNetworkadapterInf()
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter[$x][0] = $objItem.Name
    $networkadapter[$x][1] = $objItem.MACAddress
    $x += 1
    ReDim $networkadapter[$x + 1][2]
    Next
    EndFunc ;==>_GetNetworkadapterInf

    [/autoit]
  • Rechte mit SetACL.exe setzen?

    • DeepRed92
    • 13. Mai 2012 um 03:36

    Ich denke mal dein Script hat nicht die nötigen Rechte dazu. Versuchs mal so:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    ;Prüfen ob die SETAcl vorhanden ist
    $setacl = "D:\Tools\SetACL.exe"
    $ProgDir="C:\Program Files (x86)\Altec\"
    If FileExists($setacl) Then

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

    ;Rechte setzen
    RunWait($setacl & ' -on "' & $pfad & '" -ot file ' & _
    '-actn setprot -op "dacl:p_nc;sacl:nc" ' & _
    '-actn setowner -ownr "n:Administrators" ' & _
    '-actn ace -ace "n:Benutzer;p:full"' _
    , "", @SW_HIDE)
    Else
    Msgbox(16,"ACHTUNG","Es
    existiert keine Setacl.exe auf D:\Tools." &
    @CRLF & "Bitte diese dort hinein kopieren")
    Exit
    EndIf

    [/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™