Hallo oh-ha,
scha dir
[autoit]_ExcelReadSheetToArray
[/autoit]mfg (Auto)Bert
Hallo oh-ha,
scha dir
[autoit]_ExcelReadSheetToArray
[/autoit]mfg (Auto)Bert
Zitat von Mr_gitarreEine Frage noch!:
$Ws_Ex_Topmost -) zuständig für Die Button Schließen, Groß und Kleinmachen
und
$WS_popup -) nimmt den Rand weg, richtig?
falsch siehe Deutsche Hilfe
Zitat$WS_EX_TOPMOST Legt fest, dass ein Fenster mit diesem Stil vor allen anderen Fenstern platziert werden soll und auch dann das vorderste Fenster bleibt, selbst wenn das Fenster deaktiviert wird.
der Stil $WS_popup alleine ergibt alles was du oben beschrieben hast,
mfg (Auto)Bert
Hallo MrB,
habe dein Skript mit einem Bild von mir getestet. 2 kleine Ändernugen waren nötig:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
Global $hGUI, $hImage, $hGraphic, $path = "C:\Dokumente und Einstellungen\Bert\Eigene Dateien\Beetle7.png"
[/autoit] [autoit][/autoit] [autoit]$x = x()
$y = y()
$hGUI = GUICreate("fk", $x, $y, (@DesktopWidth / 2) - 132, (@DesktopHeight / 2) - 132, $WS_POPUP, $WS_EX_TRANSPARENT)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($path)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]HotKeySet("^!x", "MeinExit")
[/autoit] [autoit][/autoit] [autoit]$msg2 = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]Select
Case $msg2 = $gui_event_close
Exit
EndSelect
WEnd
; Ressourcen aufräumen
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
; PNG Bild zeichnen
Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_PAINT
Func x()
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($path)
$x = _GDIPlus_ImageGetWidth($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Return $x
EndFunc ;==>x
Func y()
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($path)
$y = _GDIPlus_ImageGetHeight($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Return $y
EndFunc ;==>y
Func MeinExit()
Exit
EndFunc
mfg (Auto)Bert
Hallo PokerFace,
ich habe weiter getestet, es sind auch später noch Fehler möglich, deshalb noch ein Änderungsvorschlag:
Case $Search2
$PathFolder = FileSelectFolder("Ordner auswählen", "", 4)
$FolderFileList = _FileListToArray($PathFolder, "*.mp3")
;_ArrayDisplay($FolderFileList)
If IsArray($FolderFileList) = 0 Then
MsgBox(0, "Fehler", "Es ist kein Lied im Ordner!")
EndIf
For $z = 1 To UBound($FolderFileList) - 1
ConsoleWrite("suche ID3Tags für " & $FolderFileList[$z])
$TitelTag = _ID3ReadTag($PathFolder & "\" & $FolderFileList[$z], 1, -1, 1)
If IsArray($TitelTag) Then
If $TitelTag[0] > 0 Then
$TitelTag = StringSplit($TitelTag[1], "|")
;_ArrayDisplay($TitelTag)
$TitelTag2 = $TitelTag[UBound($TitelTag) - 1]
If $TitelTag2 <> "" Then
ConsoleWrite(" FOUND")
$TitelTag2 = StringReplace($TitelTag2, ".", "")
$TitelTag2 = StringReplace($TitelTag2, Chr(0), "")
$Link = "http://images.google.de/images?um=1&hl=de&tbs=isch%3A1&sa=1&q=" & StringReplace($TitelTag2, " ", "+") & "+Cover+jpg&btnG=Suche&aq=f&oq=&start=0"
$sSource = __InetGetSource($Link)
$aPic = StringRegExp($sSource, "(?>href=/imgres\?imgurl=)(.+?)(?>&imgrefurl=)", 3)
InetGet($aPic[$z], $PathFolder & "\Cover-" & $TitelTag2 & ".jpg", 1)
GUICtrlDelete($Pic1)
$Pic1 = GUICtrlCreatePic($PathFolder & "\Cover-" & $TitelTag2 & ".jpg", 544, 72, 305, 305, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState($Pic1, $GUI_ONTOP)
Else
ConsoleWrite(" NOT FOUND")
EndIf
EndIf
EndIf
ConsoleWrite(@CRLF)
Next
MsgBox(0, "Fertig", "Vorgang erfolgreich ausgeführt! Die Cover sind im selben Ordner wie die Musik!")
du solltest dir den Ordner von FileSelectFolder merken (INI), damit man bei der nächsten Verzeichnissuche sich nicht wieder durch den ganzen Verzeichnisbaum klicken muss,
mfg (Auto)Bert
Hallo PokerFace,
der von JuraX beschriebene Fehler tritt auf wenn für ein Lieder kein ID3-Tag gefunden wird, du solltest dein Skript daher so abändern:
Case $Search2
$PathFolder = FileSelectFolder("Ordner auswählen", "", 4)
$FolderFileList = _FileListToArray($PathFolder, "*.mp3")
_ArrayDisplay($FolderFileList)
If IsArray($FolderFileList) = 0 Then
MsgBox(0, "Fehler", "Es ist kein Lied im Ordner!")
EndIf
For $z = 1 To UBound($FolderFileList) - 1
ConsoleWrite("suche ID3Tags für " & $FolderFileList[$z])
$TitelTag = _ID3ReadTag($PathFolder & "\" & $FolderFileList[$z], 1, -1, 1)
If IsArray($TitelTag) Then
ConsoleWrite(" FOUND")
$TitelTag = StringSplit($TitelTag[1], "|")
$TitelTag2 = $TitelTag[UBound($TitelTag) - 1]
$TitelTag2 = StringReplace($TitelTag2, ".", "")
$TitelTag2 = StringReplace($TitelTag2, Chr(0), "")
$Link = "http://images.google.de/images?um=1&hl=de&tbs=isch%3A1&sa=1&q=" & StringReplace($TitelTag2, " ", "+") & "+Cover+jpg&btnG=Suche&aq=f&oq=&start=0"
$sSource = __InetGetSource($Link)
$aPic = StringRegExp($sSource, "(?>href=/imgres\?imgurl=)(.+?)(?>&imgrefurl=)", 3)
InetGet($aPic[$z], $PathFolder & "\Cover-" & $TitelTag2 & ".jpg", 1)
GUICtrlDelete($Pic1)
$Pic1 = GUICtrlCreatePic($PathFolder & "\Cover-" & $TitelTag2 & ".jpg", 544, 72, 305, 305, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUICtrlSetState($Pic1, $GUI_ONTOP)
Else
ConsoleWrite(" NOT FOUND")
EndIf
ConsoleWrite(@CRLF)
Next
MsgBox(0, "Fertig", "Vorgang erfolgreich ausgeführt! Die Cover sind im selben Ordner wie die Musik!")
desweiteren solltest du noch einen Zähler einbauen, wieviele Covers gefunden bzw. nicht gefunden wurden und die MsgBox entsprechend anpassen,
mfg (Auto)Bert
ja, siehe [ offen ] Inetget "vergisst" die Endung
Hallo PokerFace,
nach @progandys Post, hier die dazu passende Lösung:
[autoit]$TitelTag2 = "Cover-Meet me halfway" & chr(0)
$PathFolder = FileSelectFolder("Bitte Ordner auswählen","c:\")
MsgBox(0,"Ohne StringReplace",$PathFolder & "\Cover-" & $TitelTag2 & ".jpg")
$TitelTag = StringReplace($TitelTag2,chr(0),"")
MsgBox(0,"Nach Stringreplace",$PathFolder & "\Cover-" & $TitelTag & ".jpg")
mfg (Auto)Bert
Hallo Pokerface,
Beispiel für MsgBox:
[autoit]$TitelTag2 = "Cover-Meet me halfway"
$PathFolder = FileSelectFolder("Bitte Ordner auswählen","c:\")
MsgBox(0,"",$PathFolder & "\Cover-" & $TitelTag2 & ".jpg")
funktioniert das bei dir nicht
Dann solltest du dir einen neuen Compi zulegen, wenn deiner so vergesslich ist ![]()
mfg (Auto)Bert
Hallo Pokerface,
poste doch bitte das Skript und die dazugehörigen Buttons, dann ist es einfacher zu helfen,
mfg (Auto)Bert
Hallo Skysurfer,
wie hast du das Icon den eingebunden? Über
mfg (Auto)Bert
Zitat von severWas hat das mit einem Keylogger zutun?
Na ja könnte auch unter Kategorie Spassprogramm um "Freunde" zu erschrecken fallen
Zitat von sever[autoit]Alles anzeigenHotKeySet("a", "TestFunc1")
[/autoit]
HotKeySet("b", "TestFunc2")
...
Func TestFunc1()
Send ("q")
EndFunc
...
du fängst Tasten ab und sendest (verändert) diese. Also Forenregeln
Edit: mit einer "französischen Tastatur" hat dieses Skript jedenfalls nichts zu tun
mfg (Auto)Bert
Eigentlich hat sich die Sache erledigt aber kann mir mal einer sagen warum meiner nicht funktioniert?
Dann ist es ja gut und du kannst dein Thema auf gelöst setzen. Dein Skript ist stark Keyylogger verdächtig
mfg (Auto)Bert
Hallo pete_gzome,
schau dir auch Fremddateien "includen" (ohne FileInstall) von BugFix
und http://www.autoitscript.com/forum/index.php?showtopic=51103&st=0 an,
mfg (Auto)Bert
Hast du auf das Datum geschaut? Leichenschänder!
Schau dir Tasten mittels ScanCode umbelegen an,
mfg (Auto)Bert
Hallo PokerFace,
bin mir zwar nicht sicher ob ich dich richtig verstanden habe, aber der Stil $WS_CLIPSIBLINGS beim erzeugen des 1. Bildes sollte reichen. Ich mache es solche Sachen mit einer Child-Gui siehe Beispiel (grosser Close-Button) :
mfg (Auto)Bert
Hallo cobain86,
die beiden funcs werden ausgeführt, habe es mit folgendem abgeändertem Skript getestet:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <IE.au3>
Global $ntpServer = '0.de.pool.ntp.org' ; NTP-Server zum synchronisieren der Uhrzeit über das Internet
Dim $i = 0
Dim $wartezeit = 2
#region ### START Koda GUI section ### Form=c:\users\steven\desktop\autoit projekt\hauptseite.kxf
$Form1_1 = GUICreate("Zeitkommentar", 268, 383, 192, 124)
$quit_btn = GUICtrlCreateButton("Quit", 144, 96, 75, 25, $WS_GROUP)
$Save_btn = GUICtrlCreateButton("Speichern", 48, 96, 75, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Countdown:", 48, 40, 178, 17)
$Label2 = GUICtrlCreateLabel("Aktuelle Zeit:", 48, 16, 178, 17)
$Edit1 = GUICtrlCreateEdit("tee", 40, 152, 193, 193)
$Label3 = GUICtrlCreateLabel("Wartezeit:", 48, 64, 52, 17)
$wartezeit_inp = GUICtrlCreateInput(" ", 120, 64, 73, 21)
GUICtrlSetData(-1, "3")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
AdlibRegister("_timer", 1000)
AdlibRegister("_TimeSync", 600)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
AdlibUnRegister("_TimeSync")
AdlibUnRegister("_timer")
Exit
Case $quit_btn
AdlibUnRegister("_TimeSync")
AdlibUnRegister("_timer")
Exit
Case $Save_btn
Save()
MsgBox(0, "Test", "Die Wartezeit wurde auf " & $wartezeit & " Gesetzt")
EndSwitch
WEnd
Func Save()
$wartezeit = GUICtrlRead($wartezeit_inp)
EndFunc ;==>Save
;hier Beginnt der Durchlauf Counter
Func _timer()
ConsoleWrite("TIMER" & @CRLF)
$sek = StringRight(_TimeSync(), 2)
If $sek = 30 Or $sek = 50 Then
ConsoleWrite("Sek " & $sek & " " & $i)
$i = +1
If $i = $wartezeit Then
_IECreate("www.google.com", 1, 1, 0);hier muss die Funktion rein die dann nach ablauf ausgeführt werden soll
$i = 0
EndIf
EndIf
GUICtrlSetData($Label1, "Countdown: " & $i)
EndFunc ;==>_timer
Func _TimeSync()
ConsoleWrite("TIMESYNC" & @CRLF)
UDPStartup()
Dim $socket = UDPOpen(TCPNameToIP($ntpServer), 123)
;$status = UDPSend($socket, MakePacket('1b0e010000000000000000004c4f434ccb1eea7b866665cb00000000000000000000000000000000cb1eea7b866665cb'))
Local $status = UDPSend($socket, MakePacket('1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'))
Local $data = '', $a = TimerInit() ; Timer setzen, damit im Fehlerfall die Schleife abgebrochen wird
While $data = ''
$data = UDPRecv($socket, 100)
Sleep(100)
If TimerDiff($a) > 1000 Then ExitLoop ; Wenn Timer > 1sek. (Fehler), dann Schleife verlassen
WEnd
If $data <> '' Then
UDPCloseSocket($socket)
UDPShutdown()
Local $unsignedHexValue = StringMid($data, 83, 8); Extract time from packet. Disregards the fractional second.
Local $value = UnsignedHexToDec($unsignedHexValue)
Local $TZinfo = _Date_Time_GetTimeZoneInformation()
Local $TZoffset = -(UnsignedToLong($TZinfo[1]) + (UnsignedToLong($TZinfo[4]) * ($TZinfo[0] < 2)) + (UnsignedToLong($TZinfo[7]) * ($TZinfo[0] = 2)))
Local $UTC = _DateAdd('s', $value, '1900/01/01 00:00:00')
Sleep(100)
;Return _DateAdd('n',$TZoffset,$UTC)
$uhr = StringSplit(_DateAdd('n', $TZoffset, $UTC), " ")
GUICtrlSetData($Label2, "Aktuelle Zeit: " & $uhr[2])
Return $uhr[2]
EndIf
EndFunc ;==>_TimeSync
Func MakePacket($d)
Local $p = ''
While $d
$p &= Chr(Dec(StringLeft($d, 2)))
$d = StringTrimLeft($d, 2)
WEnd
Return $p
EndFunc ;==>MakePacket
Func UnsignedHexToDec($n)
Local $ones = StringRight($n, 1)
$n = StringTrimRight($n, 1)
Return Dec($n) * 16 + Dec($ones)
EndFunc ;==>UnsignedHexToDec
Func UnsignedToLong($value)
Local Const $OFFSET_4 = 4294967296
Local Const $MAXINT_4 = 2147483647
If $value < 0 Or $value >= $OFFSET_4 Then Return SetError(1, 0, $value) ;' Overflow
If $value <= $MAXINT_4 Then
Return $value
Else
Return $value - $OFFSET_4
EndIf
EndFunc ;==>UnsignedToLong
Ergebnis:
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
Sek 30 0TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
Sek 50 1TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
TIMER
TIMESYNC
TIMESYNC
Alles anzeigen
Deine Zähler werden ja nur bei exakt 30 oder 50 erhöht, daher werden sie selten erhöht. Eine kleine INet-Störung und schon wird der Punkt verpasst.
Edit: Fehler in Zeile 57:
[autoit]$i += 1 ;<============== $i = +1 war falsch
[/autoit]mfg (Auto)Bert
Hallo freaky,
ich habe es gerade eben noch einmal heruntergeladen und getestet. Es fuunktioniert bei mir einwandfrei. Hast du Änderungen vorgenommen (z.B. in der while Schleife) ?
mfg (Auto)Bert
Nett, man könnte aber mehr draus machen
Zum Beispiel? Natürlich kann man daraus mehr machen, aber mir fällt nichts sinnvolles ein
wie wäre es mit einer UDF, wie in deiner Vorlage (ohne GDI+) von FKFK,
mfg (Auto)Bert