Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/18/2013 in all areas

  1. leuce, FYI whatever text encoding is used, once you load text in AutoIt strings data is converted to a subset of UTF-16LE called UCS-2. It's (roughly) the restriction of Unicode to its plane-0, i.e. codepoints that fit into a single 16-bit representation. Hence the extra range x10000-x10FFFF is irrelevant to AutoIt (and, honestly, I seriously doubt you would encounter such codepoints in real-world data). Also surrogates will endup being remapped to invalid character in the conversion process occuring during file read. The following pattern will match any invalid or excluded codepoint: [^\x09\x0A\x0D\x20-\x{D7FF}\x{E000}-\x{FFFD}]
    2 points
  2. [this post are in deletion pending] User: See my signature for more info! AutoIT3 Virtualization UDF Virtual File, Virtual Registry, Dll Virtualization, ActiveX Virtualization Enable you to store file virtually in memory.Virtualizing program module like Dll, ActiveX Component and Etc. You can try virtualize Flash ActiveX and Flash Movie too. Ha.. Ha.. 3x At least you does not need MemoryDllCall again just use. DllOpen, DllCall, DllClose and Etc. There for example I create ActiveX component TColorBox in Delphi and virtualize it in AutoIt3. Attach Virtual File to another process Execute dot net application from virtual file and or embedded file Function ; Exports ; Virtual_ActiveXA ; Virtual_ActiveXW ; Virtual_DebugLog ; Virtual_AttachToProcess ; Virtual_DetachFromProcess ; Virtual_DirCreateA ; Virtual_DirCreateW ; Virtual_ExecuteDotNetA ; Virtual_ExecuteDotNetW ; Virtual_FileA ; Virtual_FileW ; Virtual_FileDeleteA ; Virtual_FileDeleteW ; Virtual_IsVirtualFileA ; Virtual_IsVirtualFileW ; Virtual_IsVirtualProcess ; Virtual_LibraryA ; Virtual_LibraryW ; Virtual_LogFileA ; Virtual_LogFileW ; Virtual_Option ; Virtual_ProcessOption ; Virtual_RegDelete ; Virtual_RegWrite ; Virtual_RegKeysEnumVirtualA ; Virtual_RegKeysEnumVirtualW ; Virtual_RegisterServer ; Virtual_UnregisterServer ; Virtual_VirtualGate ; Virtual_VirtualChild ; Virtual_VirtualDeamon Note Don't need call Virtual_RegisterServer if you using Virtual_ActiveXA and or Virtual_ActiveXW function Screenshot Archive Choose which one server you will download the archive. autoit3vt.zip (www.autoitscript.com) Sample.LaunchEmbeddedExe^.zip Last Archive History #03 Attached File autoit3vt.zip 881.71K 95 downloads #02 Attached File autoit3vt.zip 830.67K 11 downloads #01 Attached File autoit3vt.zip 538.92K 27 downloads Yeah, you right Melba!I modified the AutoIT3 executable. Oh so it break the EULA. Now I have been updated the UDF. No executable again, just pure AutoIT3 script. Simple and Complex Implementation - Execute Executable or Dot Net App from embedded script. - Call Embedded Dynamic Link Library with native function DllOpen, DllCall, DllClose and etc (without MemoryDLLCall). - Using two or more different ActiveX version in one machine. - ActiveX sure have incompatible for some upward or backward you can by fix with virtualization. - Also automatically using ActiveX without installing it on machine and or without touching the real Windows Registry. - Good starting point to create application like PortableApps which can run on ROM like CD, DVD or Blueray Disk and or locked memory/USB Disk. - Analyze program by starting it in virtualization. What file and registry activity of program. Possibly for malware ana- lysis. - There wide range implementation of this. Search by ur'self. - Et catera. Take a look for my other post >Graphical AutoIt3 Control >GTK+ Framework | Widgets
    1 point
  3. Sorted! This is what I did, in case anyone needs it in the future... Thanks to the following: _binToInt function from Spiff59 taken from _binary function from LimeSeed taken from The function takes a string value for the dhcp server's IP address and a string value for the subnetID, and returns a string with the subnet name from the DHCP scope: Func _DHCP_GetSubnetInfo($sDHCP, $subnetID) Local $tEnumSubnetsParms = DllStructCreate("ptr SubnetInfoPtr;DWORD Subnet") Local $infoArray[4]=[0, 0, 0, 0], $tSubnetInfoStr, $tAddress, $aRet, $temp, $tempArray, $tSubnetInfo Local $returnedString, $stringSize $stringSize = 32 ; Change the subnetID into binary $tempArray = StringSplit($subnetID, ".") For $i = 1 To UBound($tempArray) -1 $temp = $temp & _binary($tempArray[$i]) Next $subnetID = _BinToInt($temp) ; Make the dllCall $aRet = DllCall("Dhcpsapi.dll", "int", "DhcpGetSubnetInfo", _ "wstr", $sDHCP, _ "int", $subnetID, _ "ptr", DllStructGetPtr($tEnumSubnetsParms, "SubnetInfoPtr") ) If $aRet[0] Then Return 0; ERR: Any runtime errors If DllStructGetData($tEnumSubnetsParms,"SubnetInfoPtr")=0 Then Return -1; ERR: Not Found ; Create a new structure to hold all the elements returned in the DHCP_subnet_info structure $tSubnetInfoStr = DllStructCreate("ptr SubnetAddress;ptr SubnetMask;ptr SubnetName;ptr SubnetComment;ptr PrimaryHost;ptr SubnetState", DllStructGetData($tEnumSubnetsParms,"SubnetInfoPtr")) If @error Then MsgBox(0, @error, "Error creating dll structure") EndIf ; Now, pull out the element that we want - SubnetName is the only one implemented here for now ; (1 = SubnetAddress (DHCP_IP_ADDRESS), 2 = SubnetMask(DHCP_IP_MASK), 3 = SubnetName (LPWSTR), 4 = SubnetComment (LPWSTR) , 5 = PrimaryHost(DHCP_HOST_INFO) ; 6 = SubnetState(DHCP_SUBNET_STATE) $temp = DllStructCreate('wchar[' & $stringSize & ']', DllStructGetData($tSubnetInfoStr, 3)) If @error Then MsgBox(0, @error, "Error creating dll structure") EndIf ; Get the data For $i = 1 To $stringSize $returnedString = $returnedString & DllStructGetData($temp, 1, $i) Next ; Freeing memory DllCall("Dhcpsapi.dll", "none", "DhcpRpcFreeMemory", "ptr", DllStructGetData($tEnumSubnetsParms,"EnumInfoPtr")) Return $returnedString EndFunc Func _binary($num) ;converts a number to binary! Local $string dim $string = "" Do $num = $num/2 if(floor($num) = $num) then $string = $string & "0" Else $string = $string & "1" $num -= .5 EndIf Until ($num = 0) While StringLen($string) < 8 $string = $string & "0" WEnd Return _stringreverse($string) EndFunc Func _BinToInt($sValue) Local $iOut = 0, $aValue = StringSplit($sValue, "") For $i = 1 To $aValue[0] $aValue[0] -= 1 If $aValue[$i] = "1" Then $iOut += 2 ^ ($aValue[0]) Next Return Int($iOut) EndFunc
    1 point
  4. Neat effect! Of course, the GUI is hella slow when moving it around, but looks cool. One note, though - since there's embedded x86 assembly code, it crashes in x64 mode. I use this 2 line sequence at the top of certain scripts to ensure they run in x86 mode: #AutoIt3Wrapper_UseX64=n If (@AutoItX64 And Not @compiled) Then Exit Run(StringReplace(@AutoItExe,"_x64","") & ' "' & @ScriptFullPath & '"') The alternative of course would be to add 64-bit versions of the assembly routines
    1 point
  5. IanN1990, I quite agree - there should be a Sleep(10) at least in that loop. I will try to do better next time. M23
    1 point
  6. I think it is not possible with controls but why you want to use controls? What about this way? #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiConstants.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <StaticConstants.au3> #include <WinAPI.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> #Region ### START Koda GUI section ### Form= $fScale = 0.7 $aPixelArray = _PixelCoordinate() $aSize = StringSplit($aPixelArray[0], ",", 2) $iW = $aSize[0] * $fScale $iH = $aSize[1] * $fScale $Form1 = GUICreate("[#] Form1 [#]", 700, 700, -1, -1) $Label1 = GUICtrlCreateLabel(@CRLF & @CRLF & @CRLF & @CRLF & @TAB & "THIS IS A TEST", 50, 40, $iW, $iH) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetBkColor(-1, 0xFFFFFF) GUICtrlSetFont(-1, 24, 400, 0, "Arial", 5) $hRegion = _WinAPI_GuiImageHole($Form1, $aPixelArray, 50, 65, $iW, $iH, $fScale, False) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _WinAPI_GuiImageHole($hWnd, $aPixelArray, $iX, $iY, $iWidth, $iHeight, $fScale = 1, $bCorrection = True) $bDebugPreview=0 Local $size = WinGetPos(HWnd($hWnd)) Local $iHwndWidth = $size[2] Local $iHwndHeight = $size[3] If $bCorrection Then $iX += _WinAPI_GetSystemMetrics(7) $iY += _WinAPI_GetSystemMetrics(8) + _WinAPI_GetSystemMetrics($SM_CYSIZE) + 1 EndIf Local $aM_Mask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', 0, 'long', 0) $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', $iX, 'long', $iHwndHeight) DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2) $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', $iHwndWidth, 'long', $iY) DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2) $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', $iX + $iWidth, 'long', 0, 'long', $iHwndWidth + 30, 'long', $iHwndHeight) DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2) $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', $iY + $iHeight, 'long', $iHwndWidth, 'long', $iHwndHeight) DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2) Local $i, $aBlock, $aRet, $hDLL = DllOpen('gdi32.dll') For $i = 1 To UBound($aPixelArray) - 1 $aBlock = StringSplit($aPixelArray[$i], ',', 2) $aRet = DllCall($hDLL, 'long', 'CreateRectRgn', 'long', $iX + $aBlock[0] * $fScale, 'long', $iY + $aBlock[1] * $fScale, 'long', $iX + ($aBlock[2] - $bDebugPreview) * $fScale, 'long', $iY + ($aBlock[3] - $bDebugPreview) * $fScale) DllCall($hDLL, 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aRet[0], 'long', $aM_Mask[0], 'int', 2) _WinAPI_DeleteObject($aRet[0]) Next DllClose($hDLL) DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $hWnd, 'long', $aM_Mask[0], 'int', 1) Return $aM_Mask[0] EndFunc ;==>_WinAPI_GuiImageHole Func _PixelCoordinate() #region pixel coordinates Local $aPixelArray[442] = [ _ "647,451","5,117,593,283","45,18,130,117","69,0,103,18","61,4,69,18","67,1,69,4","103,3,111,18","103,1,106,3","65,2,67,4","106,2,108,3","63,3,65,4","111,7,117,18","111,4,113,7","56,8,61,18","59,6,61,8","60,5,61,6","113,5,114,7","114,6,116,7","58,7,59,8","117,10,121,18","117,8,118,10","53,12,56,18","55,9,56,12","118,9,120,10","54,11,55,12","121,12,123,18","121,11,122,12","51,14,53,18","52,13,53,14","123,14,126,18","123,13,124,14","49,16,51,18","50,15,51,16","126,16,128,18","128,17,130,18","26,51,45,117","37,29,45,51","42,22,45,29","43,20,45,22","44,19,45,20","130,40,160,117","130,22,136,40","130,19,131,22","131,20,132,22","132,21,134,22","39,25,42,29","40,24,42,25","41,23,42,24","136,27,141,40","136,24,137,27","137,25,138,27","138,26,139,27","38,27,39,29","141,31,146,40","141,28,142,31","142,29,143,31","33,36,37,51","35,32,37,36","36,30,37,32","143,30,144,31","146,33,149,40","146,32,147,33","34,33,35,36","149,35,152,40","149,34,150,35","152,37,155,40","152,36,153,37","32,37,33,38","155,38,156,40","30,42,33,51","31,40,33,42","32,39,33,40","156,39,158,40","160,51,199,117","160,43,165,51","160,41,161,43","161,42,163,43","28,46,30,51","29,44,30,46","165,45,170,51","165,44,167,45","170,47,175,51","170,46,172,47","175,48,178,51","27,49,28,51","178,49,182,51","182,50,187,51","199,56,237,117","199,52,205,56","16,76,26,117","22,61,26,76","24,55,26,61","25,53,26,55","205,53,212,56","212,54,218,56","218,55,225,56","237,59,559,117","237,57,241,59","283,57,287,59","375,57,426,59","507,57,510,59","23,58,24,61","241,58,257,59","275,58,280,59","281,58,283,59","287,58,288,59","374,58,375,59","426,58,505,59","506,58,507,59","510,58,557,59","559,72,576,117","559,63,565,72","559,60,561,63","561,61,562,63","562,62,563,63","20,66,22,76","21,63,22,66","565,66,569,72","565,64,566,66","566,65,567,66","569,68,571,72","569,67,570,68","18,71,20,76","19,69,20,71","571,69,573,72","573,70,574,72","574,71,575,72","576,83,590,117","576,75,580,83","576,73,578,75","17,74,18,76","578,74,579,75","580,77,582,83","580,76,581,77","582,79,585,83","582,78,584,79","11,92,16,117", _ "14,82,16,92","15,79,16,82","585,80,586,83","586,81,587,83","587,82,589,83","590,90,604,117","590,85,593,90","590,84,592,85","13,85,14,92","593,87,597,90","593,86,595,87","597,88,599,90","12,89,13,92","599,89,601,90","593,117,617,135","604,94,631,117","604,91,607,94","607,92,610,94","631,94,644,105","632,93,645,94","638,92,639,93","610,93,615,94","627,93,631,94","644,95,647,102","644,94,646,95","8,105,11,117","9,100,11,105","10,96,11,100","644,102,646,103","644,103,645,104","631,105,640,109","640,105,642,107","642,105,643,106","640,107,641,108","6,113,8,117","7,109,8,113","631,109,636,112","636,109,638,110","636,110,637,111","631,112,634,114","634,112,635,113","631,114,633,115","631,115,632,116","617,117,626,123","626,117,629,119","629,117,630,118","626,119,628,120","626,120,627,122","0,141,5,261","2,130,5,141","4,121,5,130","617,123,623,126","623,123,625,124","623,124,624,125","3,126,4,130","617,126,621,129","621,126,622,127","617,129,620,131","617,131,619,132","617,132,618,134","1,135,2,141","593,135,609,151","609,135,614,140","614,135,616,137","614,137,615,139","609,140,612,144","612,140,613,142","609,144,611,145","609,145,610,149","593,151,603,167","603,151,606,157","606,151,608,152","606,152,607,154","603,157,605,160","603,160,604,163","593,167,599,186","599,167,601,175","601,167,602,171","599,175,600,180","593,219,599,266","593,186,597,219","597,186,598,200","597,205,598,219","599,240,603,260","599,232,601,240","599,226,600,232","601,236,602,240","603,245,604,258","599,260,602,262","2,261,5,273","1,261,2,268","599,262,601,263","599,263,600,265","593,266,597,268","593,268,595,269","593,269,594,270","31,283,597,342","593,275,596,283","593,272,594,275","4,273,5,280","3,273,4,276","594,273,595,275","596,282,597,283","13,283,31,308","8,283,13,293","6,283,8,287","7,287,8,290","10,293,13,300","9,293,10,297","12,300,13,306","11,300,12,303","19,308,31,321","15,308,19,313","14,308,15,310","17,313,19,317","16,313,17,315","18,317,19,319","597,319,598,321","23,321,31,329","21,321,23,325","20,321,21,323","597,322,598,340","22,325,23,327","26,329,31,335","25,329,26,333","24,329,25,331","28,335,31,339","27,335,28,336","30,339,31,341","29,339,30,340","262,342,395,441","116,342,262,413","61,342,116,378","41,342,61,357","35,342,41,348","32,342,35,345", _ "31,342,32,343","395,342,540,436","540,342,590,411","590,342,595,350","595,342,596,346","34,345,35,347","33,345,34,346","37,348,41,351","36,348,37,350","590,350,593,355","593,350,594,352","39,351,41,354","38,351,39,352","40,354,41,355","590,355,592,357","48,357,61,365","44,357,48,361","43,357,44,359","42,357,43,358","590,357,591,360","46,361,48,363","45,361,46,362","590,367,608,396","590,361,599,367","599,363,603,367","599,362,601,363","47,363,48,364","603,364,605,367","53,365,61,370","50,365,53,367","49,365,50,366","605,365,606,367","606,366,607,367","52,367,53,369","51,367,52,368","608,374,612,388","608,370,610,374","608,369,609,370","56,370,61,373","55,370,56,372","54,370,55,371","610,372,611,374","58,373,61,375","57,373,58,374","60,375,61,377","59,375,60,376","83,378,116,395","69,378,83,385","64,378,69,381","63,378,64,380","62,378,63,379","612,379,613,384","67,381,69,383","66,381,67,382","68,383,69,384","74,385,83,389","72,385,74,387","70,385,72,386","73,387,74,388","608,388,611,391","78,389,83,392","77,389,78,391","76,389,77,390","608,391,610,393","81,392,83,394","80,392,81,393","608,393,609,394","95,395,116,403","88,395,95,399","86,395,88,397","84,395,86,396","590,396,601,401","601,396,606,398","87,397,88,398","601,398,603,400","603,398,604,399","92,399,95,401","90,399,92,400","93,401,95,402","590,401,599,402","104,403,116,408","100,403,104,406","98,403,100,404","590,403,591,409","102,406,104,407","109,408,116,410","106,408,109,409","113,410,116,412","111,410,113,411","540,411,573,418","573,411,585,416","585,411,589,413","162,413,262,427","137,413,162,421","126,413,137,417","120,413,126,415","118,413,120,414","585,413,587,415","587,413,588,414","123,415,126,416","573,416,583,417","131,417,137,419","128,417,131,418","575,417,576,418","540,418,555,423","555,418,561,420","561,418,565,419","135,419,137,420","555,420,559,421","148,421,162,424","144,421,148,423","140,421,144,422","555,421,557,422","540,423,550,427","550,423,554,424","156,424,162,426","152,424,156,425","550,424,552,425","550,425,551,426","167,427,172,428","186,427,189,428","223,427,262,431","199,427,223,429","190,427,199,428","540,427,546,430","546,427,548,428","546,428,547,429","212,429,217,431","206,429,212,430","217,429,218,430","220,429,223,430","540,430,544,433","544,430,545,432","238,431,250,444","230,431,238,434","225,431,230,432", _ "250,431,262,440","228,432,230,433","540,433,542,435","542,433,543,434","234,434,238,439","231,434,234,435","233,435,234,436","409,436,499,446","399,436,409,441","395,436,399,440","499,436,506,441","506,436,508,438","508,436,509,437","511,436,538,437","516,437,519,438","506,438,507,440","236,439,238,441","235,439,236,440","250,440,256,441","237,441,238,443","250,441,252,443","252,441,253,442","404,441,409,443","402,441,404,442","499,441,504,443","504,441,505,442","406,443,409,444","499,443,501,445","501,443,502,444","242,444,248,446","240,444,242,445","248,444,249,445","408,444,409,445"] #endregion Return $aPixelArray EndFunc ;==>_PixelCoordinate() Br, UEZ
    1 point
  7. BobRoss, You need to use arrays to get all the various timers separated. Here is a modified version of your script showing how you might do it: #include <GUIConstantsEx.au3> Global $iTabCount = 3, $aTab[$iTabCount] Global $aInitTimer[$iTabCount] = [-1, -1, -1], $aAggregateTime[$iTabCount] = [0, 0, 0] Global $aTimerLabel[$iTabCount], $aStartPause[3], $aReset[$iTabCount] Global $iAdlibCount = 0 $frmMain = GUICreate("Multiple Stopwatch", 370, 125) GUISetBkColor(0xFFFFFF) ;$Logo = GUICtrlCreatePic("Small_N_White.jpg", 0, 80, 116, 36) ;GUISetIcon("\\Images\Icons\_Logo_Clean.ico") $cTab = GUICtrlCreateTab(10, 10, 350, 100) ; Create tabs For $i = 0 To $iTabCount - 1 $aTab[$i] = GUICtrlCreateTabItem("Timer " & $i) $aTimerLabel[$i] = GUICtrlCreateLabel("00:00:00.00", 60, 50, 200, 40) GUICtrlSetFont(-1, 24, 400, 0, "Calibri") $aStartPause[$i] = GUICtrlCreateButton("&Start", 265, 40, 75, 25, 0) $aReset[$i] = GUICtrlCreateButton("&Reset", 265, 70, 75, 25, 0) GUICtrlSetState(-1, $GUI_DISABLE) Next GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case Else ; Was it a control? For $i = 0 To $iTabCount - 1 If $nMsg = $aStartPause[$i] Then ; It was a start/pause button If GUICtrlRead($aStartPause[$i]) == "&Start" Then $aInitTimer[$i] = TimerInit() ; Start Adlib if required If $iAdlibCount = 0 Then AdlibRegister("UpdateTimer") EndIf ; Add to Adlib counter $iAdlibCount += 1 ; Change button state GUICtrlSetData($aStartPause[$i], "&Pause") GUICtrlSetState($aReset[$i], $GUI_DISABLE) ; No point in loopinp any further ExitLoop Else ; Reduce Adlib count $iAdlibCount -= 1 ; Unregister Adlib if not required If $iAdlibCount = 0 Then AdlibUnRegister("UpdateTimer") EndIf ; Set current time $aAggregateTime[$i] += TimerDiff($aInitTimer[$i]) ; Set "Not timing" flag $aInitTimer[$i] = -1 ; Set control state GUICtrlSetData($aTimerLabel[$i], _FormatTime($aAggregateTime[$i])) GUICtrlSetData($aStartPause[$i], "&Start") GUICtrlSetState($aReset[$i], $GUI_ENABLE) ; No point in loopinp any further ExitLoop EndIf ElseIf $nMsg = $aReset[$i] Then ; Reset values and controls $aAggregateTime[$i] = 0 GUICtrlSetData($aTimerLabel[$i], "00:00:00.00") ExitLoop EndIf Next EndSwitch WEnd Func UpdateTimer() Local $sTemp For $i = 0 To $iTabCount - 1 ; Check timer is running If $aInitTimer[$i] <> -1 Then $sTemp = _FormatTime(TimerDiff($aInitTimer[$i]) + $aAggregateTime[$i]) GUICtrlSetData($aTimerLabel[$i], $sTemp) EndIf Next EndFunc ;==>UpdateTimer Func _FormatTime($inputTime) Local $time[4] = [0] Local $originalTime = Round($inputTime / 1000, 2) $time[0] = StringFormat("%.2d", Int($inputTime / 1000 / 60 / 60)) If $time[0] >= 1 Then $inputTime -= Int($time[0] * 1000 * 60 * 60) EndIf $time[1] = StringFormat("%.2d", Int($inputTime / 1000 / 60)) If $time[1] >= 1 Then $inputTime -= Int($time[1] * 1000 * 60) EndIf $time[2] = StringFormat("%.2d", Int($inputTime / 1000)) If $time[2] >= 1 Then $inputTime -= Int($time[2] * 1000) EndIf $time[3] = StringFormat("%.2d", Int($inputTime / 10)) Return $time[0] & ":" & $time[1] & ":" & $time[2] & "." & $time[3] EndFunc ;==>_FormatTime I hope the comments are sufficiently clear, but please ask if you have any questions. M23
    1 point
×
×
  • Create New...