anhbinhvodanh Posted November 14, 2013 Share Posted November 14, 2013 I am a Vietnam should not issue standard english expect people to sympathize. I want to ask for letters AutoIt source text running on the gui from left to right, top to bottom is smooth. in the forum had a post this topic but I do not find out. can't you help me. thank so much. Link to comment Share on other sites More sharing options...
Xenobiologist Posted November 14, 2013 Share Posted November 14, 2013 (edited) expandcollapse popup#include <GUIConstants.au3> Opt("GUIOnEventMode", 1) Global $txt = 'Ein Lagerregal steht im Lager.' #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 633, 198, 193, 115) GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close") $label = GUICtrlCreateLabel('Texteffekt beginnend bei Position $start', 72, 50, 481, 17) $Input1 = GUICtrlCreateInput("", 72, 72, 481, 21) GUICtrlSetFont(-1, 9, 400, Default, "Courier New") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 _txt_eff__move_string_through_text($Form1, $Input1, $txt, 9, 300) Sleep(2000) GUIDelete($Form1) Exit WEnd Func Form1Close() Exit EndFunc ;=============================================================================== ; ; Description: Move a string through the given text in the given control. ; Syntax: _txt_eff__move_string_through_text($winhandle, $control_id, [$text, [$start=1, [$delay, [$string, [$show_complete_text]]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $string - string to move through, $show_complete_text - 0: uncover text while animatione / 1: show it from start on ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_string_through_text($winhandle, $control_id, $text = "", $start=1, $delay = 100, $string = "->", $show_complete_text = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = $start To StringLen($text) + 1 $out_string = StringLeft($text, $i - 1) & $string If $show_complete_text = 1 Then $out_string = $out_string & StringRight($text, StringLen($text) - $i - StringLen($string)) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_string_through_text Func _IsStatic($winhandle, $control_id) Local $ret = DllCall("user32.dll", "int", "GetClassName", "hwnd", ControlGetHandle($winhandle, "", $control_id), "str", "", "int", 128) If StringInStr($ret[2], "Static") <> 0 Then Return 1 Return 0 EndFunc ;==>_IsStatic expandcollapse popup#include <Color.au3> #include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) $Width = 550 $Height = 500 $Form = GUICreate("Text Effect", $Width, $Height, -1, -1) GUISetBkColor(0x666666) GUISetState() GUISetOnEvent($GUI_EVENT_CLOSE, "Quit") TextEffect("Text Effect !", 15, 300, 50, 40, 10, 20, 0x000000, 0x00FF00, 25, 25, 1, 1) TextEffect("Text Effect !", 35, 200, 50, 40, 10, 20, 0x000000, 0xFF0000, 25, 25, 1, 1) TextEffect("Text Effect !", 55, 100, 50, 40, 10, 20, 0x000000, 0x0000FF, 25, 25, 1, 1) While 1 Sleep(100) WEnd Func TextEffect($Text, $Left, $Top, $Fontsize, $Fontspace, $Step, $Delay, $Color, $Color2, $Colorstep, $Colorstep2, $Shadow, $Gradient) $Color = Colors($Color, $Color2, $Colorstep, $Colorstep2) $Letters = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9" $Let = StringSplit($Letters, ",", 1) $Len = StringLen($Text) Local $Control[$Len + 1], $Fontspace2 = 0 For $i = 1 To $Len $pLeft = (($Left + ($i * $Fontspace)) - $Fontspace2) - $Fontspace $Control[$i] = GUICtrlCreateLabel("", $pLeft, 0, $Fontspace, $Fontspace * 2) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, $Fontsize) $sLeft = StringLeft($Text, $i) If $i <> 1 Then $sLeft = StringTrimLeft($sLeft, $i - 1) If $sLeft <> " " Then For $z = 1 To $Step GUICtrlSetPos(-1, $pLeft, $z * ($Top / $Step)) $Text2 = $Let[Random(1, UBound($Let) - 1, 1)] GUICtrlSetData(-1, $Text2) GUICtrlSetColor(-1, $Color[$z * ($Colorstep / $Step)]) Sleep($Delay) Next EndIf GUICtrlSetData(-1, $sLeft) If $Gradient = 1 Then If $i < $Len / 2 Then GUICtrlSetColor(-1, $Color[$Colorstep - ($i * (($Colorstep / 2) / ($Len / 2)))]) Else GUICtrlSetColor(-1, $Color[($Colorstep / 2) + (($i - ($Len / 2)) * (($Colorstep / 2) / ($Len / 2)))]) EndIf EndIf If $Shadow = 1 Then GUICtrlCreateLabel($sLeft, $pLeft - 3, $Top + 3, $Fontspace, $Fontspace * 2) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetColor(-1, $Color[$Step / 1.2]) GUICtrlSetFont(-1, $Fontsize) GUICtrlSetPos($Control[$i], $pLeft, $Top) EndIf If $sLeft = "i" Or $sLeft = "i" Then $Fontspace2 += $Fontspace / 2 If $sLeft = "f" Or $sLeft = "l" Then $Fontspace2 += $Fontspace / 2.5 Next EndFunc ;==>TextEffect Func Colors($nStartColor = 0x00FF00, $nEndColor = 0x000000, $Step = 50, $Step2 = 50) Local $color1R = _ColorGetRed($nStartColor) Local $color1G = _ColorGetGreen($nStartColor) Local $color1B = _ColorGetBlue($nStartColor) Local $nStepR = (_ColorGetRed($nEndColor) - $color1R) / $Step2 Local $nStepG = (_ColorGetGreen($nEndColor) - $color1G) / $Step2 Local $nStepB = (_ColorGetBlue($nEndColor) - $color1B) / $Step2 For $i = 1 To $Step $sColor = "0x" & StringFormat("%02X%02X%02X", $color1R + $nStepR * $i, $color1G + $nStepG * $i, $color1B + $nStepB * $i) If $i = 1 Then $Colors = $sColor Else $Colors &= "," & $sColor EndIf Next $Colors = StringSplit($Colors, ",", 1) Return $Colors EndFunc ;==>Colors Func Quit() DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form, "int", 500, "long", 0x00090000) Exit EndFunc ;==> expandcollapse popup; ================================================ ; V E R S I O N 1 . 9 . 3 ; ================================================ ; ; This is as far as I know the frist AutoIt UDF ; dealing with text animations. I myself believe ; that such an easy but impressing effect can be ; very uesfull. ; I hope you like it. Feel free to post comments ; in the AutoIt forums or email me at ; peter_opali@gmx.de! ; ; peethebee, Germany ; ; ; Special Thanks to: ; - "gafrost" for his solution of the ; WinXPSP2/W2k problem ; ; ; Short summary of all effect functions: ; ; _txt_eff__about_messages ; _txt_eff__airport ; _txt_eff__blink ; _txt_eff__broad ; _txt_eff__color_sequence ; _txt_eff__color_to_color ; _txt_eff__enlarge_from_left ; _txt_eff__enlarge_from_right ; _txt_eff__mix_up_chars ; _txt_eff__move_cap_char_through_text ; _txt_eff__move_in_from_left ; _txt_eff__move_in_from_right ; _txt_eff__move_out_to_left ; _txt_eff__move_out_to_right ; _txt_eff__move_small_char_through_text ; _txt_eff__move_string_through_text ; _txt_eff__raining ; _txt_eff__rainbow ; _txt_eff__scroll_through_options ; _txt_eff__show_text_behind_char ; _txt_eff__small ; _txt_eff__spin ; _txt_eff__spotlight ; _txt_eff__style ; _txt_eff__uncover_from_wall_to_wall ; _txt_eff__wave ; _txt_eff__zoom ; ; ================================================= #include-once #include <String.au3> #include <math.au3> #include <Array.au3> #include <Color.au3> ; --------------------------------- ; --------------------------------- ; ---- 1. pure text animation ---- ; --------------------------------- ; --------------------------------- ;=============================================================================== ; ; Description: Enlarge the given text in the given control from left to right. ; Syntax: _txt_eff__enlarge_from_left($winhandle, $control_id, [$text, [$delay, [$over_old]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $over_old - 0: delete old text before starting / 1: do not delete it ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__enlarge_from_left($winhandle, $control_id, $text = "", $delay = 100, $over_old = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $over_old = 1 Then $orig_text = ControlGetText($winhandle, "", $control_id) If StringLen($orig_text) < StringLen($text) Then For $i = StringLen($orig_text) To StringLen($text) $orig_text = $orig_text & " " Next ElseIf StringLen($orig_text) > StringLen($text) Then For $i = StringLen($text) To StringLen($orig_text) $text = $text & " " Next EndIf EndIf For $i = 1 To StringLen($text) $out_string = StringLeft($text, $i) If $over_old = 1 Then $out_string = $out_string & " " & StringTrimLeft($orig_text, $i + 2) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Return 1 EndFunc ;==>_txt_eff__enlarge_from_left ;=============================================================================== ; ; Description: Enlarge the given text in the given control from right to left. ; Syntax: _txt_eff__enlarge_from_right($winhandle, $control_id, [$text, [$delay , [$over_old]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), , $over_old - 0: delete old text before starting / 1: do not delete it ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Only looks good when using a monospace font like Courier New ; ;=============================================================================== Func _txt_eff__enlarge_from_right($winhandle, $control_id, $text = "", $delay = 100, $over_old = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $over_old = 1 Then $orig_text = ControlGetText($winhandle, "", $control_id) If StringLen($orig_text) < StringLen($text) Then For $i = StringLen($orig_text) To StringLen($text) $orig_text = $orig_text & " " Next ElseIf StringLen($orig_text) > StringLen($text) Then For $i = StringLen($text) To StringLen($orig_text) $text = $text & " " Next EndIf EndIf For $i = 1 To StringLen($text) $out_string = StringRight($text, $i) If $over_old = 1 Then $out_string = StringTrimRight($orig_text, $i + 2) & " " & $out_string If $i = StringLen($text) - 1 Then ExitLoop Else For $j = $i To StringLen($text) - 1 $out_string = " " & $out_string Next EndIf If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $over_old = 1 Then If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, " " & StringRight($text, StringLen($text) - 1)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__enlarge_from_right ;=============================================================================== ; ; Description: Move a given text in the given control in from left side. ; Syntax: _txt_eff__move_in_from_left($winhandle, $control_id, [$text, [$delay]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_in_from_left($winhandle, $control_id, $text = "", $delay = 100) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To StringLen($text) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, StringRight($text, $i)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next EndFunc ;==>_txt_eff__move_in_from_left ;=============================================================================== ; ; Description: Move a given text in the given control out to left side. ; Syntax: _txt_eff__move_out_to_left($winhandle, $control_id, [$text, [$delay]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_out_to_left($winhandle, $control_id, $text = "", $delay = 100) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = StringLen($text) To 0 Step -1 If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, StringRight($text, $i)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_out_to_left ;=============================================================================== ; ; Description: Move a given text in the given control in from right side. ; Syntax: _txt_eff__move_in_from_right($winhandle, $control_id, [$text, [$delay , [$text_min_width]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $text_min_width - enlarge the text to this min length if it shorter ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Only looks good when using a monospace font like Courier New ; ;=============================================================================== Func _txt_eff__move_in_from_right($winhandle, $control_id, $text = "", $delay = 100, $text_min_width = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $text_min_width <> 0 Then For $i = StringLen($text) To $text_min_width $text = $text & " " Next EndIf For $i = 1 To StringLen($text) $out_string = StringLeft($text, $i) For $j = $i To StringLen($text) - 1 $out_string = " " & $out_string Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Return 1 EndFunc ;==>_txt_eff__move_in_from_right ;=============================================================================== ; ; Description: Move a given text in the given control out to right side. ; Syntax: _txt_eff__move_out_to_right($winhandle, $control_id, [$text, [$delay, [$text_min_width]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $text_min_width - enlarge the text to this min length if it shorter ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Only looks good when using a monospace font like Courier New ; ;=============================================================================== Func _txt_eff__move_out_to_right($winhandle, $control_id, $text = "", $delay = 100, $text_min_width = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $text_min_width <> 0 Then For $i = StringLen($text) To $text_min_width $text = $text & " " Next EndIf For $i = StringLen($text) To 0 Step -1 $out_string = StringLeft($text, $i) For $j = $i To StringLen($text) - 1 $out_string = " " & $out_string Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_out_to_right ;=============================================================================== ; ; Description: Uncover a given text in the given control behind a given password char. ; Syntax: _txt_eff__show_text_behind_char($winhandle, $control_id, [$text, [$delay, [$char]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $char - the foregroud char ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__show_text_behind_char($winhandle, $control_id, $text = "", $delay = 100, $char = "*") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 0 To StringLen($text) $out_string = StringLeft($text, $i) ; Add specified char for every char that's still "covered" For $j = 1 To StringLen($text) - $i $out_string = $out_string & $char Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Return 1 EndFunc ;==>_txt_eff__show_text_behind_char ;=============================================================================== ; ; Description: Move a string through the given text in the given control. ; Syntax: _txt_eff__move_string_through_text($winhandle, $control_id, [$text, [$delay, [$string, [$show_complete_text]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $string - string to move through, $show_complete_text - 0: uncover text while animatione / 1: show it from start on ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_string_through_text($winhandle, $control_id, $text = "", $delay = 100, $string = "->", $show_complete_text = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To StringLen($text) + 1 $out_string = StringLeft($text, $i - 1) & $string If $show_complete_text = 1 Then $out_string = $out_string & StringRight($text, StringLen($text) - $i - StringLen($string)) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_string_through_text ;=============================================================================== ; ; Description: Shows a airport-like effect in the given control. ; Syntax: _txt_eff__airport($winhandle, $control_id, [$text, [$delay, [$start_char, [$skip_chars]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $start_char - char to start the scrolling with (ASCII-Order), $skip_chars - number of chars to skip in every step ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__airport($winhandle, $control_id, $text = "", $delay = 100, $start_char = "A", $skip_chars = 1) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To StringLen($text) $act_char = StringMid($text, $i, 1) For $j = Asc($start_char) To Asc($act_char) Step $skip_chars $out_string = StringLeft($text, $i - 1) & Chr($j) For $k = 1 To StringLen($text) - $i $out_string = $out_string & Chr($j) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__airport ;=============================================================================== ; ; Description: Spins a given text around in the given control. ; Syntax: _txt_eff__spin($winhandle, $control_id, [$text, [$delay, [$num_spins, [$spin_delay]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $num_spins - number of spins, $spin_delay - delay between 2 spin-arounds ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__spin($winhandle, $control_id, $text = "", $delay = 100, $num_spins = "1", $spin_delay = 0) If $spin_delay = "" Then $spin_delay = $delay If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To $num_spins Sleep($spin_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) For $j = 1 To Round(StringLen($text) / 2) - 1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft($text, $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next For $j = Round(StringLen($text) / 2) - 1 To 1 Step -1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft(_StringReverse($text), $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, _StringReverse($text)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) For $j = 1 To Round(StringLen($text) / 2) - 1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft(_StringReverse($text), $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next For $j = Round(StringLen($text) / 2) - 1 To 1 Step -1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft($text, $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Return 1 EndFunc ;==>_txt_eff__spin ;=============================================================================== ; ; Description: Widens a given text in the given control. ; Syntax: _txt_eff__broad($winhandle, $control_id, [$text, [$delay, [$char, [$go_back, [$delay_before_go_back]]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $char - char to insert into original text, $go_back - 1: call the ...small effect after widening it / 0: do not call it, $delay_before_go_back - time to wait before going back ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__broad($winhandle, $control_id, $text = "", $delay = 100, $char = " ", $go_back = "0", $delay_before_go_back = 500) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $rounds = StringLen($text) - 1 For $i = 1 To $rounds $num_left = $i + ($i - 1) * StringLen($char) $left = StringLeft($text, $i + ($i - 1) * StringLen($char)) $right = StringRight($text, StringLen($text) - $num_left) $text = $left & $char & $right If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If $go_back = "1" Then Sleep($delay_before_go_back) _txt_eff__small($winhandle, $control_id, $delay * 0.55, $char) ; _txt_eff__broad is about 45 % faster than _txt_eff__small EndIf Return 1 EndFunc ;==>_txt_eff__broad ;=============================================================================== ; ; Description: Smallens a given text in the given control. ; Syntax: _txt_eff__small($winhandle, $control_id, [$delay, [$char]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $delay - Animation speed (1 = fast, 1000 = slow), $char - char to remove ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None; fixed in v1.9.1 ; ;=============================================================================== Func _txt_eff__small($winhandle, $control_id, $delay = 100, $char = " ") $del_counter = 0 $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $out_string = $text For $i = StringLen($text) To 1 Step -1 Sleep($delay) If (StringMid($out_string, $i, 1) = $char) And ($del_counter < 1) Then $out_string = StringLeft($out_string, $i - 1) & StringTrimLeft($out_string, $i) $del_counter = $del_counter + 1 Else $del_counter = 0 EndIf If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Return 1 EndFunc ;==>_txt_eff__small ;=============================================================================== ; ; Description: Shows a rain like effect, all letters are falling doiwn. ; Syntax: _txt_eff__raining($winhandle, $control_id, [$text, [$delay, [$duration, [$over_old]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $duration = maximum effect time (ms), $over_old - 0: Remove old text before startin effect / 1: Do not remove it ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__raining($winhandle, $control_id, $text = "", $delay = 50, $duration = 3000, $over_old = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $over_old = 1 Then $orig_text = ControlGetText($winhandle, "", $control_id) $out_string = $orig_text If StringLen($orig_text) < StringLen($text) Then For $i = StringLen($orig_text) To StringLen($text) $out_string = $out_string & " " Next ElseIf StringLen($orig_text) > StringLen($text) Then For $i = StringLen($text) To StringLen($orig_text) $text = $text & " " Next EndIf Else $out_string = "" For $i = 1 To StringLen($text) $out_string = $out_string & " " Next EndIf $time = 0 While $time <= $duration - $delay Sleep($delay) $pos = Random(1, StringLen($text), 1) $out_string = StringLeft($out_string, $pos - 1) & StringMid($text, $pos, 1) & StringTrimLeft($out_string, $pos) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) $time = $time + $delay WEnd If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__raining ;=============================================================================== ; ; Description: Moves a capital letter trough the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__move_cap_char_through_text($winhandle, $control_id, $text = "", $delay = 50, $effect_width_chars = 1, $direction = "to_right", $convert_to_small = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $direction = "to_left" Then $start = StringLen($text) - StringLen($effect_width_chars) $end = 0 $step = -1 Else $start = 0 $end = StringLen($text) - StringLen($effect_width_chars) $step = 1 EndIf $res_text = $text If $convert_to_small = 1 Then $res_text = StringLower($text) For $i = $start To $end Step $step Sleep($delay) $left = StringLeft($res_text, $i) $middle = StringUpper(StringMid($res_text, $i + 1, $effect_width_chars)) $right = StringTrimLeft($res_text, $i + $effect_width_chars) $out_string = $left & $middle & $right If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_cap_char_through_text ;=============================================================================== ; ; Description: Moves a small letter trough the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__move_small_char_through_text($winhandle, $control_id, $text = "", $delay = 50, $effect_width_chars = 1, $direction = "to_right", $convert_to_caps = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $direction = "to_left" Then $start = StringLen($text) - StringLen($effect_width_chars) $end = 0 $step = -1 Else $start = 0 $end = StringLen($text) - StringLen($effect_width_chars) $step = 1 EndIf $res_text = $text If $convert_to_caps = 1 Then $res_text = StringUpper($text) For $i = $start To $end Step $step Sleep($delay) $left = StringLeft($res_text, $i) $middle = StringLower(StringMid($res_text, $i + 1, $effect_width_chars)) $right = StringTrimLeft($res_text, $i + $effect_width_chars) $out_string = $left & $middle & $right If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_small_char_through_text ;=============================================================================== ; ; Description: Scrolls through several options until the target text is found. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__scroll_through_options($winhandle, $control_id, $options, $target_text = "", $delay = 50) If $target_text = "" Then $target_text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 0 To UBound($options) - 1 Sleep($delay) $out_string = $options[$i] If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If $out_string = $target_text Then ExitLoop Next Return 1 EndFunc ;==>_txt_eff__scroll_through_options ;=============================================================================== ; ; Description: Uncovers the text going from left to right and ack until everything is uncovered. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__uncover_from_wall_to_wall($winhandle, $control_id, $text = "", $delay = 50, $turn_arounds = 1) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $turn_arounds = $turn_arounds + 1 ; better for internal use $out_string = "" For $i = 1 To StringLen($text) $out_string = $out_string & " " Next For $i = 1 To $turn_arounds $start = $i $end = _Floor(StringLen($text) / $turn_arounds) * $turn_arounds If Mod(StringLen($text), $turn_arounds) >= $i Then $end = $end + $i Else $end = $end - $turn_arounds + $i EndIf If Mod($i, 2) = 1 Then ; ungerade $step = $turn_arounds Else _Swap($start, $end) $step = -$turn_arounds EndIf For $j = $start To $end Step $step Sleep($delay) $out_string = _StringInsertAtPos($out_string, $j, StringMid($text, $j, 1)) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Next Return 1 EndFunc ;==>_txt_eff__uncover_from_wall_to_wall ;=============================================================================== ; ; Description: Simulates a wave through the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__wave($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 3, $uncover_after_effect = 1, $direction = "to_right") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $orig_text = $text $empty_string = "" For $i = 1 To StringLen($text) + $effect_width * 2 $empty_string = $empty_string & " " Next For $i = 1 To $effect_width $text = " " & $text & " " Next If $direction = "to_right" Then $start = 1 $end = StringLen($text) + $effect_width * 2 $step = 1 Else $start = StringLen($text) + $effect_width * 2 $end = 1 $step = -1 EndIf For $i = $start To $end Step $step Sleep($delay) $out_string = _StringInsertAtPos($empty_string, $i, StringMid($text, $i, $effect_width)) $out_string = StringTrimLeft(StringTrimRight($out_string, $effect_width), $effect_width) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $uncover_after_effect = 1 Then Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $orig_text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__wave ;=============================================================================== ; ; Description: Shows a customizable blink effect. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any other case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6, possible types: "all", "periodic", "parts", advanced: "all": none, "periodic": step, "parts": array containing cutting positions ; ;=============================================================================== Func _txt_eff__blink($winhandle, $control_id, $text = "", $show_delay = 50, $hide_delay = 50, $blink_type = "all", $advanced = "", $repetitions = 1) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $blink_type = "all" Then For $i = 1 To $repetitions Sleep($hide_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($show_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) ElseIf $blink_type = "periodic" Then For $j = 1 To $repetitions For $i = 1 To $advanced $start = $i $end = _Floor(StringLen($text) / $advanced) * $advanced If Mod(StringLen($text), $advanced) >= $i Then $end = $end + $i Else $end = $end - $advanced + $i EndIf If Mod($i, 2) = 1 Then ; ungerade $step = $advanced Else _Swap($start, $end) $step = -$advanced EndIf $out_string = "" For $m = 1 To StringLen($text) $out_string = $out_string & " " Next For $k = $start To $end Step $step $out_string = _StringInsertAtPos($out_string, $k, StringMid($text, $k, 1)) Next Sleep($hide_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($show_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) ElseIf $blink_type = "parts" Then For $j = 1 To $repetitions If IsArray($advanced) <> 1 Then $advanced = StringSplit($advanced, ".") _ArrayReverse($advanced) _ArrayPop($advanced) _ArrayReverse($advanced) EndIf For $i = -1 To UBound($advanced) - 1 $out_string = "" For $m = 1 To StringLen($text) - 1 $out_string = $out_string & " " Next If $i = -1 Then $out_string = _StringInsertAtPos($out_string, 0, StringMid($text, 1, $advanced[0])) ElseIf $i = UBound($advanced) - 1 Then $out_string = _StringInsertAtPos($out_string, $advanced[$i] + 1, StringMid($text, $advanced[$i] + 1, StringLen($text) - $advanced[$i])) Else $out_string = _StringInsertAtPos($out_string, $advanced[$i] + 1, StringMid($text, $advanced[$i] + 1, $advanced[$i + 1] - $advanced[$i])) EndIf Sleep($hide_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($show_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__blink ;=============================================================================== ; ; Description: Mixes up two chars and goes through the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__mix_up_chars($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 1, $direction = "to_right") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $orig_text = $text For $i = 1 To $effect_width $text = " " & $text & " " Next If $direction = "to_right" Then $start = 1 $end = StringLen($text) + $effect_width ; *2 $step = 1 Else $start = StringLen($text) + $effect_width $end = 1 $step = -1 EndIf For $i = $start To $end Step $step Sleep($delay) $first_char = StringMid($text, $i, 1) $second_char = StringMid($text, $i + $effect_width, 1) If _IsCap($second_char) = 1 Then $first_char_res = StringUpper($first_char) ElseIf _IsCap($second_char) = 2 Then $first_char_res = StringLower($first_char) Else $first_char_res = $first_char EndIf If _IsCap($first_char) = 1 Then $second_char_res = StringUpper($second_char) ElseIf _IsCap($first_char) = 2 Then $second_char_res = StringLower($second_char) Else $second_char_res = $second_char EndIf $out_string = _StringInsertAtPos($text, $i, $second_char_res) $out_string = _StringInsertAtPos($out_string, $i + $effect_width, $first_char_res) $out_string = StringTrimLeft(StringTrimRight($out_string, $effect_width), $effect_width) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $orig_text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__mix_up_chars ;=============================================================================== ; ; Description: Highlights some chars and goes through the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6, $display_type: 0 - show only effect, 1 - show text with effect, 2 - show whole text ; ;=============================================================================== Func _txt_eff__spotlight($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 1, $highlighting_start_char = "(", $highlighting_end_char = ")", $display_type = 2, $direction = "to_right") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $orig_text = $text If $direction = "to_right" Then $start = 1 $end = StringLen($text) $step = 1 Else $start = StringLen($text) $end = 1 $step = -1 EndIf For $i = $start To $end Step $step Sleep($delay) If $display_type = 0 Then $empty_string = "" For $j = 1 To StringLen($text) $empty_string = $empty_string & " " Next $char = StringMid($text, $i, $effect_width) $out_string = _StringInsertAtPos($empty_string, $i + $effect_width, $highlighting_end_char, 0) $out_string = _StringInsertAtPos($out_string, $i, $char) $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0) ElseIf $display_type = 1 Then $out_string = StringLeft($text, $i) $out_string = _StringInsertAtPos($out_string, $i + $effect_width, $highlighting_end_char, 0) $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0) Else $out_string = _StringInsertAtPos($text, $i + $effect_width, $highlighting_end_char, 0) $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0) EndIf If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $orig_text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__spotlight ;=============================================================================== ; ; Description: Shows a about box with many different effects. ; Syntax: _txt_eff__about_messages($winhandle, $control_id, $texts, [$delay, [$showtime, [$pause, [$type]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow), $showtime - time the single message is shown (also possible: array with values correspondenting to $texts), $pause - time to wait until the next message is displayed, $type - type of the animation: "raining, "right_to_left", "left_to_right", "right_to_right", "left_to_left", "enlarge_from_left", "enlarge_from_right", "zoom_big_to_small", "zoom_small_to_big", "move_cap_char", "move_small_char", "wall_to_wall", "blink", "wave", "mix_up", "spotlight", "fade", "rainbow", "modern" ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - if $texts is an array ; 0 - if $texts is no array ; 2 - if $type is no valid type ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__about_messages($winhandle, $control_id, $texts, $delay = 50, $showtime = 2000, $pause = 750, $type = "right_to_left") If IsArray($texts) <> 0 Then Local $static = _IsStatic($winhandle, $control_id) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If ($type = "right_to_left") Or ($type = "left_to_right") Or ($type = "left_to_left") Or ($type = "right_to_right") Then $text_min_width = 14 For $i = 0 To UBound($texts) - 1 If StringLen($texts[$i]) > $text_min_width Then $text_min_width = StringLen($texts[$i]) Next $text_min_width = $text_min_width + 5 ElseIf $type = "modern" Then ; ------- parameters ------- Local $_l_height = 20 ; height of a single line (label) Local $_no_color = 0xECE9D8 Local $_black = 0x000000 Local $_messages = 5 Dim $_labels[$_messages] ; enlarge Arrray For $k = 1 To $_messages _ArrayInsert($texts, 0, "") _ArrayInsert($texts, UBound($texts), "") Next $_txt_eff_about_gui = GUICreate("About", 250, $_l_height + 20 + $_l_height * $_messages + 60) ; the about win's title, width and height here $_txt_eff_gui_ok_button = GUICtrlCreateButton("&Ok", 10, $_l_height + 20 + $_l_height * $_messages + 25, 230, 25, $BS_DEFPUSHBUTTON) For $k = 1 To $_messages $_style = $SS_CENTER ; styles are located here! $_labels[$k - 1] = GUICtrlCreateLabel("[Error]", 10, 50 + 25 * $k, 210, $_l_height, $_style) Next GUISetState(@SW_SHOW) For $k = 0 To UBound($texts) - $_messages GUICtrlSetColor($_labels[$_messages - 1], 0xECE9D8) For $p = 0 To $_messages - 1 GUICtrlSetPos($_labels[$p], 19, $_l_height + 20 + $_l_height * $p, 210, $_l_height) GUICtrlSetData($_labels[$p], $texts[$k + $p]) Next For $c = 0 To -$_l_height Step -1 ; control's height is here again Sleep($delay) GUISetState(@SW_LOCK) ; move For $z = 0 To $_messages - 1 GUICtrlSetPos($_labels[$z], 19, $_l_height + 20 + $_l_height * $z + $c, 210, $_l_height) Next ; fade $red_diff = _ColorGetRed($_black) - _ColorGetRed($_no_color) $green_diff = _ColorGetGreen($_black) - _ColorGetGreen($_no_color) $blue_diff = _ColorGetBlue($_black) - _ColorGetBlue($_no_color) $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_l_height * ($c + $_l_height + 1)), 2) $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_l_height * ($c + $_l_height + 1)), 2) $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_l_height * ($c + $_l_height + 1)), 2) GUICtrlSetColor($_labels[0], "0x" & $red_res & $green_res & $blue_res) $red_diff = _ColorGetRed($_no_color) - _ColorGetRed($_black) $green_diff = _ColorGetGreen($_no_color) - _ColorGetGreen($_black) $blue_diff = _ColorGetBlue($_no_color) - _ColorGetBlue($_black) $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_l_height * ($c + $_l_height + 1)), 2) $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_l_height * ($c + $_l_height + 1)), 2) $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_l_height * ($c + $_l_height + 1)), 2) GUICtrlSetColor($_labels[$_messages - 1], "0x" & $red_res & $green_res & $blue_res) GUISetState(@SW_UNLOCK) ; check if close event is there $_about_msg = GUIGetMsg() If $_about_msg = $GUI_EVENT_CLOSE Or $_about_msg = $_txt_eff_gui_ok_button Then ExitLoop 2 Next Next GUIDelete($_txt_eff_about_gui) Else For $i = 0 To UBound($texts) - 1 If IsArray($showtime) = 1 Then $real_showtime = $showtime[$i] Else $real_showtime = $showtime EndIf Sleep($pause) Select Case $type = "right_to_left" _txt_eff__move_in_from_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Sleep($real_showtime) _txt_eff__move_out_to_left($winhandle, $control_id, $texts[$i], $delay) Case $type = "left_to_right" _txt_eff__move_in_from_left($winhandle, $control_id, $texts[$i], $delay) Sleep($real_showtime) _txt_eff__move_out_to_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Case $type = "raining" _txt_eff__raining($winhandle, $control_id, $texts[$i], $delay, Round($real_showtime / 3), 1) Sleep($real_showtime) Case $type = "right_to_right" _txt_eff__move_in_from_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Sleep($real_showtime) _txt_eff__move_out_to_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Case $type = "left_to_left" _txt_eff__move_in_from_left($winhandle, $control_id, $texts[$i], $delay) Sleep($real_showtime) _txt_eff__move_out_to_left($winhandle, $control_id, $texts[$i], $delay) Case $type = "enlarge_from_left" _txt_eff__enlarge_from_left($winhandle, $control_id, $texts[$i], $delay, 1) Sleep($real_showtime) Case $type = "enlarge_from_right" _txt_eff__enlarge_from_right($winhandle, $control_id, $texts[$i], $delay, 1) Sleep($real_showtime) Case $type = "zoom_big_to_small" _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 20, 14, 1, "Times New Roman", 0) Sleep($real_showtime) _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 14, 2, 2, "Times New Roman", 1) Case $type = "zoom_small_to_big" _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 2, 14, 2, "Times New Roman", 0) Sleep($real_showtime) _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 14, 20, 1, "Times New Roman", 1) Case $type = "move_cap_char" _txt_eff__move_cap_char_through_text($winhandle, $control_id, $texts[$i], $delay, 1, "to_right", 0) Sleep($real_showtime) Case $type = "move_small_char" _txt_eff__move_small_char_through_text($winhandle, $control_id, $texts[$i], $delay, 1, "to_right", 1) Sleep($real_showtime) Case $type = "wall_to_wall" _txt_eff__uncover_from_wall_to_wall($winhandle, $control_id, $texts[$i], $delay, 1) Sleep($real_showtime) Case $type = "blink" _txt_eff__blink($winhandle, $control_id, $texts[$i], $delay, 500, "all", "", 2) Sleep($real_showtime) Case $type = "wave" _txt_eff__wave($winhandle, $control_id, $texts[$i], $delay, 3, 1, "to_right") Sleep($real_showtime) Case $type = "mix_up" _txt_eff__mix_up_chars($winhandle, $control_id, $texts[$i], $delay, 1, "to_right") Sleep($real_showtime) Case $type = "spotlight" _txt_eff__spotlight($winhandle, $control_id, $texts[$i], $delay, 1, "<", ">", 2, "to_right") Sleep($real_showtime) Case $type = "fade" _txt_eff__fade_in($winhandle, $control_id, $texts[$i], 1000, 100, "win_xp_bg") Sleep($real_showtime) _txt_eff__fade_out($winhandle, $control_id, $texts[$i], 1000, 100, "win_xp_bg") Case $type = "rainbow" _txt_eff__rainbow($winhandle, $control_id, $texts[$i], $delay, Round($delay / 10), 0) Sleep($real_showtime) Case Else Return 2 EndSelect Next EndIf Return 1 Else Return 0 EndIf EndFunc ;==>_txt_eff__about_messages ; --------------------------------- ; --------------------------------- ; ----- 2. control animation ----- ; --------------------------------- ; --------------------------------- ;=============================================================================== ; ; Description: Zooms the text in the control in or out. ; Syntax: _txt_eff__zoom($winhandle, $control_id, [$text, [$delay, [$start_size, [$end_size, [$step, [$font, [$remove]]]]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - the text for the animation, $delay - Animation speed (1 = fast, 1000 = slow), $start_size - font size at the begining of the effect, $end_size - font size at the end of the effect, $step - step on de-/increasing the font size, $font - font name, $remove 0: Don't remove text after effect / 1: remove text after effect ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Minimum size should be 2. If $text is left empty, cthe current control's text will be used. Step has to be positiv in any case. ; Questions to solve: ; How to read the current font size and name of the control?? ; How to make the control resize itself to the text's width and height?? ;=============================================================================== Func _txt_eff__zoom($winhandle, $control_id, $text = "", $delay = 50, $start_size = 9, $end_size = 2, $step = 1, $font = "Courier New", $remove = 0) $start_ctrl_pos = ControlGetPos($winhandle, "", $control_id) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) If $start_size > $end_size Then $step = -($step) For $i = $start_size To $end_size Step $step Sleep($delay) GUICtrlSetFont($control_id, $i, -1, -1, $font) If $i = $start_size Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) GUISetState(@SW_UNLOCK, $winhandle) EndIf Next If $remove = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") GUISetState(@SW_UNLOCK, $winhandle) ControlMove($winhandle, "", $control_id, $start_ctrl_pos[0], $start_ctrl_pos[1], $start_ctrl_pos[2], $start_ctrl_pos[3]) EndIf Return 1 EndFunc ;==>_txt_eff__zoom ;=============================================================================== ; ; Description: Sets the text italic, underlined or bold. ; Syntax: ; Parameter(s): ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): types: italic, underline, bold ; Questions to solve: ; How to read out text size and so on on the func's startup? ;=============================================================================== Func _txt_eff__style($winhandle, $control_id, $text = "", $type = "bold", $font = "Courier New", $remove = 1, $show_time = 1500) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) GUISetState(@SW_LOCK, $winhandle) If $type = "bold" Then GUICtrlSetFont($control_id, -1, 800, -1, $font) ElseIf $type = "underline" Then GUICtrlSetFont($control_id, -1, -1, 4, $font) ElseIf $type = "italic" Then GUICtrlSetFont($control_id, -1, -1, 2, $font) EndIf GUISetState(@SW_UNLOCK, $winhandle) If $remove = 1 Then Sleep($show_time) GUISetState(@SW_LOCK, $winhandle) GUICtrlSetFont($control_id, -1, 400, 0, $font) GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__style ; --------------------------------- ; --------------------------------- ; ----- 3. colourful effects ----- ; --------------------------------- ; --------------------------------- ;=============================================================================== ; ; Description: Changes the text color in the given order and time. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): $colors can be either an array or a string ; Question: Can this be used in "foreign" windows too? ; Look into the current help file to see, which controls are supported ;=============================================================================== Func _txt_eff__color_sequence($winhandle, $control_id, $text = "", $delay = 50, $colors = "black.green.blue. 0xffffff") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If IsArray($colors) <> 1 Then $colors = StringStripWS($colors, 8) ; delete all spaces $colors = StringSplit($colors, ".") ; kill first element _ArrayReverse($colors) _ArrayPop($colors) _ArrayReverse($colors) EndIf For $i = 0 To UBound($colors) - 1 Sleep($delay) $color = $colors[$i] If StringIsXDigit($color) = 0 Then $color = _GetColorByName($color) GUICtrlSetColor($control_id, $color) Next Return 1 EndFunc ;==>_txt_eff__color_sequence ;=============================================================================== ; ; Description: Changes the text color in the order of the rainbow. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): $colors can be either an array or a string ; Look into the current help file to see, which controls are supported ;=============================================================================== Func _txt_eff__rainbow($winhandle, $control_id, $text = "", $duration_per_change = 2000, $precision = 50, $direction = 0) If $direction = 0 Then _txt_eff__color_to_color($winhandle, $control_id, $text, $duration_per_change, "black.red.orange.yellow.green.blue.violet.black", $precision) Else _txt_eff__color_to_color($winhandle, $control_id, $text, $duration_per_change, "black.violet.blue.green.yellow.orange.red.black", $precision) EndIf EndFunc ;==>_txt_eff__rainbow ;=============================================================================== ; ; Description: Permorms a fade from one color to another. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Look into the current help file to see, which controls are supported ;=============================================================================== Func _txt_eff__color_to_color($winhandle, $control_id, $text = "", $duration_per_change = 2000, $colors = "black. white", $precision = 100) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If IsArray($colors) <> 1 Then $colors = StringStripWS($colors, 8) ; delete all spaces $colors = StringSplit($colors, ".") ; kill first element _ArrayReverse($colors) _ArrayPop($colors) _ArrayReverse($colors) EndIf For $i = 0 To UBound($colors) - 2 If StringIsXDigit($colors[$i]) = 0 Then $start_color = _GetColorByName($colors[$i]) Else $start_color = $colors[$i] EndIf If StringIsXDigit($colors[$i + 1]) = 0 Then $end_color = _GetColorByName($colors[$i + 1]) Else $end_color = $colors[$i + 1] EndIf For $j = 1 To $precision Sleep(Round($duration_per_change / $precision)) $red_diff = _ColorGetRed($end_color) - _ColorGetRed($start_color) $green_diff = _ColorGetGreen($end_color) - _ColorGetGreen($start_color) $blue_diff = _ColorGetBlue($end_color) - _ColorGetBlue($start_color) $red_res = Hex(_ColorGetRed($start_color) + Round($red_diff / $precision * $j), 2) $green_res = Hex(_ColorGetGreen($start_color) + Round($green_diff / $precision * $j), 2) $blue_res = Hex(_ColorGetBlue($start_color) + Round($blue_diff / $precision * $j), 2) GUICtrlSetColor($control_id, "0x" & $red_res & $green_res & $blue_res) If $j = 1 And $i = 0 Then If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Next Next Return 1 EndFunc ;==>_txt_eff__color_to_color ; Fades a text out (black to $color) Func _txt_eff__fade_out($winhandle, $control_id, $text = "", $duration = 2500, $precision = 100, $color = "white") _txt_eff__color_to_color($winhandle, $control_id, $text, $duration, "black. " & $color, $precision) Local $static = _IsStatic($winhandle, $control_id) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndFunc ;==>_txt_eff__fade_out ; Fades a text out ($color to black) ; ; How to get the background color of an control? ; How to calculate a harmonious color (for background)? ; Func _txt_eff__fade_in($winhandle, $control_id, $text = "", $duration = 2500, $precision = 100, $color = "white") _txt_eff__color_to_color($winhandle, $control_id, $text, $duration, $color & ". black", $precision) EndFunc ;==>_txt_eff__fade_in ; --------------------------------- ; --------------------------------- ; ----- 4. helping functions ----- ; --------------------------------- ; --------------------------------- Func _StringInsertAtPos($string, $pos, $insert, $overwrite = 1) If $overwrite = 0 Then Return StringLeft($string, $pos - 1) & $insert & StringTrimLeft($string, $pos - 1) Else Return StringLeft($string, $pos - 1) & $insert & StringTrimLeft($string, $pos - 1 + StringLen($insert)) EndIf EndFunc ;==>_StringInsertAtPos ; Source: Help file Func _Swap(ByRef $a, ByRef $b) ;swaps two vars Local $t $t = $a $a = $b $b = $t EndFunc ;==>_Swap Func _IsCap($char) If Asc($char) < 90 And Asc($char) > 65 Then Return 1 ElseIf Asc($char) < 122 And Asc($char) > 97 Then Return 2 Else Return 0 EndIf EndFunc ;==>_IsCap ; Created with help of XDrop 0.17 Func _GetColorByName($name) Select Case $name = "black" Return "0x000000" Case $name = "white" Return "0xffffff" Case $name = "red" Return "0xff0000" Case $name = "blue" Return "0x0000ff" Case $name = "green" Return "0x00ff00" Case $name = "yellow" Return "0xffff00" Case $name = "violet" Return "0xAE7BE1" Case $name = "win_xp_bg" Return "0xECE9D8" EndSelect EndFunc ;==>_GetColorByName Func _IsStatic($winhandle, $control_id) Local $ret = DllCall("user32.dll", "int", "GetClassName", "hwnd", ControlGetHandle($winhandle, "", $control_id), "str", "", "int", 128) If StringInStr($ret[2], "Static") <> 0 Then Return 1 Return 0 EndFunc ;==>_IsStatic Quit Edited November 14, 2013 by Xenobiologist Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now