Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Thanks a lot for your help! I'm sorry if I didn't replied, but I was sick 🤒
  3. Today
  4. Hello sir, how about toggle "listen to this device" in microphone properties. Can we using autoit.? i cant found some reference, maybe you can help
  5. He is referring to my post above, with regards to Rovers code, here is a complete step by step version: nb: I'm going to use C:\AutoItScript directory as an example just change it to where ever you wish to save your script a. Copy "C:\Program Files (x86)\AutoIt3\Include\RichEdit.au3" to "C:\AutoItScripts\RichEdit.au3" b: Rename: "C:\AutoItScripts\RichEdit.au3" to "C:\AutoItScripts\RichEditEx.au3" b. Open "C:\AutoItScripts\RichEditEx.au3" in Scite c. At line 25 add the following variables: Global Const $DROPEFFECT_COPY = 1 Global Const $DROPEFFECT_MOVE = 2 Global Const $MK_ALT = 0x20 Global Const $MK_CONTROL = 0x8 Global $iMode, $hDragSource, $_GRE_sRTFClassName d. Replace the following function nb: On my version of RichEditEx.au3 it starts at line 3707 ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name...........: __RichCom_Object_GetDragDropEffect ; Description ...: ; Syntax.........: __RichCom_Object_GetDragDropEffect ( $pObject, $bDrag, $iGrfKeyState, $piEffect ) ; Parameters ....: ; Return values .: ; Author ........: ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: ; =============================================================================================================================== Func __RichCom_Object_GetDragDropEffect($pObject, $bDrag, $iGrfKeyState, $piEffect) #forceref $pObject, $bDrag, $iGrfKeyState, $piEffect Return $_GCR_E_NOTIMPL EndFunc ;==>__RichCom_Object_GetDragDropEffect With ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name...........: __RichCom_Object_GetDragDropEffect ; Description ...: ; Syntax.........: __RichCom_Object_GetDragDropEffect($pObject, $fDrag, $grfKeyState, $pdwEffect) ; Parameters ....: ; Return values .: ; Author ........: ; Modified.......: rover 2k12 ; Remarks .......: Patch to demonstrate issue with RichEdit defaulting to DROPEFFECT_COPY+DROPEFFECT_MOVE for drag and drop events between source/destination ($pdwEffect value = 3) ; ...............: Drop Effect should change depending on source/destination. Key modifiers should work the same way as Wordpads RichEdit (MS WordPad would be a RichEdit standard I assume?) ; Related .......: ; Link ..........: ; Example .......: ; =============================================================================================================================== Func __RichCom_Object_GetDragDropEffect($pObject, $fDrag, $grfKeyState, $pdwEffect) #forceref $pObject, $fDrag, $grfKeyState, $pdwEffect If $fDrag Then ;only sent once at start of drag within same edit or between edits in script process ;TRUE if the query is for a IDropTarget::DragEnter or IDropTarget::DragOver. FALSE if the query is for IDropTarget::Drop. $hDragSource = _WinAPI_GetFocus() ;get drag source handle (only used for comparing to another AutoIt Richedit control) Return $_GCR_E_NOTIMPL EndIf If $grfKeyState = ($MK_CONTROL + $MK_ALT) Then $grfKeyState = 0 ; A Ctrl/Alt key combination does a drag copy between windows, so might as well allow for it. Switch $grfKeyState ;= 0 or key modifier only when mouse released, now we set the drop effect Case 0, $MK_CONTROL, $MK_ALT ;_WinAPI_GetFocus() not working here, always returns source handle of 1st richedit when over 2nd richedit in same gui Local $tDROPEFFECT = DllStructCreate("dword", Ptr($pdwEffect)) Local $tPoint = DllStructCreate($tagPOINT) Local $iOpt = Opt("MouseCoordMode", 1) DllStructSetData($tPoint, "x", MouseGetPos(0)) DllStructSetData($tPoint, "y", MouseGetPos(1)) Opt("MouseCoordMode", $iOpt) Local $hWnd = _WinAPI_WindowFromPoint($tPoint) $iMode = $DROPEFFECT_COPY ;default: $MK_LBUTTON Or $MK_RBUTTON - DD between source/destination If $grfKeyState = $MK_ALT Then $iMode = $DROPEFFECT_MOVE ;DD between source/destination If $hDragSource = $hWnd And (IsHWnd($hDragSource) + IsHWnd($hWnd)) <> 0 Then $iMode = $DROPEFFECT_COPY + $DROPEFFECT_MOVE ;DD within same edit (No key, $MK_ALT or $MK_CONTROL modifier keys) DllStructSetData($tDROPEFFECT, 1, $iMode) $hDragSource = 0 ;reset source handle (not set for a drag from an external process ($fDrag = False )) EndSwitch Return $_GCR_E_NOTIMPL EndFunc ;==>__RichCom_Object_GetDragDropEffect e. Save "C:\AutoItScripts\RichEditEx.au3" f. Create a new script: "C:\AutoItScripts\RichEdit_DragDrop_Example.au3" g. Paste the following and run, you should now be able to drag and drop urls from browser into either of the RIchEdit text boxes: #include <GUIConstantsEx.au3> #include "GuiRichEditEx.au3" #include <WindowsConstants.au3> #Include <GuiScrollBars.au3> #include <ScrollBarConstants.au3> #include <WinAPI.au3> #include <Misc.au3> Opt("GUIOnEventMode", 1) Opt('MustDeclareVars', 1) Global $g_iDLLUser32 = DllOpen("User32.dll"), $g_idRich1, $g_idRich2 _DualRichEdit() Func _DualRichEdit() Local $hForm = GUICreate("", 600, 300, -1, -1,-1 ,BitOR($WS_EX_WINDOWEDGE, $WS_EX_TOPMOST)) GUISetOnEvent($GUI_EVENT_CLOSE, "Terminate") GUICtrlCreateLabel("First Rich Text Field", 10, 10) GUICtrlCreateLabel("Second Rich Text Field", 304, 10) GUICtrlCreateLabel("Enter text into the first field ... then highlight it and drag/drop it into the second field.", 10, 250, 580, -1) GUICtrlSetFont(-1, 11, 400, -1, "Arial") GUICtrlCreateLabel("I need the dropped text to remain in the first field ... and preferably remain highlighted.", 10, 270, 580, -1) GUICtrlSetFont(-1, 10, 800, -1, "Arial") $g_idRich1 = _GUICtrlRichEdit_Create($hForm, "", 15, 30, 280, 215, BitOR($ES_WANTRETURN, $ES_MULTILINE, $WS_VSCROLL)) _GUICtrlRichEdit_SetEventMask($g_idRich1, $ENM_DRAGDROPDONE) _GUIScrollBars_ShowScrollBar($g_idRich1, $SB_VERT, True) $g_idRich2 = _GUICtrlRichEdit_Create($hForm, "", 305, 30, 280, 215, BitOR($ES_WANTRETURN, $ES_MULTILINE, $WS_VSCROLL)) _GUICtrlRichEdit_SetEventMask($g_idRich2, $ENM_DRAGDROPDONE) _GUIScrollBars_ShowScrollBar($g_idRich2, $SB_VERT, True) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUISetState() While 1 Sleep(50) WEnd EndFunc Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam) #forceref $hWnd, $iMsg, $iWparam Local $hWndFrom, $iCode, $tNMHDR $tNMHDR = DllStructCreate($tagNMHDR, $iLparam) $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch __WinAPI_GetClassName($hWndFrom) ;replace with handles, Case $_GRE_sRTFClassName ;~ if not restoring text selection on multiple richedits Switch $iCode Case $EN_DRAGDROPDONE If $hWndFrom <> _WinAPI_GetFocus() Then ;re-show selected text only on drag beween edits _GUICtrlRichEdit_HideSelection($hWndFrom, False) EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func __WinAPI_GetClassName($hWnd) Local $aResult = DllCall($g_iDLLUser32, "int", "GetClassNameW", "hwnd", $hWnd, "wstr", "", "int", 4096) If @error Then Return "" Return $aResult[2] EndFunc ;==>__WinAPI_GetClassName Func Terminate() _GUICtrlRichEdit_Destroy($g_idRich1) _GUICtrlRichEdit_Destroy($g_idRich2) Exit EndFunc
  6. @Lourens The site uses ReactJS, which is difficult to automate. You may want to review this past thread. I suspect it would be easier to automate using either the Webdriver UDF or IUIAutomation.
  7. hey well, can you post your code and explain what exactly going wrong if you already finished everything else? i mean it's easier to understand your problem and you will get a more tailored answers for your code i guess. (btw im not that good at engl) Greetings
  8. Yesterday
  9. Right... I was just testing with this -- #include <IE.au3> $oIE = _IECreate("https://bank.tymedigital.co.za/)") $oForm = _IEFormGetCollection($oIE, 0) $oUser = _IEFormElementGetCollection($oForm, 0) $oPass = _IEFormElementGetCollection($oForm, 1) _IEFormElementSetValue($oUser, "12345678") _IEFormElementSetValue($oPass, "abcdefgh") _IEFormSubmit($oForm) It's possible that there is underlying events that need to be triggered for the login to work correctly.
  10. I have found another script by @funkey I have modified the script, however, the form does not recognize the values submitted even though it is visible in the form fields. #include <IE.au3> $Url = 'https://bank.tymedigital.co.za/' $User = '0000000000000' $Pwd = 'This_Is_Not_The_Password' $test = _IEAutoLogin($Url, $User, $Pwd) Func _IEAutoLogin($sUrl, $sUsername, $sPwd) $oIE = _IECreate($sUrl) _IEErrorNotify(False) _IEErrorHandlerRegister() $oForms = _IEFormGetCollection($oIE) If @error Then Return SetError(1, _IEErrorHandlerDeRegister(), $oIE) Else $Index = 0 For $oForm In $oForms $oFormElements = _IEFormElementGetCollection($oForm) If IsObj($oFormElements) Then $IndexElement = 0 For $oElement In $oFormElements For $i = $IndexElement - 1 To 0 Step -1 $oPwd = _IEFormElementGetCollection($oForm, $i) If $oPwd.Type = 'password' Then _IEFormElementSetValue($oPwd, $sPwd) ExitLoop EndIf Next For $i = $IndexElement - 1 To 0 Step -1 $oUser = _IEFormElementGetCollection($oForm, $i) If $oUser.Type = 'tel' Then _IEFormElementSetValue($oUser, $sUsername) ExitLoop EndIf Next For $i = $IndexElement + 1 To $IndexElement + 10 $oButton = _IEFormElementGetCollection($oForm, $i) If $oButton.Type = 'button' Then _IEAction($oButton, "click") ExitLoop EndIf Next $IndexElement += 1 Next EndIf $Index += 1 Next EndIf EndFunc ;==>_IEAutoLogin Attached is a screen shot of the error - it still produce the same error whether a valid id number is submitted or not. When an invalid values are submitted the error will be "Invalid SAID or password". Thank you, Lourens
  11. Maybe you refer to sqlite3.dll instead. Just put it where you load it from: you invoke loading as _SQLite_Startup(@ScriptDir & "\" & "sqlite3.dll", false, 1) so @ScriptDir is a pretty good place. Note that the help says that the DLL " can be stored in @ScriptDir, @SystemDir, @WindowsDir, or @WorkingDir. "
  12. Oh it's the ControlLabel that is stored in $aNotify_Data[$aNotify_Data[0][0]][9] All I have to do is reading the stored GuiControl Local $sMsg = GUICtrlRead($aNotify_Data[$aNotify_Data[0][0]][9]) Thread can be closed And thanks for this awesome UDF @Melba23
  13. I want to use a modified WM_MOUSEACTIVATE when clicking on a Notificaion instead the _Notify_RegMsg(). My goal: I want read the message of the clicked Notification and start another function depending on the message In the Notifiy UDF I could find in Line 683 that the Message is stored in $aNotify_Data[$aNotify_Data[0][0]][9] but it shows only a number anyone here knows wher I can find the stored notification message ? Func WM_MOUSEACTIVATE($hWnd, $iMsg, $wParam, $lParam) #forceref $iMsg, $wParam, $lParam ConsoleWrite(@CRLF & "$hWnd=" & $hWnd) For $i = $aNotify_Data[0][0] To 1 Step -1 ; Is it a click on a notification? If $hWnd = $aNotify_Data[$i][0] Then ; Check if other action occuring If $bNotify_Action Then ; Clear click on this notification AdlibRegister("_Notify_ResetClick", 100) Else $aNotify_Data[0][5] = $i If $aNotify_Data[$i][5] Then ; Extend the notification AdlibRegister("_Notify_Extend", 100) Else ; Delete the notification if clickable If $aNotify_Data[$i][3] Then ConsoleWrite(@CRLF & "$aNotify_Data[0][0]= " & $aNotify_Data[0][0]) ConsoleWrite(@CRLF & "$aNotify_Data[0][1]= " & $aNotify_Data[0][1]) ConsoleWrite(@CRLF & "$aNotify_Data[0][2]= " & $aNotify_Data[0][2]) ConsoleWrite(@CRLF & "$aNotify_Data[0][3]= " & $aNotify_Data[0][3]) ConsoleWrite(@CRLF & "$aNotify_Data[0][4]= " & $aNotify_Data[0][4]) ConsoleWrite(@CRLF & "$aNotify_Data[0][5]= " & $aNotify_Data[0][5]) ConsoleWrite(@CRLF & "$aNotify_Data[0][6]= " & $aNotify_Data[0][6]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][1]= " & $aNotify_Data[$i][1]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][2]= " & $aNotify_Data[$i][2]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][3]= " & $aNotify_Data[$i][3]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][4]= " & $aNotify_Data[$i][4]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][5]= " & $aNotify_Data[$i][5]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][6]= " & $aNotify_Data[$i][6]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][7]= " & $aNotify_Data[$i][7]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][8]= " & $aNotify_Data[$i][8]) ConsoleWrite(@CRLF & "$aNotify_Data[$i][9]= " & $aNotify_Data[$i][9]) ConsoleWrite(@CRLF & "$aNotify_Data[$aNotify_Data[0][0]][9]= " & $aNotify_Data[$aNotify_Data[0][0]][9]) AdlibRegister("_Notify_Delete", 100) EndIf EndIf EndIf ExitLoop EndIf Next Return "GUI_RUNDEFMSG" EndFunc
  14. What step? If it for other purpose! what code?
  15. Oh. Well, isn't that convenient. Guess I'll google my issue next time. (Thank you though, I try)
  16. I know how to use normal pixelsearches throughout the screen for various colors, but what I'd like to learn how to do is determine where the center of those detected pixels are. I wasn't entirely sure how to explain this in words so I threw a picture together. So basically its scanning the center of the screen, but instead of the appropriate pixels triggering whatever event to take place, those pixels have to be centered regardless of size and how much space they take of. Is something like this possible and do you have any suggestions on learning it? I basically want a certain group crossing the screen to trigger a browser refresh (easily bindable to a key F5) and then it begins a new search and some other events before it happens again. I've got everything done except for this part, but it throws off the loop because it activates as soon as the text scrolls through the center, whereas I need it to always be when the text is completely centered. Sorry if that's confusing.
  17. Browser - Internet Explorer The form fields has no name or id and I can not use _IEGetObjByName or _IEGetObjById Usually I would use _IEGetObjByName and set the value of the form field with _IEFormElementSetValue as below; Local $oUsername = _IEGetObjByName($oIE, "username") Local $oPassword = _IEGetObjByName($oIE, "password") _IEFormElementSetValue($oUsername, "username") _IEFormElementSetValue($oPassword, "password") Since _IEGetObjByType is not an option, I do not know how to proceed. Using _IEFormGetCollection inform me that there is one form on the page, however, no other useful information is returned that I can use (or I am doing something that I am not suppose to do). Thank you, Lourens
  18. @Nine I assume you meant to type _IEFormGetCollection. 😏
  19. Looks like there is only one form, so look at form _IEFrameGetCollection Then there is IETagNameGetCollection with "input". I am too tired to test your site, maybe tomorrow...
  20. Hi @Lourens, Welcome to the forum. Please post additional details so that we can better understand the issue. Things like -- Which browser you are using What isn't working as expected? Post your code (use the <> icon at the top of the editor)
  21. Not an auto-run example but perhaps a head start idea to incorporate .. #include <File.au3> Global $sd = ObjCreate("Scripting.Dictionary"), $array = _FileListToArrayRec(@DesktopDir, "*") ; array snapshot the list of files in the desktop folder For $i = 1 To UBound($array) - 1 $sd.Item($array[$i]) = 1 Next HotKeySet("{ESC}", "Terminate") ; Exit HotKeySet("^e", "Run_Display") ; ctrl + e While 1 Sleep(2000) WEnd Func Run_Display() Local $a = _FileListToArrayRec(@DesktopDir, "*"), $sdTmp = ObjCreate("Scripting.Dictionary") For $i = 1 To UBound($a) - 1 If $sd.Exists($a[$i]) Then ContinueLoop ;add any new files to $sdTmp array $sdTmp.Item($a[$i]) = @DesktopDir & "\" & $a[$i] Next $array = $a ; update main snapshot $a = $sdTmp.Items _ArrayDisplay($a) ; process new files .. EndFunc ;==>Run_Display Func Terminate() Exit EndFunc ;==>Terminate Deye
  22. Hi, I am looking for a way to automate login to a Internet Banking website (https://bank.tymedigital.co.za/) and all of the examples that I could found still do not solve my issue with this website. In order to Login, the user need to enter their Identity Number and Password the click the Login button. Inspecting the Elements in Chrome are as follow; Identity Number <input autocomplete="username" placeholder="Please enter your South African ID number" maxlength="13" type="tel" class="form-control" value=""> Password <input autocomplete="current-password" placeholder="Enter password" type="password" class="form-control" value=""> Button <button type="button" class="btn btn-yellow btn-block">Login</button> Any assistance or directing me to a solution will be appreciated. Thank you, Lourens
  23. Yes, AdlibRegister can run as exclusive to the main loop #include <WindowsConstants.au3> #include <AutoItConstants.au3> #include <GUIConstantsEx.au3> #Region Variables $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $ComName = @ComputerName $objServices = ObjGet("winmgmts:\\" & $ComName) Dim $CPUPercent #EndRegion Variables $DashboardGUI = GUICreate("Dashboard", 1000, 750) $CPUPercentLable = GUICtrlCreateLabel($CPUPercent, 15, 15, 20, 20) $Exit = GUICtrlCreateButton("Exit", 500, 700) AdlibRegister("_GetCPUPercent", 500) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_RESTORE AdlibRegister("_GetCPUPercent", 500) Case $gui_event_close Exit Case $Exit Exit EndSwitch WEnd Func _GetCPUPercent() If BitAND(WinGetState($DashboardGUI), $WIN_STATE_MINIMIZED) Then Return AdlibUnRegister("_GetCPUPercent") $colItems = $objServices.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems If Not StringInStr($objItem.Name, "Total") = 0 Then ConsoleWrite($objItem.PercentProcessorTime & $objItem.Name & @CRLF) $CPUPercent = $objItem.PercentProcessorTime If GUICtrlRead($CPUPercentLable) <> $CPUPercent Then GUICtrlSetData($CPUPercentLable, $CPUPercent) EndIf EndIf Next Else Exit MsgBox(48, "WMI Error", "WMI Error") EndIf EndFunc ;==>_GetCPUPercent
  24. stringformat will make your numbers all pretty. went ahead and fixed my other example, and made it clunkier: #include<array.au3> $flag = 0 Local $array = [["name 0", "Peter"], ["name 1", "Paul"], ["name 2", "Mary"], ["name 3", "Mary"], ["name 4", "Charles"], _ ["name 5", "Elizabeth"], ["name 6", "Victoria"], ["name 7", "Mary"], ["name 8", "Tom"], ["name 9", "Paul"]] For $i = ubound($array) - 1 to 0 step -1 $array[$i][0] = "name " & StringFormat("%03i" , stringtrimleft($array[$i][0] , 5)) $aFnd = _ArrayFindAll($array , $array[$i][1] , 0 , $i - 1 , 0 ,0 , 1) If $flag = 1 Then ExitLoop If @error Then ContinueLoop _ArrayAdd($aFnd , ubound($aFnd) , 0) _ArrayDelete($array , $aFnd) $i -= ubound($aFnd) - 2 $flag = $i - (ubound($aFnd) - 2) < 1 ? Assign("i" , 1) : 0 Next _ArrayDisplay($array)
  25. https://www.computerhope.com/issues/ch000542.htm Nicely formatted code.
  26. I'm looking for a little help, I'm looking to update the variable $CPUPercent and then update the GUI with the new value. The problem is every time I call the function at the bottom of the while loop my GUI stops allowing inputs until the sleep timer is over. Is there any way to do what I'm trying to do? #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #Region Variables $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $ComName = @ComputerName $objServices = ObjGet("winmgmts:\\" & $ComName) Dim $CPUPercent #EndRegion Func _GetCPUPercent () Sleep (10000) $colItems = $objServices.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems If Not StringInStr($objItem.Name, "Total") = 0 Then ConsoleWrite ($objItem.PercentProcessorTime & $objItem.Name & @CRLF) $CPUPercent = $objItem.PercentProcessorTime EndIf Next Else MsgBox (48, "WMI Error", "WMI Error") EndIf EndFunc ;MsgBox (1, "data", $CPUPercent) $DashboardGUI = GUICreate ("Dashboard", 1000, 750) $CPUPercentLable = GUICtrlCreateLabel ($CPUPercent, 15, 15, 20, 20) $Exit = GUICtrlCreateButton("Exit", 500, 700) GUISetState(@SW_SHOW) Call("_GetCPUPercent") While 1 Switch GUIGetMsg() Case $gui_event_close Exit Case $Exit Exit EndSwitch Call("_GetCPUPercent") If GUICtrlRead ($CPUPercentLable) <> $CPUPercent Then GUICtrlSetData($CPUPercentLable, $CPUPercent) EndIf WEnd
  27. hi, @jchd i am a stickler for numbers of exact lengths, and at the moment i can not seem to get the count to be 3 digits long. at the moment it looks a bit 'stupid' it would look nicer if they all had an exact same length. so name 1 would be name 001 etc. that means the first colum is not quite decoration but rather more a counter for me that i can see at one glance by looking at the last entry of the to be created file how many names are listed. what you called "prefix" is not a prefix, but i was trying to express that if that would make a comparison easier then i could say that the first two elements of the names can be the same throughout all the names in the file. manually checking i always looked at the third character because that is where the first duplicate can occur. anyway that was just a side information and not of relevance here or in my example really. so ignoring that was fine. i am still pondering on two things now: getting the counting done and saving the new output, because for some reason it will not save the $aOut at the moment. but i am still testing currently ----- @mikell for some reason your version does not work at all. i get an error message: do not quite know why. just for testing purposes i tried it. ----- @iamtheky i also like that version. but for my needs i do not think it is quite the right solution. i think the one from jchd is the one i will have to try to adapt to what i need it for. but that does not mean that i am not greatful. of course i am greatful. i always look at all the examples and try them out to see what they do and how they do it, you never know when you might need something like that down the line.
  1. Load more activity
  • Create New...