Cool gemacht
Mein Rekord: 23Sek.
Gruss Roger[MSIE_newline_end ]
Beiträge von RogerSt
-
-
Super Script.
Mit Texturen stimmt es zwas noch nicht, aber der Effekt sieht auch cool aus.
-
MMM
Deine for schleife ist schöner als meine.
Irgendwie ist es noch zu früh für mich.
Gruss Roger
-
Coole Idee
Ich habe das Script mal etwas gekürtzt, da ich es so übersichtlicher finde.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#NoTrayIcon
#include <Date.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("TrayMenuMode", 1)
$Form1 = GUICreate("GDI+ Summencode-Led Uhr", 215, 250, @DesktopWidth-215, @DesktopHeight-280, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x000000)
$Label1 = GUICtrlCreateLabel("", 0, 0, 215, 250, Default, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)
$context = GUICtrlCreateContextMenu($Label1)
$hide = GUICtrlCreateMenuItem("Ausblenden", $context)
GUICtrlCreateMenuItem("", $context)
$exit = GUICtrlCreateMenuItem("Beenden", $context)
$show = TrayCreateItem("Anzeigen")
TrayCreateItem("")
$exittray = TrayCreateItem("Exit")_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$grafik = _GDIPlus_GraphicsCreateFromHWND($Form1)
$brushledoff = _GDIPlus_BrushCreateSolid(0xFF441A00)
$brushledon =_GDIPlus_BrushCreateSolid(0xFFFFA100)For $l = 0 to 8
[/autoit]
_GDIPlus_GraphicsFillEllipse($grafik, 30, 40+(20*$l), 12, 12, $brushledoff)
_GDIPlus_GraphicsFillEllipse($grafik, 50, 40+(20*$l), 12, 12, $brushledoff)
_GDIPlus_GraphicsFillEllipse($grafik, 90, 40+(20*$l), 12, 12, $brushledoff)
_GDIPlus_GraphicsFillEllipse($grafik, 110, 40+(20*$l), 12, 12, $brushledoff)
_GDIPlus_GraphicsFillEllipse($grafik, 150, 40+(20*$l), 12, 12, $brushledoff)
_GDIPlus_GraphicsFillEllipse($grafik, 170, 40+(20*$l), 12, 12, $brushledoff)
Next
Do
$msg = GUIGetMsg()
$tmsg = TrayGetMsg()
Select
Case $msg = $hide
WinMove($Form1, "", @DesktopWidth, @DesktopHeight-280, Default, Default, 5)
TraySetState(1)
GUISetState(@SW_HIDE)
Case $msg = $exit
Exit
Case $tmsg = $exittray
Exit
Case $tmsg = $show
GUISetState(@SW_Show)
WinMove($Form1, "", @DesktopWidth-215, @DesktopHeight-280, Default, Default, 5)
TraySetState(2)
EndSelect
$stu1 = Stringmid(_Nowtime(), 1, 1)
$stu2 = Stringmid(_Nowtime(), 2, 1)
$min1 = Stringmid(_Nowtime(), 4, 1)
$min2 = Stringmid(_Nowtime(), 5, 1)
$sek1 = Stringmid(_Nowtime(), 7, 1)
$sek2 = Stringmid(_Nowtime(), 8, 1)
_LedColDrawActive(30, $stu1, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(50, $stu2, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(90, $min1, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(110, $min2, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(150, $sek1, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(170, $sek2, $grafik, $brushledoff, $brushledon)
Until $msg = $GUI_EVENT_CLOSE
Func _Update()
$mp = WinGetPos("GDI+ Summencode-Led Uhr")
While $mp[0] And $mp[1] < -10
$mp = WinGetPos("GDI+ Summencode-Led Uhr")
$stu1 = Stringmid(_Nowtime(), 1, 1)
$stu2 = Stringmid(_Nowtime(), 2, 1)
$min1 = Stringmid(_Nowtime(), 4, 1)
$min2 = Stringmid(_Nowtime(), 5, 1)
$sek1 = Stringmid(_Nowtime(), 7, 1)
$sek2 = Stringmid(_Nowtime(), 8, 1)
_LedColDrawActive(30, $stu1, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(50, $stu2, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(90, $min1, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(110, $min2, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(150, $sek1, $grafik, $brushledoff, $brushledon)
_LedColDrawActive(170, $sek2, $grafik, $brushledoff, $brushledon)
WEnd
EndFunc
Func _LedColDrawActive($x, $num, $hgraphic, $brushoff, $brushon)
for $ii = 0 to 8 - $num
_GDIPlus_GraphicsFillEllipse($hgraphic, $x, 40+(20*$ii), 12, 12, $brushoff)
Next
$ii2 = 8 - $num + 1
For $ii = 8 to $ii2 Step -1
_GDIPlus_GraphicsFillEllipse($hgraphic, $x, 40+(20*$ii), 12, 12, $brushon)
Next
EndFuncGruss Roger
-
Hallo Oscar
Die Idee ist ja nicht schlecht, aber du kannst nur auslesen, was du genau kennst.
Warum machst du nicht einen Loop über den Uninstall part der Registry und suchst den eintrag?
So musst du keine Liste pflegen.
Gruss Roger
-
Hallo SEuBo
Super dank für den Tip.
Das funktioniert ohne Probleme und einfacher als meine Lösung.
Ich habe noch eine andere Lösung für mich gebaut.
[autoit]Local $oElement
[/autoit]
Local $oElements
$oElements = _IETagNameAllGetCollection($oIE)
For $oElement In $oElements
If $oElement.tagname = "TD" And $oElement.innerText = "Logout" Then
_IEAction($oElement, "click")
EndIf
NextGruss Roger
-
Hallo zusammen
Habe mit der Suchfunktion leider nichts gefunden.
Darum hier meine Frage.
Ich habe ein Script um mit dem IE die ladezeiten, bei gewissen aktionen, einer Web seite zu messen.
Nun will ich am schluss noch ein Logout machen.Im Quelltext der Seite wird der Logout mit folgender Function gemacht
Codefunction openLogoutPopUp(){ if (YESORNOCOMMITMENT && !YESORNOCOMMITMENT.closed) { YESORNOCOMMITMENT.close(); } YESORNOCOMMITMENT = self.open('Hier stehr ein Teil der Popup URL','YESORNOCOMMITMENT','width=400,height=200'); }
Diesen Code möchte ich nun von AutoIt her aufrufen, weiss aber nicht wie ich das machen kann.
Bin für jeden Tip dankbar.
Gruss Roger
-
Hallo Slin
Ich habe auch eine Update funktion geschrieben.
Ich schaue, welche Version die exe hat und wenn sie neuer ist, wird die aktuelle exe umbenannt und dann die neue version kopiert.
Beim start schaue ich noch, ob es eine umbenannte Version hat.
Dies funktioniert bei mir super gut.
Hier noch der Source meiner Update Funktion.
[autoit]
[/autoit]
Func MYUPDATE($anyway)
TraySetIcon("TelHoererUpd.ico")
WriteLog("Checken, ob es ein Update gibt")
$UPDATEPATH = "\\server\dir\"
$SCRIPTPATH = @ScriptDir & "\"
$SCRIPTNAME = StringLeft(@ScriptName, StringLen(@ScriptName) - 4)
$SCRIPTEXTENSION = StringRight(@ScriptName, 3)
If FileExists($UPDATEPATH & @ScriptName) Then
$VER = FileGetVersion($UPDATEPATH & @ScriptName)
$VER2 = FileGetVersion(@ScriptName)
If FileExists($SCRIPTPATH & $SCRIPTNAME & "_autoback.exe") Then
WriteLog("Alte version löschen")
FileDelete($SCRIPTPATH & $SCRIPTNAME & "_autoback.exe")
EndIf
If $VER > $VER2 Or $anyway = True Then
WriteLog("Aus der aktuellen Version ein Backup kreieren")
FileMove(@ScriptFullPath, $SCRIPTPATH & $SCRIPTNAME & "_autoback.exe")
WriteLog("Neue Version kopieren")
FileCopy($UPDATEPATH & @ScriptName, $SCRIPTPATH & $SCRIPTNAME & "." & $SCRIPTEXTENSION, 1)
WriteLog("Neue Version Starten")
Run($SCRIPTPATH & $SCRIPTNAME & "." & $SCRIPTEXTENSION)
WriteLog("Alte Version beenden")
Exit
EndIf
EndIf
TraySetIcon("TelHoerer.ico")
EndFuncGruss Roger
-
-
-
-
-
Ein Script kann nicht laufen, wenn der Bildschirm gesperrt ist.
Ich hatte mal das selbe problem. Allerdings wollte ich nur ein Fenster schliessen, schlussendlich habe ich den Prozess abgeschossen.
Anders funktionierte es leider nicht.
Gruss Roger
-
Was passiert, wenn du die app einfach schliesst, ohne dich abzumelden?
Unsere Telsoft meldet sich ab, wenn der Prozess geschlossen wird.
Kann ja sein, dass du einen Bluescreen oder sonst einen Absturtz hast und dann musst du ja auch abgemledet werden.
-
Hallo Roggazzz
Dein Stringreplace kann nicht funktionieren.
Schau mal in die Help
Du musst das ganze einer neun Variable zuweisen.
Hier wird im Text "Dies ist eine Zeile mit Text" der Teil Zeile durch nummer ersetzt.
[autoit]$text = StringReplace("Dies ist eine Zeile mit Text", "Zeile", "nummer")
[/autoit]somit steht in $text nun "Dies ist eine nummer mit text"
Dann geht es
Gruss Roger
-
Hallo sc4ry
Ich habe bei uns im Geschäft ein ähnliches problem.
Ich habs so gelöst, dass ich schaue, ob der Bildschirm gelockt ist.
Ich schaue also nicht auf einen Hotkey. (Was ist, wenn man den Bildschirm via CTRL-ALT-Delete und dann Lock den Bildschirm sperrt??? dann wird dein Hotkey nie benutzt)
Hab den Teil, um zu schauen, ob der Screen gelockt wurde aus einem Forum. (Weiss aber nicht mehr, ob aus diesem Forum, oder aus dem Englischen. Kann somit leider auch keinen Link auf das Post geben)
Hier die Funktion, die ich brauche.
[autoit]Func _IsLocked()
[/autoit]
$hDesktop = DllCall("User32.dll", "int", "OpenDesktop", "str", "Default", "int", 0, "int", 0, "int", $DESKTOP_SWITCHDESKTOP)
$ret = DllCall("User32.dll", "int", "SwitchDesktop", "int", $hDesktop[0])
DllCall("User32.dll", "int", "CloseDesktop", "int", $ret[0])
If $ret[0] Then
;ConsoleWrite("unlocked" & @lf)
$bScreenSaverAktiv = False
Return SetError(0, 0, 0)
Else
;ConsoleWrite("Locked" & @lf)
If isScreensaverOn() = 1 Then
;ConsoleWrite("Screensaver on" & @LF)
$bScreenSaverAktiv = True
Return SetError(0, 0, 0)
Else
Return SetError(0, 0, 1)
EndIf
EndIf
EndFunc ;==>_IsLockedWenn der Screen gelockt ist, checke ich auch noch, ob der Bildschirmschoner läuft. Wenn der läuft, dann kann es ja sein, dass man am Arebitsplatz ist, aber gerade etwas anderes macht.
Für den Bildschirmschoner schaue ich einfach, ob es einen Process gibt, der mit .scr endet. (Dies sind ja die Bildschirmschoner)
Hier meine Funktion um den Bildschirmschoner zu checken.
[autoit]Func isScreensaverOn()
[/autoit]
; 1 = on , 0 = off
Local $list = ProcessList()
For $i = 1 To $list[0][0]
If StringInStr($list[$i][0], ".scr") Then Return 1
Next
Return 0
EndFunc ;==>isScreensaverOn
Dann melde ich mich an der Tel. Anlage nicht ab.Funktioniert bei mir super.
Gruss Roger
-
Hallo Oscar
Danke für die neue Version.
Leider wird der 2'te Monitor noch immer nicht gesperrt.
Sonst echt cool.
Gruss Roger
-
Hallo Oscar
Nicht schlecht dein Script.
Guter Effekt.
Auch wenn ich denke, es macht nicht allzu viel Sinn.
Leider funktioniert es mit 2 Monitoren nicht richtig.
Gruss Roger
-
Nur noch zur Info
Leider hats nicht funktioniert, um rauszufinden, ob ein Monitor läuft oder nicht.
Ich habe aber eine Funktion gefunden, mit der ich feststellen kann, ob der Bildschirm gesperrt ist oder nicht.
So konnte ich mein Programmtechnisches problem lösen.
Hier noch die Funktion, die ich aus einem Forum habe. (Weiss aber nicht mehr welches)
Spoiler anzeigen
Func _IsLocked()
$hDesktop = DllCall("User32.dll", "int", "OpenDesktop", "str", "Default", "int", 0, "int", 0, "int", $DESKTOP_SWITCHDESKTOP)
$ret = DllCall("User32.dll", "int", "SwitchDesktop", "int", $hDesktop[0])
DllCall("User32.dll", "int", "CloseDesktop", "int", $ret[0])If $ret[0] Then
Return SetError(0, 0, 0)
Else
Return SetError(0, 0, 1)
EndIf
EndFunc ;==>_IsLockedGruss Roger
-
Dank funkey
Werd am Wochenende mal damit rumspielen.
Vieleicht bringt mich das weiter.
Schönes Wochenende
Gruss Roger