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.
Beiträge von DeepRed92
-
-
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.
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 ****
[/autoit] [autoit][/autoit] [autoit]
#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 Version: 3.3.8.1
[/autoit] [autoit][/autoit] [autoit]
Author: myNameScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <include/iTunes.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIEdit.au3>
#include <ButtonConstants.au3>
#include <GUIRichEdit.au3>Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]Local $aOldSongInfo[3] = ['', '', '']
[/autoit] [autoit][/autoit] [autoit]
Local $sTimer = 0
Local $iCount = 1
Local $bLyricExists = False
Local $sScrollTimer = 0
Local $aScrollEvents = 0
Local $iScrollCounter = 1
Local $iTimerLast = 0_iTunes_Start()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("LySc © 2012 Burak Keskin", 720, 188)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, '_closeProgram')
$hLyricBox = _GUICtrlRichEdit_Create($hGUI, '', 8, 8, 705, 135, BitOR($ES_MULTILINE, $ES_CENTER, $WS_VSCROLL, $ES_READONLY))GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
[/autoit] [autoit][/autoit] [autoit]
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)Local $sMark = GUICreate('', 687, 20, 8, 65, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x00FF00, $sMark)
WinSetTrans($sMark, '', 80)
GUISetState(@SW_SHOW, $sMark)_setCurrentSong()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]AdlibRegister('_setCurrentSong', 500)
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister('_autoScroll', 10)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _autoScroll()
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_autoScrollFunc _LyricScrollSet()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlEdit_Scroll($hLyricBox, 1)
Local $iTimer = Round(TimerDiff($sTimer), 0)If ($iTimer - $iTimerLast) <= 300 Then ;Doppelklick bedeutet Zeile überspringen!
[/autoit] [autoit][/autoit] [autoit]
$iTimer = $iTimerLast
EndIfIniWrite(@ScriptDir & '\lyrics\' & _createFileName($aOldSongInfo[0] & ' - ' & $aOldSongInfo[1] & ' - ' & $aOldSongInfo[2]) & '.ini', 'events', 'event' & $iCount, $iTimer)
[/autoit] [autoit][/autoit] [autoit]
$iTimerLast = $iTimer
$iCount += 1
EndFunc ;==>_LyricScrollSetFunc _createFileName($sName)
[/autoit] [autoit][/autoit] [autoit]
$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 ;==>_createFileNameFunc _setCurrentSong()
[/autoit] [autoit][/autoit] [autoit]
Local $aSongInfo = Execute('_iTunes_Current_GetInfo()')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
[/autoit] [autoit][/autoit] [autoit]
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$iCount = 1
[/autoit] [autoit][/autoit] [autoit]
$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 ;==>_setCurrentSongFunc _closeProgram()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_closeProgramFunc _convertTextToRtf($sText)
[/autoit] [autoit][/autoit] [autoit]
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 MarkierungFor $i = 1 To $sSplitText[0]
[/autoit] [autoit][/autoit] [autoit]
$sRTF &= $sSplitText[$i] & '\par' & @LF
Next$sRTF &= '\par\par' ;\par\par wegen markierung
[/autoit] [autoit][/autoit] [autoit]
$sRTF &= '}'Return $sRTF
[/autoit]
EndFunc ;==>_convertTextToRtf -
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!
-
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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If @error Then Exit ConsoleWrite("! Error: " & @error & @LF)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc SINK_OnObjectReady($objLatestEvent, $objAsyncContext)
[/autoit] [autoit][/autoit] [autoit]
#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_OnObjectReadyFunc _MonitorUSBDevices(ByRef $oObj)
[/autoit] [autoit][/autoit] [autoit]
$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 ;==>_MonitorUSBDevicesFunc _close()
[/autoit]
Exit
EndFunc -
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
[/autoit] [autoit][/autoit] [autoit]
Global $sUSBDevice = "Nokia 5800 XpressMusic USB Serial Port (COM3)" ;property value for Caption, Description, DeviceID, Name or PNPDeviceIDGlobal $fDeviceActive = _FindUSBDevice($sDeviceProperty) ;initialize variable with device state. global var prevents retriggering by other device insertion/removal
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite($fDeviceActive & @LF)
exit
;~ If $fDeviceActive = -1 Then ConsoleWrite("! Error finding device: " & @error & @LF)ConsoleWrite("> Monitoring - Press ESC to Exit: " & @LF)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_MainFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_ExitFunc _WM_DEVICE_CHANGE($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
#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_CHANGEFunc _FindUSBDevice($sProperty = "*", $strComputer = ".")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>_FindUSBDeviceFunc _Test($strComputer = ".")
[/autoit] [autoit][/autoit] [autoit]
;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, $OutputFor $objDevice In $colDevices
[/autoit] [autoit][/autoit] [autoit]
$arrDeviceNames = StringSplit(StringReplace($objDevice.Dependent, Chr(34), ""), "=", 2)
$colUSBDevices = $objWMIService.ExecQuery("Select * From Win32_PnPEntity Where DeviceID = '" & $arrDeviceNames[1] & "'")For $objItem In $colUSBDevices ;properties that usually return no value or are not needed are commented
[/autoit]
;$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 ;==>_TestHier gibt es etwas, was ich dazu gefunden habe. So ganz verstanden habe ich das leider nicht (Einträge nicht bei mir vorhanden).
-
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
Hier das Script (Siehe Zeile 75-79):
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.8.1
[/autoit] [autoit][/autoit] [autoit]
Author: Burak KeskinScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <class\AutoItObject.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <class\iTunes.au3>
#include <class\mainGUI.au3>
#include <class\random.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <Array.au3>_AutoItObject_Startup()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit];Objects
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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()$iTunes.start()
[/autoit] [autoit][/autoit] [autoit]#region mainGUI
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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_setCurrentInfo()
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister('_setCurrentInfo', 300)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _setCurrentInfo()
[/autoit] [autoit][/autoit] [autoit]
Local $aSongInfo = $iTunes.curGetInfo()If Not IsArray($aSongInfo) Or $aSongInfo[1] = '' Or _
[/autoit] [autoit][/autoit] [autoit]
$aOldSong[0] == $aSongInfo[0] Or $aOldSong[1] == $aSongInfo[1] Or $aOldSong[2] == $aSongInfo[2] Then Return 0_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))
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($hGraphic, $iColor)$hImage = _GDIPlus_ImageLoadFromFile($sTempFile)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, 2, 2) ;???????
$iColor = _GDIPlus_GetPixel($hImage, 5, 5)
_GDIPlus_GraphicsClear($hGraphic, $iColor)_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, ($iWidth - $iHeight) / 2, 0, $iHeight, $iHeight)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$aOldSong[0] = $aSongInfo[0] ;Album
[/autoit] [autoit][/autoit] [autoit]
$aOldSong[1] = $aSongInfo[1] ;Artist
$aOldSong[2] = $aSongInfo[2] ;Name
EndFuncFunc _clickedLeftDown()
[/autoit] [autoit][/autoit] [autoit]
$iTunes.next()
EndFuncFunc _clickedRightDown()
[/autoit] [autoit][/autoit] [autoit]
$iTunes.prev()
EndFuncFunc _exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _GDIPlus_GetPixel($hBitmap, $X, $Y)
[/autoit]
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_GetPixelIch 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. -
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 FehlerIn Deinem Fall bedeutet bei @error eine 1: Der Computer ist offline.
-
Hi, versuchs mal so:
Spoiler anzeigen
[autoit]Local $ziel_ip = "192.168.2.1"
[/autoit] [autoit][/autoit] [autoit]
Local $antwort = 0
Local $letzte_antwort = 0_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
[/autoit] [autoit][/autoit] [autoit]
$letzte_antwort = 1
_log($ziel_ip & " erreichbar.")
ElseIf $error < 1 AND $letzte_antwort == 1 Then
$letzte_antwort = 0
_log($ziel_ip & " nicht erreichbar!")
EndIfWEnd
[/autoit] [autoit][/autoit] [autoit]Func _ping($ziel_ip = "192.168.2.1")
[/autoit] [autoit][/autoit] [autoit]
return ping($ziel_ip, 100)
EndFuncFunc _log($text = "")
[/autoit]
FileWrite("C:\pinglog.txt", "[" & @MDAY & "." & @MON & "." & @YEAR & " - " & @HOUR & ":" & @MIN & ":" & @SEC & "] " & $text & @CRLF)
EndFunc -
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
-
Hi, so:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#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)Global $iCounter1 = 5, $iCounter2 = 5
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$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
WEndFunc deine_counter_1()
[/autoit] [autoit][/autoit] [autoit]
If $iCounter1 >= 0 Then
GUICtrlSetData($Label1, $iCounter1)
$iCounter1 -= 1
Else
AdlibUnRegister("deine_counter_1")
EndIf
EndFunc ;==>deine_counter_1Func deine_counter_2()
[/autoit]
If $iCounter2 >= 0 Then
GUICtrlSetData($Label2, $iCounter2)
$iCounter2 -= 1
Else
AdlibUnRegister("deine_counter_2")
EndIf
EndFunc ;==>deine_counter_2 -
Man kann die Dateien doch per Drag&Drop in den gewünschten Ordner ziehen!?
-
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.
-
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? -
Also das Bild ist 164x314 Pixel groß
-
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.
-
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
-
Ist bei mir auch so, wenn ich die inner GUI ganz schnell verschiebe. Kannst es aber bestimmt mit
[autoit]_WinAPI_RedrawWindow
[/autoit]lösen.
-
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
-
Hier ein Beispiel, was sehr verbesserungsbedürftig ist (Fehlerabfragen etc.):
Spoiler anzeigen
[autoit]Global $networkadapter[1][2]
[/autoit] [autoit][/autoit] [autoit]_GetNetworkadapterInf()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If _getMac() <> 'deineMACAdresse' Then ExitFunc _getMac() ;Die erste Mac-Adresse
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($networkadapter) - 1
If $networkadapter[$i][1] <> '' Then Return $networkadapter[$i][1]
Next
EndFunc ;==>_getMacFunc _GetNetworkadapterInf()
[/autoit]
$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 -
Ich denke mal dein Script hat nicht die nötigen Rechte dazu. Versuchs mal so:
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
;Prüfen ob die SETAcl vorhanden ist
$setacl = "D:\Tools\SetACL.exe"
$ProgDir="C:\Program Files (x86)\Altec\"
If FileExists($setacl) Then;Rechte setzen
[/autoit]
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