Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/08/2023 in all areas

  1. Melba23

    New to AutoIt

    Kracov, Welcome to the AutoIt forum. Reading the Help file (at least the first few sections - Using AutoIt, Tutorials and the first couple of References) will help you enormously. You should also look at this excellent tutorial and download the really useful book you can find at If you have problems with the code you have written, do not hesitate to post and ask for help - that is why we are here. M23
    1 point
  2. Thanks for your pointers @Earthshine! I've got it working broadly along these lines.
    1 point
  3. Nice, @ioa747. There's another enhancement that could be done, but I didn't include it as when I tested it didn't give me any other results that I saw to be useful. It would be something like this: #include <WinAPIProc.au3> Global $hWnd, $PID, $hPrevWnd = -1 Global $aWindows Global $sMsg = '' Global $iPidTemp ; I'm not sure what the purpose of this is ;~ HotKeySet("{END}", "_Sleep") Sleep(1000) While 1 Sleep(250) $hWnd = WinGetHandle('[ACTIVE]') If $hPrevWnd = $hWnd Then ContinueLoop $hPrevWnd = $hWnd ConsoleWrite("--------------------------------------------------------------------------------" & @CRLF) ConsoleWrite("$hWnd:" & String($hWnd) & @CRLF) ConsoleWrite("WinTitle:" & WinGetTitle($hWnd) & @CRLF) $PID = WinGetProcess($hWnd) ConsoleWrite("PID:" & $PID & @CRLF) ConsoleWrite("PID FileName:" & _WinAPI_GetProcessFileName($PID) & @CRLF) $aWindows = WinList() $sMsg = '' For $iWindow = 1 To $aWindows[0][0] ; If $aWindows[$iWindow][0] = 'Default IME' Then ContinueLoop ; I think that these can be safely skipped $iPidTemp = WinGetProcess($aWindows[$iWindow][1]) If $iPidTemp = $PID And $aWindows[$iWindow][1] <> $hWnd Then $sMsg &= @TAB & "$hWnd:" & String($aWindows[$iWindow][1]) & @CRLF $sMsg &= @TAB & "WinTitle:" & String($aWindows[$iWindow][0]) & @CRLF EndIf Next If $sMsg <> '' Then ConsoleWrite('Additional windows: ' & @CRLF & $sMsg) EndIf WEnd ;~ Func _Sleep() ;~ Send("#1") ;~ EndFunc It didn't add anything for the blank handles or for "Windows Default Lock Screen", and for "UnlockingWindow" it's related to explorer.exe so it also listed all or most other open windows on the system.
    1 point
  4. @mucitbey You're saying that "there is no id in the Datalar.txt file but not defined in the Users.txt file." Ok, but during the process of creating the daily ini files, you should still consider it could happen one day, after someone deleted or modified inadvertly a user id in Users.txt, we'll solve that case at the very end of this post. Now that you confirm that the sections in daily ini files will always be related to a user name, let's create a real full example, based on 2 days, with 4 employees working in this company Users.txt 00000001=Adriana Francesca Lima 00000010=Candice Swanepoel 00000017=Gisele Bündchen 00000020=Kendall Jenner Datalar.txt (12.04.2023) (user 17 is absent) 001,00000001,00,12.04.2023 07:01:00 001,00000010,00,12.04.2023 07:10:00 001,00000001,00,12.04.2023 16:01:00 001,00000010,00,12.04.2023 16:10:00 001,00000020,00,12.04.2023 19:20:00 Datalar.txt (13.04.2023) (user 10 is absent) 001,00000020,00,13.04.2023 06:20:00 001,00000001,00,13.04.2023 07:01:00 001,00000017,00,13.04.2023 07:17:00 001,00000001,00,13.04.2023 16:01:00 001,00000017,00,13.04.2023 16:17:00 Before processing Datalar.txt, let's create a template containing ALL users of Users.txt, reusable for each daily ini file. This is the "blank" template content : [Adriana Francesca Lima] Value01=00000001 Value02= Value03=null Value04=null [Candice Swanepoel] Value01=00000010 Value02= Value03=null Value04=null [Gisele Bündchen] Value01=00000017 Value02= Value03=null Value04=null [Kendall Jenner] Value01=00000020 Value02= Value03=null Value04=null Now we process Datalar.txt (12.04.2023) (user 17 is absent), this is the resulting "12.04.2023.ini" [Adriana Francesca Lima] Value01=00000001 Value02=12.04.2023 Value03=07:01:00 Value04=16:01:00 [Candice Swanepoel] Value01=00000010 Value02=12.04.2023 Value03=07:10:00 Value04=16:10:00 [Gisele Bündchen] <= ABSENT Value01=00000017 Value02=12.04.2023 Value03=null Value04=null [Kendall Jenner] Value01=00000020 Value02=12.04.2023 Value03=19:20:00 Value04=null Now date changes in Datalar.txt and 13.04.2023 needs to be processed (user 10 is absent) Reuse the "blank" template and fill it again, this is the resulting "13.04.2023.ini" [Adriana Francesca Lima] Value01=00000001 Value02=13.04.2023 Value03=07:01:00 Value04=16:01:00 [Candice Swanepoel] <= ABSENT Value01=00000010 Value02=13.04.2023 Value03=null Value04=null [Gisele Bündchen] Value01=00000017 Value02=13.04.2023 Value03=07:17:00 Value04=07:17:00 [Kendall Jenner] Value01=00000020 Value02=13.04.2023 Value03=06:20:00 Value04=null In what format should be created the blank template ? * It could be a txt file ("Users template.txt"), and when needed, just copy it, for example, to "12.04.2023.ini" before processing Datalar.txt (12.04.2023), then copy the template again to "13.04.2023.ini" before processing Datalar.txt (13.04.2023) etc... * It could be an ini file ("Users template.ini") that you filled with IniWriteSection rather than IniWrite (creation should be faster), then copy it twice as indicated before (for 12.04.2023, then 13.04.2023) If it ever happens that an ID is found in Datalar.txt and not retrieved in Users.txt (I know, it shouldn't happen but who knows ?) While processing Datalar.txt, just add a section for this unknown person in the daily ini file, for example : Datalar.txt (14.04.2023) (ID 59 will not exist in Users.txt, sabotage !) ... 001,00000059,00,14.04.2023 07:59:00 ... "14.04.2023.ini" [Adriana Francesca Lima] etc... [Candice Swanepoel] etc... [Gisele Bündchen] etc... [Kendall Jenner] etc... [00000059] Value01=Undefined ID in Users.txt Value02=14.04.2023 Value03=07:59:00 Value04=null Good luck
    1 point
  5. Hello, TheXman. Sorry for not responding as fast as I should, but I was trying to perform some tests that finally didn't work. I've tried _PathSplit, along with ProcessList, ProcessExists and _WinAPI_GetProcessFileName. I was trying to get the ID with ProcessList, and then from that ID get the path of the running processes. But in tests I've done, they didn't work. The IDs of the Processes showed me perfectly, together with the name of the process, but some processes did not show any path, and other processes did show the path correctly. I've been looking for a reason why this might be happening, but couldn't find it. In any case, your code is completely different from what I had done. I am surprised by your code. It's great. I have to study all those lines of code, because as you tell me, there are many that I don't know. I have no words to thank you for that code. You are a master. I wish there were more people like you in other communities, to help beginners like me. If I can't find information about some lines of your code, and I have some doubts, I'll let you know. And don't worry, I'm not going to publish any tool without doing a lot of testing first. In the end I am taking this as a way of learning, because I am really at the base of learning AutoIT. I'll keep you informed. Greetings and thousands of thanks.
    1 point
  6. I enriched the above script - nice catch @mistersquirrle #include <WinAPIProc.au3> Global $hWnd, $PID HotKeySet("{END}", "_Sleep") Sleep(1000) While 1 ConsoleWrite("--------------------------------------------------------------------------------" & @CRLF) $hWnd = WinGetHandle('[ACTIVE]') ConsoleWrite("$hWnd:" & String($hWnd) & @CRLF) ConsoleWrite("WinTitle:" & WinGetTitle($hWnd) & @CRLF) $PID = WinGetProcess($hWnd) ConsoleWrite("PID:" & $PID & @CRLF) ConsoleWrite("PID FileName:" & _WinAPI_GetProcessFileName($PID) & @CRLF) Sleep(1000) WEnd Func _Sleep() Send("#1") EndFunc -------------------------------------------------------------------------------- $hWnd:0x00010280 WinTitle:Windows Default Lock Screen PID:9200 PID FileName:C:\Windows\SystemApps\Microsoft.LockApp_cw5n1h2txyewy\LockApp.exe --------------------------------------------------------------------------------
    1 point
  7. ioa747

    Txt split to ini file

    @pixelsearch thank you for shedding some light on the case, I can see that your lens is not just decorative in that case add some extra Func AddAbsentUser() ; https://www.autoitscript.com/forum/topic/210069-txt-split-to-ini-file/?do=findComment&comment=1517679 #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 ;-w 5 -w 6 -w 7 #include <Misc.au3> #include <File.au3> #include <Array.au3> #include <GUIConstantsEx.au3> _Singleton(@ScriptName, 0) Global $nMsg, $hGui, $idCombo, $lv, $CurUser Global $aUsers = WriteAllUserData() Global $aData = MakeDataArray(@ScriptDir & "\Data\") AddAbsentUser() MakeMyGuiList() HotKeySet("{HOME}", "MyArrayDisplay") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE GUIDelete() Exit EndSwitch WEnd ;---------------------------------------------------------------------------------------- Func WriteAllUserData() ; Make all ini files Local $aDatalar, $aUsers, $UserName, $aTemp, $IniFile, $aSpl, $sDate _FileReadToArray("Datalar.txt", $aDatalar, $FRTA_NOCOUNT) _FileReadToArray("Users.txt", $aUsers, $FRTA_COUNT, "=") Local $iLines = UBound($aDatalar) $sDate = '' For $i = 0 To $iLines - 1 $aTemp = StringSplit($aDatalar[$i], ", ", $STR_NOCOUNT) $UserName = GetUserName($aUsers, $aTemp[1]) ; if no user skip If $UserName <> "" Then If $sDate <> $aTemp[3] Then $sDate = $aTemp[3] ;~ ; format date 00.00.0000 for ini FileName ;~ $aSpl = StringSplit($sDate, ".") ;~ If StringLen($aSpl[1]) = 1 Then $aSpl[1] = "0" & $aSpl[1] ;~ $IniFile = $aSpl[1] & "." & $aSpl[2] & "." & $aSpl[3] & ".ini" $IniFile = $sDate & ".ini" ;write ini If IniRead(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value01", "Non-existing key") = "Non-existing key" Then IniWrite(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value01", $aTemp[1]) IniWrite(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value02", $aTemp[3]) IniWrite(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value03", $aTemp[4]) IniWrite(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value04", "null") Else If IniRead(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value03", "<UNKNOWN>") <> $aTemp[4] Then IniWrite(@ScriptDir & "\Data\" & $IniFile, $UserName, "Value04", $aTemp[4]) EndIf EndIf EndIf Next Return $aUsers EndFunc ;==>WriteAllUserData ;---------------------------------------------------------------------------------------- Func GetUserName($aUsers, $ID) ; ID to User Name Local $iIndex = _ArraySearch($aUsers, $ID, 1) If $iIndex <> -1 Then Return $aUsers[$iIndex][1] Else Return "" EndIf EndFunc ;==>GetUserName ;---------------------------------------------------------------------------------------- Func MakeDataArray($sStartPath = "") ; Find All Ini File If $sStartPath = "" Then $sStartPath = @ScriptDir Local $aArray[1][6] $aArray[0][0] = 0 ; "index" $aArray[0][1] = "UserID" $aArray[0][2] = "UserName" $aArray[0][3] = "Date" $aArray[0][4] = "Start" $aArray[0][5] = "End" Local $ArraySrtfiles = _FileListToArrayRec($sStartPath, "*.ini", $FLTAR_FILES, $FLTAR_RECUR) If Not IsArray($ArraySrtfiles) Then ConsoleWrite($sStartPath & " = Invalid input path" & @CRLF) Return Else For $x = 1 To $ArraySrtfiles[0] ;ConsoleWrite($sStartPath & $ArraySrtfiles[$x]& @CRLF) ReadIniToArray($aArray, $sStartPath & $ArraySrtfiles[$x]) Next Return $aArray EndIf EndFunc ;==>MakeDataArray ;---------------------------------------------------------------------------------------- Func ReadIniToArray(ByRef $aArray, $TxtFile) ; Read Ini To Array Local $index ;Read the INI section names. This will return a 1 dimensional array. Local $aSections = IniReadSectionNames($TxtFile) ;Check if an error occurred. If Not @error Then ;Enumerate through the array displaying the section names. For $i = 1 To $aSections[0] ReDim $aArray[UBound($aArray) + 1][6] $aArray[0][0] += 1 $index = $aArray[0][0] $aArray[$index][0] = $index ;"index" $aArray[$index][1] = IniRead($TxtFile, $aSections[$i], "Value01", "<EMPTY>") ;"UserID" $aArray[$index][2] = $aSections[$i] ;"UserName" $aArray[$index][3] = IniRead($TxtFile, $aSections[$i], "Value02", "<EMPTY>") ;"Date" $aArray[$index][4] = IniRead($TxtFile, $aSections[$i], "Value03", "<EMPTY>") ;"Start" $aArray[$index][5] = IniRead($TxtFile, $aSections[$i], "Value04", "<EMPTY>") ;"End" Next EndIf EndFunc ;==>ReadIniToArray ;---------------------------------------------------------------------------------------- Func MakeMyGuiList() ; GUI Create $hGui = GUICreate("_ank_ File Splitting", 400, 500, -1, -1) $lv = GUICtrlCreateListView("CART ID |DATE |TIME-1 |NAME AND SURNAME ", 10, 10, 380, 480) Local $sLine For $i = 1 To $aData[0][0] $sLine = $aData[$i][1] & "|" & $aData[$i][3] & "|" & $aData[$i][4] & "|" & $aData[$i][2] GUICtrlCreateListViewItem($sLine, $lv) If $aData[$i][4] > "08:10:00" And $aData[$i][4] < "17:00:00" Then GUICtrlSetBkColor(-1, 0xC0FFFF) $sLine = $aData[$i][1] & "|" & $aData[$i][3] & "|" & $aData[$i][5] & "|" & $aData[$i][2] GUICtrlCreateListViewItem($sLine, $lv) If $aData[$i][5] > "08:10:00" And $aData[$i][5] < "17:00:00" Then GUICtrlSetBkColor(-1, 0xC0FFFF) Next GUISetState(@SW_SHOW) Return $hGui EndFunc ;==>MakeMyGuiList ;---------------------------------------------------------------------------------------- Func AddAbsentUser() Local $sLine, $IniFile, $aSpl, $aArray = $aData ;*[Add Absent User to $aData Array Local $aDateUnique = _ArrayUnique($aArray, 3, 1) For $d = 1 To $aDateUnique[0] For $i = 1 To $aUsers[0][0] If _GetThis($aUsers[$i][0] & "-" & $aDateUnique[$d]) = -1 Then $aData[0][0] += 1 $sLine = $aData[0][0] & "|" & $aUsers[$i][0] & "|" & $aUsers[$i][1] & "|" & $aDateUnique[$d] & "|Null|Null" _ArrayAdd($aData, $sLine) EndIf Next Next ;Add Absent User to $aData Array]* ;*[proper Array Sort order For $i = 1 To $aData[0][0] ; format date YYYY.MM.DD.HH.MM.SS $aSpl = StringSplit($aData[$i][3], ".") If StringLen($aSpl[1]) = 1 Then $aSpl[1] = "0" & $aSpl[1] $sLine = $aSpl[3] & "." & $aSpl[2] & "." & $aSpl[1] & "." & $aData[$i][4] $aData[$i][0] = $sLine Next _ArraySort($aData, 0, 1) For $i = 1 To $aData[0][0] $aData[$i][0] = $i Next ;proper Array Sort order]* ;*[Write $aData Array to ini For $i = 1 To $aData[0][0] ;~ ; format date 00.00.0000 for ini FileName ;~ $aSpl = StringSplit($aData[$i][3], ".") ;~ If StringLen($aSpl[1]) = 1 Then $aSpl[1] = "0" & $aSpl[1] ;~ $IniFile = $aSpl[1] & "." & $aSpl[2] & "." & $aSpl[3] & ".ini" $IniFile = $aData[$i][3] & ".ini" ;write ini IniWrite(@ScriptDir & "\Data\" & $IniFile, $aData[$i][2], "Value01", $aData[$i][1]) IniWrite(@ScriptDir & "\Data\" & $IniFile, $aData[$i][2], "Value02", $aData[$i][3]) IniWrite(@ScriptDir & "\Data\" & $IniFile, $aData[$i][2], "Value03", $aData[$i][4]) IniWrite(@ScriptDir & "\Data\" & $IniFile, $aData[$i][2], "Value04", $aData[$i][5]) Next ;Write $aData Array to ini]* EndFunc ;==>AddAbsentUser ;---------------------------------------------------------------------------------------- Func _GetThis($Txt) Local $sIndex For $i = 1 To $aData[0][0] $sIndex = -1 If $aData[$i][1] & "-" & $aData[$i][3] = $Txt Then $sIndex = $i ExitLoop EndIf Next Return $sIndex EndFunc ;==>_GetThis ;---------------------------------------------------------------------------------------- Func MyArrayDisplay() _ArrayDisplay($aData, "$aData") EndFunc ;==>MyArrayDisplay ;---------------------------------------------------------------------------------------- Edit: I believe that Datalar.txt is some kind of report from the machine-clocks that the employees punched in the cards upon their arrival and departure. The one that has only the 001,00000098,00,1.04.2023 08:12:27 format Agree if we want (or must) include users who do not have a name, then the ini file must be changed from: [Adriana Francesca Lima] Value01=00000001 Value02=12.04.2023 Value03=07:36:39 Value04=null [Candice Swanepoel] Value01=00000010 Value02=12.04.2023 Value03=07:43:09 Value04=null to: [00000001] Value01=Adriana Francesca Lima Value02=12.04.2023 Value03=07:36:39 Value04=null [00000010] Value01=Candice Swanepoel Value02=12.04.2023 Value03=07:43:09 Value04=null to be able to keep a record for each user without a name
    1 point
  8. I think OP would like more, e.g. indicating those who are absent in each daily ini file. For example, let's say this person exists in Users.txt : 00000005=Ana Beatriz Barros If she didn't work on April 5th (e.g. not found in Datalar.txt for this date) then she still should be found in the daily ini file ("5.04.2023.ini") like indicated by OP in his precedent post : [Ana Beatriz Barros] Value01=00000005 Value02=5.04.2023 Value03=Null Value04=Null Which means adding to each daily ini file all users that didn't work that day (if I understood correctly) That's why OP tried to create an "Absent" array in his last code and display it in his ListView : $aAbsent = _ArrayFindAll($bFile, 0, Default, Default, Default, Default, 2) But this can't work with these parameters and not enough informations. Another issue (iirc) : Some id's found in Datalar.txt may not be found in Users.txt (they'll all have same name in Listview, e.g "Undefined ID") which complicates things. I don't know how these id's are created (apparently not in Users.txt first) which made me suggest that the sections in the daily ini file should be related to users id's and not to users names, something like this : [00000005] <= User ID found in Datalar.txt Value01=Ana Beatriz Barros <= corresponding name found in Users.txt Value02=5.04.2023 Value03=Null <= she didn't work at all that day (Value03 and Value04 are Null) Value04=Null <= ditto [00000300] <= User ID found in Datalar.txt Value01= Undefined ID <= not found in Users.txt Value02=5.04.2023 Value03=07:00:00 Value04=16:00:00 [00000301] <= User ID found in Datalar.txt Value01= Undefined ID <= not found in Users.txt Value02=5.04.2023 Value03=07:01:01 Value04=16:02:02 In the daily ini file, if you don't have each section corresponding to an Id, how will you manage Id's found in Datalar.txt when these Id's don't exist in Users.txt ? Anyway, let's hope OP will have enough infos with the script you guys provided, but imho doing all this with only txt files and ini files seems a bit difficult.
    1 point
  9. TheXman

    Txt split to ini file

    @mucitbey Just for clarification, using the datalar.txt and users.txt data in the first post, would the following table correctly reflect the results you are trying to load into daily INI files? Is having the end result in INI files a necessity? The result below was created by importing the datalar and user data into sqlite tables and running a relatively simple query against the joined tables. If your data is already in a database, you wouldn't even need to do the importing steps, you could just run the query against your existing database. Having the data in a database makes it much easier to generate any reports that you may need. Generating reports from INI files doesn't make much sense, unless it is a hard requirement. Was I right to assume that the date "1.04.2023" is in d.m.y format? In the US we use m.d.y, but the result didn't look right when I converted the dates to sqldate format using m.d.y. REPORT: Users with entries in datalar.txt (All dates) +------------+---------+------------------------+-------------------+ | Date | User Id | Name | Times | +------------+---------+------------------------+-------------------+ | 2023-04-02 | 20 | Kendall Jenner | 09:16:39,19:57:05 | | 2023-04-03 | 1 | Adriana Francesca Lima | 07:49:41,17:23:28 | | 2023-04-03 | 14 | Emily DiDonato | 08:30:04 | | 2023-04-03 | 15 | Emily Ratajkowski | 07:53:48,16:51:20 | | 2023-04-03 | 17 | Gisele Bündchen | 07:54:39,16:51:23 | | 2023-04-03 | 19 | Izabel Goulart | 08:20:22,09:43:09 | | 2023-04-03 | 20 | Kendall Jenner | 20:08:02 | | 2023-04-04 | 1 | Adriana Francesca Lima | 07:36:28,17:18:02 | | 2023-04-04 | 5 | Bar Refaeli | 08:07:58,17:01:47 | | 2023-04-04 | 10 | Candice Swanepoel | 08:01:04,17:00:35 | | 2023-04-04 | 14 | Emily DiDonato | 08:32:45,16:59:11 | | 2023-04-04 | 15 | Emily Ratajkowski | 07:39:39,17:00:49 | | 2023-04-04 | 16 | Gigi Hadid | 17:02:18 | | 2023-04-04 | 17 | Gisele Bündchen | 07:53:37,17:01:35 | | 2023-04-04 | 19 | Izabel Goulart | 08:12:41,17:01:15 | | 2023-04-04 | 20 | Kendall Jenner | 08:31:42 | | 2023-04-05 | 1 | Adriana Francesca Lima | 07:38:17,17:11:43 | | 2023-04-05 | 4 | Ana Beatriz Barros | 07:50:27,17:01:50 | | 2023-04-05 | 5 | Bar Refaeli | 08:04:33,16:59:18 | | 2023-04-05 | 14 | Emily DiDonato | 08:01:23,17:00:33 | | 2023-04-05 | 15 | Emily Ratajkowski | 07:40:10,17:01:41 | | 2023-04-05 | 16 | Gigi Hadid | 08:19:30,17:00:38 | | 2023-04-05 | 17 | Gisele Bündchen | 07:56:38,17:00:50 | | 2023-04-05 | 19 | Izabel Goulart | 07:59:10,17:01:19 | | 2023-04-06 | 1 | Adriana Francesca Lima | 07:37:53,17:13:35 | | 2023-04-06 | 4 | Ana Beatriz Barros | 08:05:11,17:02:09 | | 2023-04-06 | 5 | Bar Refaeli | 08:05:43,17:00:50 | | 2023-04-06 | 14 | Emily DiDonato | 08:03:33,17:00:35 | | 2023-04-06 | 15 | Emily Ratajkowski | 07:41:11,17:01:49 | | 2023-04-06 | 16 | Gigi Hadid | 08:02:57,17:00:29 | | 2023-04-06 | 17 | Gisele Bündchen | 07:53:54,17:01:01 | | 2023-04-06 | 19 | Izabel Goulart | 08:05:45,17:01:11 | | 2023-04-07 | 1 | Adriana Francesca Lima | 07:36:37,17:17:40 | | 2023-04-07 | 5 | Bar Refaeli | 08:09:20,17:01:14 | | 2023-04-07 | 14 | Emily DiDonato | 08:06:34,17:00:27 | | 2023-04-07 | 15 | Emily Ratajkowski | 07:46:21,17:01:34 | | 2023-04-07 | 16 | Gigi Hadid | 08:01:25 | | 2023-04-07 | 17 | Gisele Bündchen | 07:54:30,17:01:20 | | 2023-04-07 | 19 | Izabel Goulart | 08:03:26,17:00:50 | | 2023-04-07 | 20 | Kendall Jenner | 08:08:02,19:38:05 | | 2023-04-08 | 20 | Kendall Jenner | 20:24:29 | | 2023-04-09 | 20 | Kendall Jenner | 08:02:11 | | 2023-04-10 | 1 | Adriana Francesca Lima | 07:43:33,17:22:38 | | 2023-04-10 | 4 | Ana Beatriz Barros | 08:00:09,17:01:16 | | 2023-04-10 | 5 | Bar Refaeli | 08:07:45,17:00:28 | | 2023-04-10 | 10 | Candice Swanepoel | 07:58:14,16:54:06 | | 2023-04-10 | 14 | Emily DiDonato | 08:05:31,17:03:55 | | 2023-04-10 | 15 | Emily Ratajkowski | 07:39:54,17:01:46 | | 2023-04-10 | 16 | Gigi Hadid | 08:11:21,17:01:58 | | 2023-04-10 | 17 | Gisele Bündchen | 07:46:08,17:02:05 | | 2023-04-10 | 19 | Izabel Goulart | 08:13:57,17:01:22 | | 2023-04-11 | 1 | Adriana Francesca Lima | 07:39:28,17:29:23 | | 2023-04-11 | 4 | Ana Beatriz Barros | 07:56:48,17:01:46 | | 2023-04-11 | 5 | Bar Refaeli | 08:05:50,17:00:09 | | 2023-04-11 | 10 | Candice Swanepoel | 07:56:13,17:01:00 | | 2023-04-11 | 14 | Emily DiDonato | 08:07:14,17:00:25 | | 2023-04-11 | 15 | Emily Ratajkowski | 07:48:35,17:02:00 | | 2023-04-11 | 16 | Gigi Hadid | 08:09:10,17:00:37 | | 2023-04-11 | 17 | Gisele Bündchen | 07:50:43,17:04:26 | | 2023-04-11 | 19 | Izabel Goulart | 08:06:07,17:00:45 | | 2023-04-12 | 1 | Adriana Francesca Lima | 07:36:39 | | 2023-04-12 | 4 | Ana Beatriz Barros | 07:58:57 | | 2023-04-12 | 5 | Bar Refaeli | 08:09:24 | | 2023-04-12 | 10 | Candice Swanepoel | 07:43:09 | | 2023-04-12 | 14 | Emily DiDonato | 08:05:45 | | 2023-04-12 | 15 | Emily Ratajkowski | 07:44:33 | | 2023-04-12 | 16 | Gigi Hadid | 08:08:55 | | 2023-04-12 | 17 | Gisele Bündchen | 07:54:10 | | 2023-04-12 | 19 | Izabel Goulart | 08:04:47 | | 2023-04-12 | 20 | Kendall Jenner | 08:03:11 | +------------+---------+------------------------+-------------------+ Edit: Added additional daily (2023-04-05) report based on additional info. REPORT: All Users For A Specific Date (2023-04-05) +---------+----------------------------+-------------------+ | User Id | Name | Times | +---------+----------------------------+-------------------+ | 1 | Adriana Francesca Lima | 07:38:17,17:11:43 | | 2 | Alessandra Corine Ambrosio | | | 3 | Alyssa Miller | | | 4 | Ana Beatriz Barros | 07:50:27,17:01:50 | | 5 | Bar Refaeli | 08:04:33,16:59:18 | | 7 | Barbara Palvin | | | 8 | Behati Prinsloo | | | 9 | Bella Hadid | | | 11 | Cara Delevingne | | | 13 | Doutzen Kroes | | | 14 | Emily DiDonato | 08:01:23,17:00:33 | | 15 | Emily Ratajkowski | 07:40:10,17:01:41 | | 16 | Gigi Hadid | 08:19:30,17:00:38 | | 17 | Gisele Bündchen | 07:56:38,17:00:50 | | 18 | Irina Shayk | | | 19 | Izabel Goulart | 07:59:10,17:01:19 | +---------+----------------------------+-------------------+
    1 point
  10. I had a plan (in the past) to make an quick editor - I mean easy to embed. If I do it in the future I will back here with the same sugestion.
    1 point
  11. Interesting, after playing with your code a bit, it looks like it has something to do with _GUICtrlRichEdit_StreamFromVar vs _GUICtrlRichEdit_SetText. If I make just 2 small edits inside the RESH UDF, everything seems to be working great. In _RESH_SyntaxHighlight, change from _StreamFromVar to _SetText: ;~ _GUICtrlRichEdit_StreamFromVar($hRichEdit, $sCode) _GUICtrlRichEdit_SetText($hRichEdit, $sCode) Then in __RESH_HeaderFooter, add '\deftab416' after the first string: "\rtf1\ansi\ansicpg1252\deff0\deflang1033\deftab416" I'm not sure if there was a reason the RESH UDF was using _StreamFromVar, but it seems to be working fine so far without it... Anyway, thanks for the help @pixelsearch - I think it looks much better now.
    1 point
  12. Danp2

    PDF combining

    I've used PDFsam in the past for a similar project.
    1 point
×
×
  • Create New...