FrancescoDiMuro

WM_* Notification Codes

24 posts in this topic

#1 ·  Posted

Good evening :)
I was looking for WM_* Notification Codes, and, particurarly, for $EN_SETFOCUS notification code.
Does anyone knows where I can find a complete list of these commands?

Thank you :) 

Francesco


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Each kind of control has its own notification codes. You can find them in each corresponding AutoIt constant file coming with your installation.

For edit controls, the file is EditConstants.au3, in which you can see there is a ; Notifications comment
For combobox controls, the file is ComboConstants.au3....

For a list by type of control, you can get it from the MSDN site : Control Library
eg for buttons : https://msdn.microsoft.com/en-us/library/windows/desktop/bb775456(v=vs.85).aspx#notification_messages

 

 

Edited by jguinch

Share this post


Link to post
Share on other sites

#3 ·  Posted

Hi @jguinch!
I am working on an application, and I'd like to see when the user set the focus on an edit.
This is the code I'm working on, but I didn't manage to do what I'd like to do...

 

; High-order Word of $wParam is the Notification Code ( $EN_CHANGE, $EN_SETFOCUS, $EN_KILLFOCUS )
    ; Low-order Word of $wParam specifies the ID from where the Notification Code has been "launched" ( Control_ID... )
    ; $lParam specifies the HANDLE from where the Notification Code has been "launched"
    #forceref $hWnd, $iMsg
    Local $iNotificationCode = _WinAPI_HiWord($wParam)
    Local $iID_From = _WinAPI_LoWord($wParam)
    Local $hWnd_From = $lParam
    Local $hCtrl = GUICtrlGetHandle($input_DescrizioneUtente)

    Switch $iID_From
        Case $input_DescrizioneUtente
            Switch $iNotificationCode
                Case $EN_SETFOCUS
                    If @OSArch = "X64" Then
                        DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 1) ;~ Turns On 64 Bit Redirection
                        If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
                            Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                            If $iEsitoAvvioTastiera == 0 Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                                Exit
                            EndIf
                        EndIf
                        DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 0) ;~ Turns Off 64 Bit Redirection
                    Else
                        If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
                            Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                            If $iEsitoAvvioTastiera == 0 Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                                Exit
                            EndIf
                        EndIf
                    EndIf
                    GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

Notice that I'm working with Opt("GUIOnEventMode", 1)...
I don't know If it affects the "running" of the code...

Thank you :) 


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#5 ·  Posted

By the way, I still can't get my code work...


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#6 ·  Posted

Hello try to post a working code to help you. 

 

Best Regards

Share this post


Link to post
Share on other sites

#7 ·  Posted

@FrancescoDiMuro : here is an example to get the focus messages for an edit control :

#Include <GUIConstantsEx.au3>
#Include <EditConstants.au3>
#Include <WindowsConstants.au3>

Local $hGUI = GUICreate("gui", 220, 70)
Local $idEdit1 = GUICtrlCreateInput("", 10, 10, 200, 20)
Local $idEdit2 = GUICtrlCreateInput("", 10, 40, 200, 20)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

Func WM_COMMAND($hWndGUI, $MsgID, $WParam, $LParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    Switch $nID
        Case $idEdit1, $idEdit2
            Switch $nNotifyCode
                Case $EN_SETFOCUS
                    ConsoleWrite("Control with ID #" & $nID & " has focus" & @CRLF)
                Case $EN_KILLFOCUS
                    ConsoleWrite("Control with ID #" & $nID & " loose focus" & @CRLF)
            EndSwitch

    EndSwitch
EndFunc

 

Share this post


Link to post
Share on other sites

#8 ·  Posted

2 hours ago, Danyfirex said:

Hello try to post a working code to help you. 

 

Best Regards

Don't you like the third post? :D 

Thanks :) 


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#9 ·  Posted

Just now, jguinch said:

@FrancescoDiMuro : here is an example to get the focus messages for an edit control :

#Include <GUIConstantsEx.au3>
#Include <EditConstants.au3>
#Include <WindowsConstants.au3>

Local $hGUI = GUICreate("gui", 220, 70)
Local $idEdit1 = GUICtrlCreateInput("", 10, 10, 200, 20)
Local $idEdit2 = GUICtrlCreateInput("", 10, 40, 200, 20)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

Func WM_COMMAND($hWndGUI, $MsgID, $WParam, $LParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    Switch $nID
        Case $idEdit1, $idEdit2
            Switch $nNotifyCode
                Case $EN_SETFOCUS
                    ConsoleWrite("Control with ID #" & $nID & " has focus" & @CRLF)
                Case $EN_KILLFOCUS
                    ConsoleWrite("Control with ID #" & $nID & " loose focus" & @CRLF)
            EndSwitch

    EndSwitch
EndFunc

 

And If I'm working with Opt("OnEventMode", 1) ?

Thanks :) 


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#10 ·  Posted

39 minutes ago, FrancescoDiMuro said:

Don't you like the third post? :D 

Thanks :) 

No. too complex for me :S

#Include <GUIConstantsEx.au3>
#Include <EditConstants.au3>
#Include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
Opt("GUIOnEventMode", 1)



Local $hGUI = GUICreate("gui", 220, 90)
Local $idEdit1 = GUICtrlCreateInput("", 10, 10, 200, 20)
Local $idEdit2 = GUICtrlCreateInput("", 10, 40, 200, 20)
GUICtrlCreateButton("OK", 80, 65, 50)
GUICtrlSetOnEvent(-1, "OKPressed")


GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()

While Sleep(10)

WEnd

Func OKPressed()
    MsgBox($MB_SYSTEMMODAL, "OK Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle & " CtrlHandle=" & @GUI_CtrlHandle)
EndFunc   ;==>OKPressed




Func SpecialEvents()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_CLOSE
            MsgBox($MB_SYSTEMMODAL, "Close Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

            GUIDelete()
            Exit

        Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
            MsgBox($MB_SYSTEMMODAL, "Window Minimized", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

        Case @GUI_CtrlId = $GUI_EVENT_RESTORE
            MsgBox($MB_SYSTEMMODAL, "Window Restored", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

    EndSelect
EndFunc   ;==>SpecialEvents

Func WM_COMMAND($hWndGUI, $MsgID, $WParam, $LParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    Switch $nID
        Case $idEdit1, $idEdit2
            Switch $nNotifyCode
                Case $EN_SETFOCUS
                    ConsoleWrite("Control with ID #" & $nID & " has focus" & @CRLF)
                Case $EN_KILLFOCUS
                    ConsoleWrite("Control with ID #" & $nID & " loose focus" & @CRLF)
            EndSwitch

    EndSwitch
EndFunc

Saludos

Share this post


Link to post
Share on other sites

#11 ·  Posted

@Danyfirex
My script still doesn't work...

Could ADLib ruin the execution of the script? I don't know what to do anymore! 


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#12 ·  Posted

Francesco,

Can you post the script or a runnable reproducer?

kylomas


Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

#13 ·  Posted

On 10/5/2017 at 11:45 PM, kylomas said:

Francesco,

Can you post the script or a runnable reproducer?

kylomas

Post #3...

No WM_COMMAND is launched...


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#14 ·  Posted

1 hour ago, FrancescoDiMuro said:

Post #3...

That's not a runnable script.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#15 ·  Posted

1 minute ago, BrewManNH said:

That's not a runnable script.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icone\icona_StampaAudit.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Region INCLUDE
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <FileConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <ColorConstants.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
#EndRegion

Opt("GUIOnEventMode", 1)

; A4 Portrait Size in Px @72 DPI = 842 W x 595 H

#Region Global Declarations

Global $sHmiCheckLogIntegrity = "\HmiCheckLogIntegrity.exe" ; ------------------------------ HmiCheckLogIntegrity.exe ------------------------------
                                                            ; Possibili valori dell'HmiCheckLogIntegrity:
                                                            ; < 0 : Errori vari, come il formato del file non valido, nessun file disponibile... ;
                                                            ; 1   : L'Audit Trail verificato è valido;
                                                            ; > 0 : Numero di riga in cui è stato manipolato l'Audit Trail verificato.
                                                            ; -------------------------------------------------------------------------------------
                                                            ; Se WinCC sta collezionando ancora i dati, l'HmiCheckLogIntegrity restituirà il
                                                            ; seguente messaggio:
                                                            ; "The specified source file could not be opened!"
                                                            ; -------------------------------------------------------------------------------------

Global $sFileConfigurazione = @ScriptDir & "\Configurazione\configurazione_audit.ini"

Global $sDataOdierna = @MDAY & "/" & @MON & "/" & @YEAR

Global $sFileCrystalReports = @ScriptDir & "\file_database_cr.txt"

Global $iRicercaData = 0, $iRicercaDescrizione = 0, $iRicercaData_Descrizione = 0, $iRicercaID_Utente = 0, $iRicercaData_ID = 0, $iRicercaDescrizione_ID = 0, _
       $iRicercaData_Descrizione_ID = 0

Global $sFileTastieraVirtuale = @WindowsDir & "\System32\osk.exe"

#EndRegion

#Region ### START Koda GUI section ### Form=c:\users\portatile-60\documents\documenti lavoro\autoit\beta_tested_stampeaudit\stampa_report_audit\form_stampareportaudit_onedate.kxf
$form_StampaAudit = GUICreate("Stampa Report Audit", 1009, 730, 0, 0) ; 1265, 986, 0, 0) ; 202, 30 1265, 986, 0, 0)
GUISetOnEvent($GUI_EVENT_CLOSE, "ChiudiApplicazione")
Global $checkbox_DataAuditUtente = GUICtrlCreateCheckbox("", 37, 112, 17, 17)
GUICtrlSetOnEvent(-1, "LanciaTastieraVirtuale")
Global $checkbox_DescrizioneUtente = GUICtrlCreateCheckbox("", 37, 147, 17, 17)
GUICtrlSetOnEvent(-1, "LanciaTastieraVirtuale")
Global $checkbox_ID_Utente = GUICtrlCreateCheckbox("", 341, 147, 17, 17)
GUICtrlSetOnEvent(-1, "LanciaTastieraVirtuale")
Global $date_DataAuditUtente = GUICtrlCreateDate($sDataOdierna, 145, 110, 106, 24, 0)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $input_DescrizioneUtente = GUICtrlCreateInput("", 145, 147, 161, 24)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $input_ID_Utente = GUICtrlCreateInput("", 433, 147, 161, 24)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $button_AnteprimaReport = GUICtrlCreateButton("Anteprima Report", 624, 89, 91, 41, BitOR($BS_CENTER, $BS_VCENTER,$BS_MULTILINE))
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
GUICtrlSetOnEvent(-1, "HubFunzioniAnteprima")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $button_StampaReport = GUICtrlCreateButton("Stampa Report", 624, 131, 91, 41, BitOR($BS_CENTER, $BS_VCENTER,$BS_MULTILINE))
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
GUICtrlSetOnEvent(-1, "HubFunzioniStampa")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $lv_AnteprimaReport = GUICtrlCreateListView("Data / Ora|ID Utente|ID Processo|Descrizione|Commento", 3, 224, 1006, 505, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 150)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 400)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 100)
$group_Query = GUICtrlCreateGroup(" Query ", 8, 64, 713, 113)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$label_Titolo = GUICtrlCreateLabel("Stampa Report Audit", 358, 15, 292, 38)
GUICtrlSetFont(-1, 22, 800, 0, "Arial")
$label_UserGuide = GUICtrlCreateLabel("Seleziona il/i criterio/i di ricerca per la stampa dell'Audit Report", 21, 89, 343, 19)
GUICtrlSetFont(-1, 9, 400, 0, "Arial")
$label_DataAuditUtente = GUICtrlCreateLabel("Data Audit", 59, 112, 70, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
$label_DescrizioneUtente = GUICtrlCreateLabel("Descrizione", 59, 147, 78, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
$label_ID_Utente = GUICtrlCreateLabel("ID Utente", 363, 147, 62, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
$label_AnteprimaReport = GUICtrlCreateLabel("Anteprima Report", 413, 188, 182, 28)
GUICtrlSetFont(-1, 16, 800, 0, "Arial")
GUISetState(@SW_SHOW, $form_StampaAudit)
#EndRegion ### END Koda GUI section ###


AdlibRegister("GestioneCampiGUI", 250)

While 1
    Sleep(100)
WEnd

Func ChiudiApplicazione()
    AdlibUnRegister("GestioneCampiGUI")
    ProcessClose("osk.exe")
    Exit
EndFunc

Func LanciaTastieraVirtuale()
    Select
        Case @GUI_CtrlId = $checkbox_DataAuditUtente
            GUICtrlSetState($date_DataAuditUtente, $GUI_FOCUS)
            If @OSArch = "X64" Then
                DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 1) ;~ Turns On 64 Bit Redirection
                If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED Then
                    Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                    If $iEsitoAvvioTastiera == 0 Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                        Exit
                    EndIf
                EndIf
                DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 0) ;~ Turns Off 64 Bit Redirection
            Else
                If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED Then
                    Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                    If $iEsitoAvvioTastiera == 0 Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                        Exit
                    EndIf
                EndIf
            EndIf
        Case @GUI_CtrlId = $checkbox_DescrizioneUtente
            GUICtrlSetState($checkbox_DescrizioneUtente, $GUI_FOCUS)
            If @OSArch = "X64" Then
                DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 1) ;~ Turns On 64 Bit Redirection
                If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
                    Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                    If $iEsitoAvvioTastiera == 0 Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                        Exit
                    EndIf
                EndIf
                DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 0) ;~ Turns Off 64 Bit Redirection
            Else
                If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
                    Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                    If $iEsitoAvvioTastiera == 0 Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                        Exit
                    EndIf
                EndIf
            EndIf
        Case @GUI_CtrlId = $checkbox_ID_Utente
            GUICtrlSetState($checkbox_ID_Utente, $GUI_FOCUS)
            If @OSArch = "X64" Then
                DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 1) ;~ Turns On 64 Bit Redirection
                If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED Then
                    Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                    If $iEsitoAvvioTastiera == 0 Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                        Exit
                    EndIf
                EndIf
                DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 0) ;~ Turns Off 64 Bit Redirection
            Else
                If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED Then
                    Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
                    If $iEsitoAvvioTastiera == 0 Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
                        Exit
                    EndIf
                EndIf
            EndIf
    EndSelect
EndFunc



Func GestioneCampiGUI()
    ; Controllo sulla $checkbox_DataAuditUtente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED) Then
        GUICtrlSetState($date_DataAuditUtente, $GUI_ENABLE)
        $iRicercaData = 1
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 0
        $iRicercaID_Utente = 0
        $iRicercaData_ID = 0
        $iRicercaDescrizione_ID = 0
        $iRicercaData_Descrizione_ID = 0
        ; Cursori...=================================================================================================================>
    Else
        GUICtrlSetState($date_DataAuditUtente, $GUI_DISABLE)
        GUICtrlSetData($date_DataAuditUtente, $sDataOdierna)
        $iRicercaData = 0
    EndIf

    ; Controllo sulla $checkbox_DescrizioneUtente
    If(GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED) Then
        GUICtrlSetState($input_DescrizioneUtente, $GUI_ENABLE)
        $iRicercaData = 0
        $iRicercaDescrizione = 1
        $iRicercaData_Descrizione = 0
        $iRicercaID_Utente = 0
        $iRicercaData_ID = 0
        $iRicercaDescrizione_ID = 0
        $iRicercaData_Descrizione_ID = 0
    Else
        GUICtrlSetState($input_DescrizioneUtente, $GUI_DISABLE)
        GUICtrlSetData($input_DescrizioneUtente, "")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        $iRicercaDescrizione = 0
    EndIf

    ; Controllo sulla $checkbox_DataAuditUtente E $checkbox_DescrizioneUtente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED) Then
        $iRicercaData = 0
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 1
        $iRicercaID_Utente = 0
        $iRicercaData_ID = 0
        $iRicercaDescrizione_ID = 0
        $iRicercaData_Descrizione_ID = 0
    Else
        $iRicercaData_Descrizione = 0
    EndIf

    ; Controllo sulla $checkbox_ID_Utente
    If(GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED) Then
        GUICtrlSetState($input_ID_Utente, $GUI_ENABLE)
        $iRicercaData = 0
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 0
        $iRicercaID_Utente = 1
        $iRicercaData_ID = 0
        $iRicercaDescrizione_ID = 0
        $iRicercaData_Descrizione_ID = 0
    Else
        GUICtrlSetState($input_ID_Utente, $GUI_DISABLE)
        GUICtrlSetData($input_ID_Utente, "")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        $iRicercaID_Utente = 0
    EndIf

    ; Controllo sulla $checkbox_DataAuditUtente E $checkbox_ID_Utente
    If(GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED And GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED) Then
        $iRicercaData = 0
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 0
        $iRicercaID_Utente = 0
        $iRicercaData_ID = 1
        $iRicercaDescrizione_ID = 0
        $iRicercaData_Descrizione_ID = 0
    Else
        $iRicercaData_ID = 0
    EndIf

    ; Controllo sulla $checkbox_ID_Utente E $checkbox_DescrizioneUtente
    If(GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED) Then
        $iRicercaData = 0
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 0
        $iRicercaID_Utente = 0
        $iRicercaData_ID = 0
        $iRicercaDescrizione_ID = 1
        $iRicercaData_Descrizione_ID = 0
    Else
        $iRicercaDescrizione_ID = 0
    EndIf

    ; Controllo sulla $$checkbox_DataAuditUtente E $checkbox_DescrizioneUtente E $checkbox_ID_Utente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED And GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED) Then
        $iRicercaData = 0
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 0
        $iRicercaID_Utente = 0
        $iRicercaData_ID = 0
        $iRicercaDescrizione_ID = 0
        $iRicercaData_Descrizione_ID = 1
    Else
        $iRicercaData_Descrizione_ID = 0
    EndIf

    ; Controllo sulla $checkbox_DataAuditUtente O $checkbox_DescrizioneUtente O $checkbox_ID_Utente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED Or GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Or GUICtrlRead($checkbox_ID_Utente) = $GUI_CHECKED) Then
        GUICtrlSetState($button_AnteprimaReport, $GUI_ENABLE)
        GUICtrlSetState($button_StampaReport, $GUI_ENABLE)
    Else
        GUICtrlSetState($button_AnteprimaReport, $GUI_DISABLE)
        GUICtrlSetState($button_StampaReport, $GUI_DISABLE)
    EndIf
EndFunc

Func ControllaFileAudit($sPercorsoAudit, $sPercorsoChecker)
    Local $aFileCartellaAuditCopy = _FileListToArray($sPercorsoAudit, "*.txt")
    If @error Then
        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della lista dei file nella directory" & @CRLF & $sPercorsoAudit & @CRLF & "Errore: " & @error)
        Exit
    Else
        Local $iPID = Run("cmd.exe" & " /k " & '""' & $sPercorsoChecker & $sHmiCheckLogIntegrity & '"' & " " & '"' & $sPercorsoAudit & "\" & $aFileCartellaAuditCopy[1] & '""', "", @SW_HIDE, $STDOUT_CHILD) ; ' /k ""C:\Users\Portatile-60\Desktop\HmiCheckLogIntegrity.exe" "C:\Users\Portatile-60\Desktop\AuditTrailDosaggio0_20170327_151335_DOSAGGIO_PW_01.txt""')
        Local $sSTDOutRead = ""
        While 1
            $sSTDOutRead &= StdoutRead($iPID)
            If @error Then ExitLoop
        WEnd
        ; MsgBox($MB_ICONINFORMATION, "Risultato Shell:", $sSTDOutRead) ; Rimuovere il commento ( ; ) prima del testo "MsgBox" per visualizzare il contenuto della Shell.
        Local $aContenutoShell = StringSplit(StringTrimRight(StringStripCR($sSTDOutRead), StringLen(@CRLF)), @CRLF, $STR_NOCOUNT)
        If @error Then
            MsgBox($MB_ICONERROR, "Errore!", "Errore durante lo splitting del contenuto del Prompt dei Comandi." & @CRLF & "Errore: " & @error)
            Return False
        Else
            If(IsArray($aContenutoShell)) Then
                For $i = 0 To UBound($aContenutoShell) - 1
                    ; Nella versione presente sul Panel PC, la stringa della quale controlla
                    ; la presenza nella Shell è "check succeeded." e non "Consistency check succeeded."
                    ; Per riportare l'applicazione alla "versione precedente", sostiture
                    ; "Consistency check succeeded." con "check succeeded."
                    If(StringInStr($aContenutoShell[$i], "Consistency check succeeded.")) Then
                        Return True
                    EndIf
                Next
            EndIf
        EndIf
    EndIf
EndFunc

Func HubFunzioniAnteprima()
    If($iRicercaData == 1) Then
        CreaListView_PerData()
    ElseIf($iRicercaDescrizione == 1) Then
        CreaListView_PerDescrizione()
    ElseIf($iRicercaData_Descrizione == 1) Then
        CreaListView_PerDataDescrizione()
    ElseIf($iRicercaData_ID == 1) Then
        CreaListView_PerDataID()
    ElseIf($iRicercaDescrizione_ID == 1) Then
        CreaListView_PerDescrizione_ID()
    ElseIf($iRicercaData_Descrizione_ID == 1) Then
        CreaListView_PerData_Descrizione_ID()
    ElseIf($iRicercaID_Utente == 1) Then
        CreaListView_PerID_Utente()
    EndIf
EndFunc

Func CreaListView_PerData()
    If(FileExists($sFileConfigurazione) == 0) Then
        MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
    Else
        Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
        If @error Then
            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
            Exit
        Else
            If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                    Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                    If($hFileAudit == -1) Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                    Else
                        Local $aContenutoFileAudit = ""
                        _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            FileClose($hFileAudit)
                            _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                            Local $sItem_ListView = ""
                            Local $iEsitoRicerca = 0
                            Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                            Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                            Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                            Local $aContenutoFileAudit_Split = ""
                            Local $sDataOraUltimaRiga = ""
                            For $i = 1 To UBound($aContenutoFileAudit) - 2
                                $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed)) Then
                                    $sItem_ListView = _
                                                        $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & "|" & _
                                                        $aContenutoFileAudit_Split[3] & "|" & _
                                                        $aContenutoFileAudit_Split[4] & "|" & _
                                                        $aContenutoFileAudit_Split[5] & "|" & _
                                                        $aContenutoFileAudit_Split[6]
                                    GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                    $iEsitoRicerca+=1
                                    $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                EndIf
                            Next
                            If($iEsitoRicerca == 0) Then
                                MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                        "Data = '" & $sDataReportUtente & "'." & @CRLF & _
                                                        "Inserisci una nuova Data per creare un report.")
                            EndIf
                        EndIf
                    EndIf
                EndIf
            Else
                MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                Exit
            EndIf
        EndIf
    EndIf
EndFunc

Func CreaListView_PerDescrizione()
    Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
    If($sDescrizioneUtente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
        GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                                Local $sItem_ListView = ""
                                Local $iEsitoRicerca = 0
                                Local $aDataReport_Split = ""
                                Local $sDataReport = ""
                                Local $sDataReport_Reversed = ""
                                Local $aContenutoFileAudit_Split = ""
                                Local $sDataOraUltimaRiga = ""
                                For $i = 1 To UBound($aContenutoFileAudit) - 2
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                    $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                    If(StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente)) Then
                                        $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                        $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                        $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                        $sItem_ListView = _
                                                        $sDataReport_Reversed & StringReplace($aContenutoFileAudit_Split[1], $sDataReport, "") & "|" & _
                                                        $aContenutoFileAudit_Split[3] & "|" & _
                                                        $aContenutoFileAudit_Split[4] & "|" & _
                                                        $aContenutoFileAudit_Split[5] & "|" & _
                                                        $aContenutoFileAudit_Split[6]
                                        GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                        $iEsitoRicerca+=1
                                        $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                    EndIf
                                Next
                                If($iEsitoRicerca == 0) Then
                                    MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                            "Descrizione = '" & $sDescrizioneUtente & "'." & @CRLF & _
                                                            "Inserisci una nuova Descrizione per creare un report.")
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func CreaListView_PerDataDescrizione()
    Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
    If($sDescrizioneUtente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
        GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                                Local $sItem_ListView = ""
                                Local $iEsitoRicerca = 0
                                Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                Local $aContenutoFileAudit_Split = ""
                                Local $sDataOraUltimaRiga = ""
                                For $i = 1 To UBound($aContenutoFileAudit) - 2
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                    $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                    If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                        StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente)) Then
                                        $sItem_ListView = _
                                                            $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & "|" & _
                                                            $aContenutoFileAudit_Split[3] & "|" & _
                                                            $aContenutoFileAudit_Split[4] & "|" & _
                                                            $aContenutoFileAudit_Split[5] & "|" & _
                                                            $aContenutoFileAudit_Split[6]
                                        GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                        $iEsitoRicerca+=1
                                        $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                    EndIf
                                Next
                                If($iEsitoRicerca == 0) Then
                                    MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                            "Data = '" & $sDataReportUtente & "'" & @CRLF & _
                                                            "Descrizione = '" & $sDescrizioneUtente & "'." & @CRLF & _
                                                            "Inserisci una nuova data e una nuova descrizione per creare un report.")
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func CreaListView_PerDataID()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                                Local $sItem_ListView = ""
                                Local $iEsitoRicerca = 0
                                Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                Local $aContenutoFileAudit_Split = ""
                                Local $sDataOraUltimaRiga = ""
                                For $i = 1 To UBound($aContenutoFileAudit) - 2
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                    $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                    If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                        StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                        $sItem_ListView = _
                                                            $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & "|" & _
                                                            $aContenutoFileAudit_Split[3] & "|" & _
                                                            $aContenutoFileAudit_Split[4] & "|" & _
                                                            $aContenutoFileAudit_Split[5] & "|" & _
                                                            $aContenutoFileAudit_Split[6]
                                        GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                        $iEsitoRicerca+=1
                                        $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                    EndIf
                                Next
                                If($iEsitoRicerca == 0) Then
                                    MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                            "Data = '" & $sDataReportUtente & "'" & @CRLF & _
                                                            "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                            "Inserisci una nuova Data e un nuovo ID Utente per creare un report.")
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func CreaListView_PerDescrizione_ID()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
        If($sDescrizioneUtente = "") Then
            MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
            GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
        Else
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
            If(FileExists($sFileConfigurazione) == 0) Then
                MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
            Else
                Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                        Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                            Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                            If($hFileAudit == -1) Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                            Else
                                Local $aContenutoFileAudit = ""
                                _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                                If @error Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                    Exit
                                Else
                                    FileClose($hFileAudit)
                                    _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                                    Local $sItem_ListView = ""
                                    Local $iEsitoRicerca = 0
                                    Local $aDataReport_Split = ""
                                    Local $sDataReport = ""
                                    Local $sDataReport_Reversed = ""
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente) And _
                                            StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                            $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                            $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                            $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                            $sItem_ListView = _
                                                                $sDataReport_Reversed & StringReplace($aContenutoFileAudit_Split[1], $sDataReport, "") & "|" & _
                                                                $aContenutoFileAudit_Split[3] & "|" & _
                                                                $aContenutoFileAudit_Split[4] & "|" & _
                                                                $aContenutoFileAudit_Split[5] & "|" & _
                                                                $aContenutoFileAudit_Split[6]
                                            GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    If($iEsitoRicerca == 0) Then
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                                "Descrizione = '" & $sDescrizioneUtente & "'" & @CRLF & _
                                                                "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                                "Inserisci una nuova Descrizione e un nuovo ID Utente per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    Else
                        MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                        Exit
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func CreaListView_PerData_Descrizione_ID()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
        If($sDescrizioneUtente = "") Then
            MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
            GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
        Else
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
            If(FileExists($sFileConfigurazione) == 0) Then
                MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
            Else
                Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                        Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                            Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                            If($hFileAudit == -1) Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                            Else
                                Local $aContenutoFileAudit = ""
                                _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                                If @error Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                    Exit
                                Else
                                    FileClose($hFileAudit)
                                    _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                                    Local $sItem_ListView = ""
                                    Local $iEsitoRicerca = 0
                                    Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                    Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                    Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                           StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente) And _
                                           StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                            $sItem_ListView = _
                                                                $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & "|" & _
                                                                $aContenutoFileAudit_Split[3] & "|" & _
                                                                $aContenutoFileAudit_Split[4] & "|" & _
                                                                $aContenutoFileAudit_Split[5] & "|" & _
                                                                $aContenutoFileAudit_Split[6]
                                            GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    If($iEsitoRicerca == 0) Then
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con: " & @CRLF & _
                                                                "Data = '" & $sDataReportUtente_Reversed & "'" & @CRLF & _
                                                                "Descrizione = '" & $sDescrizioneUtente & "'" & @CRLF & _
                                                                "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                                "Inserisci una nuova Data, una nuova Descrizione e un nuovo ID Utente per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    Else
                        MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                        Exit
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func CreaListView_PerID_Utente()
    MsgBox($MB_ICONINFORMATION, "", "CreaListView_PerID_Utente")
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                _GUICtrlListView_DeleteAllItems($lv_AnteprimaReport)
                                Local $sItem_ListView = ""
                                Local $iEsitoRicerca = 0
                                Local $aDataReport_Split = ""
                                Local $sDataReport = ""
                                Local $sDataReport_Reversed = ""
                                Local $aContenutoFileAudit_Split = ""
                                Local $sDataOraUltimaRiga = ""
                                For $i = 1 To UBound($aContenutoFileAudit) - 2
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                    $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                    If(StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                        $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                        $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                        $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                        $sItem_ListView = _
                                                        $sDataReport_Reversed & StringReplace($aContenutoFileAudit_Split[1], $sDataReport, "") & "|" & _
                                                        $aContenutoFileAudit_Split[3] & "|" & _
                                                        $aContenutoFileAudit_Split[4] & "|" & _
                                                        $aContenutoFileAudit_Split[5] & "|" & _
                                                        $aContenutoFileAudit_Split[6]
                                        GUICtrlCreateListViewItem($sItem_ListView, $lv_AnteprimaReport)
                                        $iEsitoRicerca+=1
                                        $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                    EndIf
                                Next
                                If($iEsitoRicerca == 0) Then
                                    MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con" & @CRLF & _
                                                            "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                            "Inserisci un nuovo ID Utente per creare un report.")
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func HubFunzioniStampa()
    If($iRicercaData == 1) Then
        StampaReportAudit_PerData()
    ElseIf($iRicercaDescrizione == 1) Then
        StampaReportAudit_PerDescrizione()
    ElseIf($iRicercaData_Descrizione == 1) Then
        StampaReportAudit_PerDataDescrizione()
    ElseIf($iRicercaData_ID == 1) Then
        StampaReportAudit_PerDataID()
    ElseIf($iRicercaDescrizione_ID == 1) Then
        StampaReportAudit_PerDescrizione_ID()
    ElseIf($iRicercaData_Descrizione_ID == 1) Then
        StampaReportAudit_PerData_Descrizione_ID()
    ElseIf($iRicercaID_Utente == 1) Then
        StampaReportAudit_PerID_Utente()
    EndIf
EndFunc

Func StampaReportAudit_PerData()
    ; Eliminazione del file di report precedentemente generato
    If(FileExists($sFileCrystalReports) == 1) Then
        FileDelete($sFileCrystalReports)
    EndIf
    If(FileExists($sFileConfigurazione) == 0) Then
        MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
    Else
        Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
        If @error Then
            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
            Exit
        Else
            If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                    Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                    If($hFileAudit == -1) Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                    Else
                        Local $aContenutoFileAudit = ""
                        _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            FileClose($hFileAudit)
                            If(FileExists($sFileCrystalReports) == 1) Then
                                FileDelete($sFileCrystalReports)
                                _FileCreate($sFileCrystalReports)
                                If @error Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                    Exit
                                EndIf
                            EndIf
                            Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                            If($hFileCrystalReports == -1) Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                Exit
                            Else
                                Local $sRiga = ""
                                Local $iEsitoRicerca = 0
                                Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                Local $aContenutoFileAudit_Split = ""
                                Local $sDataOraUltimaRiga = ""
                                FileWriteLine($hFileCrystalReports, '"DateTimeStamp","UserID","ProcessID","Description","Comment"' & @CRLF)
                                For $i = 1 To UBound($aContenutoFileAudit) - 2
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                    $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                    If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed)) Then
                                        $sRiga = _
                                                        '"' & $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                        FileWriteLine($hFileCrystalReports, $sRiga)
                                        $iEsitoRicerca+=1
                                        $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                    EndIf
                                Next
                                FileWriteLine($hFileCrystalReports, _
                                                                    '""' & "," & _
                                                                    '"System"' & "," & _
                                                                    '"Application"' & "," & _
                                                                    '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                    '""')


                                FileClose($hFileCrystalReports)
                                If($iEsitoRicerca > 0) Then
                                    Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                    If($iEsitoShell == 0) Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                    EndIf
                                    Exit
                                Else
                                    MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                            "Data = '" & $sDataReportUtente & "'." & @CRLF & _
                                                            "Inserisci una nuova Data per creare un report.")
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                EndIf
            Else
                MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                Exit
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerDescrizione()
    Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
    If($sDescrizioneUtente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
        GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        ; Eliminazione del file di report precedentemente generato
        If(FileExists($sFileCrystalReports) == 1) Then
            FileDelete($sFileCrystalReports)
        EndIf
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                If(FileExists($sFileCrystalReports) == 1) Then
                                    FileDelete($sFileCrystalReports)
                                    _FileCreate($sFileCrystalReports)
                                    If @error Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                        Exit
                                    EndIf
                                EndIf
                                Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                If($hFileCrystalReports == -1) Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                    Exit
                                Else
                                    Local $sRiga = ""
                                    Local $iEsitoRicerca = 0
                                    Local $aDataReport_Split = ""
                                    Local $sDataReport = ""
                                    Local $sDataReport_Reversed = ""
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    FileWriteLine($hFileCrystalReports, '"DateTimeStamp","UserID","ProcessID","Description","Comment"' & @CRLF)
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente)) Then
                                            $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                            $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                            $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                            $sRiga = _
                                                            '"' & $sDataReport_Reversed & StringReplace($aContenutoFileAudit_Split[1], $sDataReport, "") & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                            FileWriteLine($hFileCrystalReports, $sRiga)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    FileWriteLine($hFileCrystalReports, _
                                                                        '""' & "," & _
                                                                        '"System"' & "," & _
                                                                        '"Application"' & "," & _
                                                                        '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                        '""')
                                    FileClose($hFileCrystalReports)
                                    If($iEsitoRicerca > 0) Then
                                        Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                        If($iEsitoShell == 0) Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                        EndIf
                                        Exit
                                    Else
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                                "Descrizione = '" & $sDescrizioneUtente & "'." & @CRLF & _
                                                                "Inserisci una nuova Descrizione per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerDataDescrizione()
    Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
    If($sDescrizioneUtente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
        GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        ; Eliminazione del file di report precedentemente generato
        If(FileExists($sFileCrystalReports) == 1) Then
            FileDelete($sFileCrystalReports)
        EndIf
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                If(FileExists($sFileCrystalReports) == 1) Then
                                    FileDelete($sFileCrystalReports)
                                    _FileCreate($sFileCrystalReports)
                                    If @error Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                        Exit
                                    EndIf
                                EndIf
                                Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                If($hFileCrystalReports == -1) Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                    Exit
                                Else
                                    Local $sRiga = ""
                                    Local $iEsitoRicerca = 0
                                    Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                    Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                    Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    FileWriteLine($hFileCrystalReports, '"DateTimeStamp","UserID","ProcessID","Description","Comment"' & @CRLF)
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                            StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente)) Then
                                            $sRiga = _
                                                            '"' & $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                            FileWriteLine($hFileCrystalReports, $sRiga)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    FileWriteLine($hFileCrystalReports, _
                                                                        '""' & "," & _
                                                                        '"System"' & "," & _
                                                                        '"Application"' & "," & _
                                                                        '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                        '""')

                                    FileClose($hFileCrystalReports)
                                    If($iEsitoRicerca > 0) Then
                                        Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                        If($iEsitoShell == 0) Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                        EndIf
                                        Exit
                                    Else
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                                "Data = '" & $sDataReportUtente & "'" & @CRLF & _
                                                                "Descrizione = '" & $sDescrizioneUtente & "'." & @CRLF & _
                                                                "Inserisci una nuova Data e una nuova Descrizione per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerDataID()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                If(FileExists($sFileCrystalReports) == 1) Then
                                    FileDelete($sFileCrystalReports)
                                    _FileCreate($sFileCrystalReports)
                                    If @error Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                        Exit
                                    EndIf
                                EndIf
                                Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                If($hFileCrystalReports == -1) Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                    Exit
                                Else
                                    Local $sRiga = ""
                                    Local $iEsitoRicerca = 0
                                    Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                    Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                    Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                            StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                            $sRiga = _
                                                        '"' & $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                            FileWriteLine($hFileCrystalReports, $sRiga)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    FileWriteLine($hFileCrystalReports, _
                                                                        '""' & "," & _
                                                                        '"System"' & "," & _
                                                                        '"Application"' & "," & _
                                                                        '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                        '""')
                                    FileClose($hFileCrystalReports)
                                    If($iEsitoRicerca > 0) Then
                                        Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                        If($iEsitoShell == 0) Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                        EndIf
                                        Exit
                                    Else
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                                "Data = '" & $sDataReportUtente & "'" & @CRLF & _
                                                                "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                                "Inserisci una nuova Data e un nuovo ID Utente per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerDescrizione_ID()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
        If($sDescrizioneUtente = "") Then
            MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
            GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
        Else
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
            If(FileExists($sFileConfigurazione) == 0) Then
                MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
            Else
                Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                        Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                            Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                            If($hFileAudit == -1) Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                            Else
                                Local $aContenutoFileAudit = ""
                                _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                                If @error Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                    Exit
                                Else
                                    FileClose($hFileAudit)
                                    If(FileExists($sFileCrystalReports) == 1) Then
                                        FileDelete($sFileCrystalReports)
                                        _FileCreate($sFileCrystalReports)
                                        If @error Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                            Exit
                                        EndIf
                                    EndIf
                                    Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                    If($hFileCrystalReports == -1) Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                        Exit
                                    Else
                                        Local $sRiga = ""
                                        Local $iEsitoRicerca = 0
                                        Local $aDataReport_Split = ""
                                        Local $sDataReport = ""
                                        Local $sDataReport_Reversed = ""
                                        Local $aContenutoFileAudit_Split = ""
                                        Local $sDataOraUltimaRiga = ""
                                        For $i = 1 To UBound($aContenutoFileAudit) - 2
                                            $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                            $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                            $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                            If(StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente) And _
                                                StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                                $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                                $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                                $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                                $sRiga = _
                                                            '"' & $sDataReport_Reversed & StringReplace($aContenutoFileAudit_Split[1], $sDataReport, "") & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                                FileWriteLine($hFileCrystalReports, $sRiga)
                                                $iEsitoRicerca+=1
                                                $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                            EndIf
                                        Next
                                        FileWriteLine($hFileCrystalReports, _
                                                                            '""' & "," & _
                                                                            '"System"' & "," & _
                                                                            '"Application"' & "," & _
                                                                            '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                            '""')
                                        FileClose($hFileCrystalReports)
                                        If($iEsitoRicerca > 0) Then
                                            Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                            If($iEsitoShell == 0) Then
                                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                            EndIf
                                            Exit
                                        Else
                                            MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con:" & @CRLF & _
                                                                    "Descrizione = '" & $sDescrizioneUtente & "'" & @CRLF & _
                                                                    "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                                    "Inserisci una nuova Descrizione e un nuovo ID Utente per creare un report.")
                                        EndIf
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    Else
                        MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                        Exit
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerData_Descrizione_ID()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
        If($sDescrizioneUtente = "") Then
            MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
            GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
        Else
            GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
            If(FileExists($sFileConfigurazione) == 0) Then
                MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
            Else
                Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                        Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                            Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                            If($hFileAudit == -1) Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                            Else
                                Local $aContenutoFileAudit = ""
                                _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                                If @error Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                    Exit
                                Else
                                    FileClose($hFileAudit)
                                    If(FileExists($sFileCrystalReports) == 1) Then
                                        FileDelete($sFileCrystalReports)
                                        _FileCreate($sFileCrystalReports)
                                        If @error Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                            Exit
                                        EndIf
                                    EndIf
                                    Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                    If($hFileCrystalReports == -1) Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                        Exit
                                    Else
                                        Local $sRiga = ""
                                        Local $iEsitoRicerca = 0
                                        Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                        Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                        Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                        Local $aContenutoFileAudit_Split = ""
                                        Local $sDataOraUltimaRiga = ""
                                        For $i = 1 To UBound($aContenutoFileAudit) - 2
                                            $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                            $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                            $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                            If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                               StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente) And _
                                               StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                                $sRiga = _
                                                            '"' & $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                                FileWriteLine($hFileCrystalReports, $sRiga)
                                                $iEsitoRicerca+=1
                                                $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                            EndIf
                                        Next
                                        FileWriteLine($hFileCrystalReports, _
                                                                            '""' & "," & _
                                                                            '"System"' & "," & _
                                                                            '"Application"' & "," & _
                                                                            '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                            '""')
                                        FileClose($hFileCrystalReports)
                                        If($iEsitoRicerca > 0) Then
                                            Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                            If($iEsitoShell == 0) Then
                                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                            EndIf
                                            Exit
                                        Else
                                            MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con: " & @CRLF & _
                                                                    "Data = '" & $sDataReportUtente_Reversed & "'" & @CRLF & _
                                                                    "Descrizione = '" & $sDescrizioneUtente & "'" & @CRLF & _
                                                                    "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                                    "Inserisci una nuova Data, una nuova Descrizione e un nuovo ID Utente per creare un report.")
                                        EndIf
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    Else
                        MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                        Exit
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerID_Utente()
    Local $sID_Utente = GUICtrlRead($input_ID_Utente)
    If($sID_Utente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'ID Utente' non può essere vuoto!")
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_RED)
        GUICtrlSetState($input_ID_Utente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_ID_Utente, $COLOR_WHITE)
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                If(FileExists($sFileCrystalReports) == 1) Then
                                    FileDelete($sFileCrystalReports)
                                    _FileCreate($sFileCrystalReports)
                                    If @error Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                        Exit
                                    EndIf
                                EndIf
                                Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                If($hFileCrystalReports == -1) Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                    Exit
                                Else
                                    Local $sRiga = ""
                                    Local $iEsitoRicerca = 0
                                    Local $aDataReport_Split = ""
                                    Local $sDataReport = ""
                                    Local $sDataReport_Reversed = ""
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[3], $sID_Utente)) Then
                                            $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                            $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                            $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                            $sRiga = _
                                                        '"' & $sDataReport_Reversed & StringReplace($aContenutoFileAudit_Split[1], $sDataReport, "") & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                            FileWriteLine($hFileCrystalReports, $sRiga)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    FileWriteLine($hFileCrystalReports, _
                                                                        '""' & "," & _
                                                                        '"System"' & "," & _
                                                                        '"Application"' & "," & _
                                                                        '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                        '""')
                                    FileClose($hFileCrystalReports)
                                    If($iEsitoRicerca > 0) Then
                                        Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\Report_HauptPharma.exe") ; Report_HauptPharma.exe
                                        If($iEsitoShell == 0) Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                        EndIf
                                        Exit
                                    Else
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con" & @CRLF & _
                                                                "ID Utente = '" & $sID_Utente & "'." & @CRLF & _
                                                                "Inserisci un nuovo ID Utente per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

That's the script :) 


Click here to see my signature:

Spoiler

I will always thank you for the time you spent for me.
I'm here to ask, and from your response, I'd like to learn.
By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

Share this post


Link to post
Share on other sites

#16 ·  Posted

You have no GUIRegisterMsg code in there, nor do you have anywhere in it that references any  WM_* commands.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#17 ·  Posted

1 minute ago, BrewManNH said:

You have no GUIRegisterMsg code in there, nor do you have anywhere in it that references any  WM_* commands.

Ups! Wrong code :D

That's it :) 

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icone\icona_StampaAudit.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Region INCLUDE
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <FileConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <ColorConstants.au3>
#include <WinAPI.au3>
#include <EditConstants.au3> ; $EN_FOCUS
#EndRegion

Opt("GUIOnEventMode", 1)

; A4 Portrait Size in Px @72 DPI = 842 W x 595 H

#Region Global Declarations

Global $sHmiCheckLogIntegrity = "\HmiCheckLogIntegrity.exe" ; ------------------------------ HmiCheckLogIntegrity.exe ------------------------------
                                                            ; Possibili valori dell'HmiCheckLogIntegrity:
                                                            ; < 0 : Errori vari, come il formato del file non valido, nessun file disponibile... ;
                                                            ; 1   : L'Audit Trail verificato è valido;
                                                            ; > 0 : Numero di riga in cui è stato manipolato l'Audit Trail verificato.
                                                            ; -------------------------------------------------------------------------------------
                                                            ; Se WinCC sta collezionando ancora i dati, l'HmiCheckLogIntegrity restituirà il
                                                            ; seguente messaggio:
                                                            ; "The specified source file could not be opened!"
                                                            ; -------------------------------------------------------------------------------------

Global $sFileConfigurazione = @ScriptDir & "\Configurazione\configurazione_audit.ini"

Global $sDataOdierna = @MDAY & "/" & @MON & "/" & @YEAR

Global $sFileCrystalReports = @ScriptDir & "\file_database_cr.txt"

Global $iRicercaData = 0, $iRicercaDescrizione = 0, $iRicercaData_Descrizione = 0

Global $sFileTastieraVirtuale = @WindowsDir & "\System32\osk.exe"

#EndRegion

$form_StampaAudit = GUICreate("Stampa Report Audit:", 412, 192, @DesktopWidth/2 - 206, @DesktopHeight/2 - 203) ; 582, 277
GUISetOnEvent($GUI_EVENT_CLOSE, "ChiudiApplicazione")
Global $checkbox_DataAuditUtente = GUICtrlCreateCheckbox("", 61, 88, 17, 17)
Global $checkbox_DescrizioneUtente = GUICtrlCreateCheckbox("", 61, 123, 17, 17)
;GUICtrlSetOnEvent(-1, "LanciaTastieraVirtuale")
Global $date_DataAuditUtente = GUICtrlCreateDate($sDataOdierna, 193, 86, 114, 24, 0)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Global $input_DescrizioneUtente = GUICtrlCreateInput("", 193, 123, 161, 24)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Global $button_StampaReport = GUICtrlCreateButton("Stampa Report", 152, 158, 107, 25)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetOnEvent(-1, "HubFunzioni")
$label_Titolo = GUICtrlCreateLabel("Stampa Report Audit", 84, 15, 243, 33)
GUICtrlSetFont(-1, 18, 800, 0, "Arial")
$label_UserGuide = GUICtrlCreateLabel("Seleziona il/i criterio/i di ricerca per la stampa dell'Audit Report", 34, 57, 343, 19)
GUICtrlSetFont(-1, 9, 400, 0, "Arial")
$label_DataAuditUtente = GUICtrlCreateLabel("Data Audit", 83, 88, 70, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
$label_DescrizioneUtente = GUICtrlCreateLabel("Descrizione", 83, 123, 78, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Arial")
GUISetState(@SW_SHOW, $form_StampaAudit)

#EndRegion ### END Koda GUI section ###

AdlibRegister("GestioneCampiGUI", 250)
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

While 1
    Sleep(100)
WEnd

Func ChiudiApplicazione()
    AdlibUnRegister("GestioneCampiGUI")
    ProcessClose("osk.exe")
    Exit
EndFunc

Func MY_WM_COMMAND($hWnd, $iMsg, $lParam, $wParam)
    ; High-order Word of $wParam is the Notification Code ( $EN_CHANGE, $EN_SETFOCUS, $EN_KILLFOCUS )
    ; Low-order Word of $wParam specifies the ID from where the Notification Code has been "launched" ( Control_ID... )
    ; $lParam specifies the HANDLE from where the Notification Code has been "launched"

    Local $iNotificationCode = BitShift($wParam, 16)
    Local $iID_From = BitAND($wParam, 0x0000FFFF)
    Local $hWnd_From = $lParam ; Optional
    Local $hCtrl = GUICtrlGetHandle($input_DescrizioneUtente)

    Switch $iID_From
        Case $input_DescrizioneUtente
            Switch $iNotificationCode
                Case $EN_SETFOCUS
                    ConsoleWrite("Control with ID #" & $iID_From & " has focus" & @CRLF)
                Case $EN_KILLFOCUS
                     ConsoleWrite("Control with ID #" & $iID_From & " has lost focus" & @CRLF)

;~                  If @AutoItExe = "X64" Then
;~                      DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 1) ;~ Turns On 64 Bit Redirection
;~                      If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
;~                          Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
;~                          If $iEsitoAvvioTastiera == 0 Then
;~                              MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
;~                              Exit
;~                          EndIf
;~                      EndIf
;~                      DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 0) ;~ Turns Off 64 Bit Redirection
;~                  Else
;~                      If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
;~                          Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
;~                          If $iEsitoAvvioTastiera == 0 Then
;~                              MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
;~                              Exit
;~                          EndIf
;~                      EndIf
;~                  EndIf
;~                  GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc

;~ Func LanciaTastieraVirtuale()
;~  Select
;~      Case @GUI_CtrlId = $checkbox_DescrizioneUtente
;~          GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
;~          If @OSArch = "X64" Then
;~              DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 1) ;~ Turns On 64 Bit Redirection
;~              If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
;~                  Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
;~                  If $iEsitoAvvioTastiera == 0 Then
;~                      MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
;~                      Exit
;~                  EndIf
;~              EndIf
;~              DllCall("kernel32.dll", "boolean", "Wow64DisableWow64FsRedirection", "boolean", 0) ;~ Turns Off 64 Bit Redirection
;~          Else
;~              If Not (ProcessExists("osk.exe")) And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED Then
;~                  Local $iEsitoAvvioTastiera = ShellExecute($sFileTastieraVirtuale)
;~                  If $iEsitoAvvioTastiera == 0 Then
;~                      MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'avvio della tastiera virtuale." & @CRLF & "Errore: " & @error)
;~                      Exit
;~                  EndIf
;~              EndIf
;~          EndIf
;~  EndSelect
;~ EndFunc

Func GestioneCampiGUI()
    ; Controllo sulla $checkbox_DataAuditUtente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED) Then
        GUICtrlSetState($date_DataAuditUtente, $GUI_ENABLE)
        $iRicercaData = 1
    Else
        GUICtrlSetState($date_DataAuditUtente, $GUI_DISABLE)
        GUICtrlSetData($date_DataAuditUtente, $sDataOdierna)
        $iRicercaData = 0
    EndIf

    ; Controllo sulla $checkbox_DescrizioneUtente
    If(GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED) Then
        GUICtrlSetState($input_DescrizioneUtente, $GUI_ENABLE)
        $iRicercaDescrizione = 1
    Else
        GUICtrlSetState($input_DescrizioneUtente, $GUI_DISABLE)
        GUICtrlSetData($input_DescrizioneUtente, "")
        $iRicercaDescrizione = 0
    EndIf

    ; Controllo sulla $checkbox_DataAuditUtente E $checkbox_DescrizioneUtente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED And GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED) Then
        $iRicercaData = 0
        $iRicercaDescrizione = 0
        $iRicercaData_Descrizione = 1
    Else
        $iRicercaData_Descrizione = 0
    EndIf

    ; Controllo sulla $checkbox_DataAuditUtente O $checkbox_DescrizioneUtente
    If(GUICtrlRead($checkbox_DataAuditUtente) = $GUI_CHECKED Or GUICtrlRead($checkbox_DescrizioneUtente) = $GUI_CHECKED) Then
        GUICtrlSetState($button_StampaReport, $GUI_ENABLE)
    Else
        GUICtrlSetState($button_StampaReport, $GUI_DISABLE)
    EndIf
EndFunc

Func ControllaFileAudit($sPercorsoAudit, $sPercorsoChecker)
    Local $aFileCartellaAuditCopy = _FileListToArray($sPercorsoAudit, "*.txt")
    If @error Then
        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della lista dei file nella directory" & @CRLF & $sPercorsoAudit & @CRLF & "Errore: " & @error)
        Exit
    Else
        Local $iPID = Run("cmd.exe" & " /k " & '""' & $sPercorsoChecker & $sHmiCheckLogIntegrity & '"' & " " & '"' & $sPercorsoAudit & "\" & $aFileCartellaAuditCopy[1] & '""', "", @SW_HIDE, $STDOUT_CHILD) ; ' /k ""C:\Users\Portatile-60\Desktop\HmiCheckLogIntegrity.exe" "C:\Users\Portatile-60\Desktop\AuditTrailDosaggio0_20170327_151335_DOSAGGIO_PW_01.txt""')
        Local $sSTDOutRead = ""
        While 1
            $sSTDOutRead &= StdoutRead($iPID)
            If @error Then ExitLoop
        WEnd
        ; MsgBox($MB_ICONINFORMATION, "Risultato Shell:", $sSTDOutRead) ; Rimuovere il commento ( ; ) prima del testo "MsgBox" per visualizzare il contenuto della Shell.
        Local $aContenutoShell = StringSplit(StringTrimRight(StringStripCR($sSTDOutRead), StringLen(@CRLF)), @CRLF, $STR_NOCOUNT)
        If @error Then
            MsgBox($MB_ICONERROR, "Errore!", "Errore durante lo splitting del contenuto del Prompt dei Comandi." & @CRLF & "Errore: " & @error)
            Return False
        Else
            If(IsArray($aContenutoShell)) Then
                For $i = 0 To UBound($aContenutoShell) - 1
                    ; Nella versione presente sul Panel PC, la stringa della quale controlla
                    ; la presenza nella Shell è "check succeeded." e non "Consistency check succeeded."
                    ; Per riportare l'applicazione alla "versione precedente", sostiture
                    ; "Consistency check succeeded." con "check succeeded."
                    If(StringInStr($aContenutoShell[$i], "Consistency check succeeded.")) Then
                        Return True
                    EndIf
                Next
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerData()
    ; Eliminazione del file di report precedentemente generato
    If(FileExists($sFileCrystalReports) == 1) Then
        FileDelete($sFileCrystalReports)
    EndIf
    If(FileExists($sFileConfigurazione) == 0) Then
        MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
    Else
        Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
        If @error Then
            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
            Exit
        Else
            If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                If @error Then
                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                    Exit
                Else
                    Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                    Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                    If($hFileAudit == -1) Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                    Else
                        Local $aContenutoFileAudit = ""
                        _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                        If @error Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                            Exit
                        Else
                            FileClose($hFileAudit)
                            If(FileExists($sFileCrystalReports) == 1) Then
                                FileDelete($sFileCrystalReports)
                                _FileCreate($sFileCrystalReports)
                                If @error Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                    Exit
                                EndIf
                            EndIf
                            Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                            If($hFileCrystalReports == -1) Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                Exit
                            Else
                                Local $sRiga = ""
                                Local $iEsitoRicerca = 0
                                Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                Local $aContenutoFileAudit_Split = ""
                                Local $sDataOraUltimaRiga = ""
                                FileWriteLine($hFileCrystalReports, '"DateTimeStamp","UserID","ProcessID","Description","Comment"' & @CRLF)
                                For $i = 1 To UBound($aContenutoFileAudit) - 2
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                    $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                    $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                    If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed)) Then
                                        $sRiga = _
                                                        '"' & $sDataReportUtente & " " & StringReplace($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed & " ", "") & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                        '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                        FileWriteLine($hFileCrystalReports, $sRiga)
                                        $iEsitoRicerca+=1
                                        $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                    EndIf
                                Next
                                FileWriteLine($hFileCrystalReports, _
                                                                    '""' & "," & _
                                                                    '"System"' & "," & _
                                                                    '"Application"' & "," & _
                                                                    '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                    '""')


                                FileClose($hFileCrystalReports)
                                If($iEsitoRicerca > 0) Then
                                    Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\ReportAudit_Janssen.exe") ; Report_HauptPharma.exe
                                    If($iEsitoShell == 0) Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                    EndIf
                                    Exit
                                Else
                                    MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con la data " & $sDataReportUtente & "." & @CRLF & _
                                                            "Inserisci una nuova data per creare un report.")
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                EndIf
            Else
                MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                Exit
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerDescrizione()
    Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
    If($sDescrizioneUtente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
        GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        ; Eliminazione del file di report precedentemente generato
        If(FileExists($sFileCrystalReports) == 1) Then
            FileDelete($sFileCrystalReports)
        EndIf
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                If(FileExists($sFileCrystalReports) == 1) Then
                                    FileDelete($sFileCrystalReports)
                                    _FileCreate($sFileCrystalReports)
                                    If @error Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                        Exit
                                    EndIf
                                EndIf
                                Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                If($hFileCrystalReports == -1) Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                    Exit
                                Else
                                    Local $sRiga = ""
                                    Local $iEsitoRicerca = 0
                                    Local $aDataReport_Split = ""
                                    Local $sDataReport = ""
                                    Local $sDataReport_Reversed = ""
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    FileWriteLine($hFileCrystalReports, '"DateTimeStamp","UserID","ProcessID","Description","Comment"' & @CRLF)
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[5], $sDescrizioneUtente)) Then
                                            $sDataReport = StringTrimRight($aContenutoFileAudit_Split[1], 9)
                                            $aDataReport_Split = StringSplit($sDataReport, "-", $STR_NOCOUNT)
                                            $sDataReport_Reversed = $aDataReport_Split[2] & "/" & $aDataReport_Split[1] & "/" & $aDataReport_Split[0]
                                            $sRiga = _
                                                            '"' & $sDataReport_Reversed & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[3] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[4] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[5] & '"' & "," & _
                                                            '"' & $aContenutoFileAudit_Split[6] & '"' & @CRLF
                                            FileWriteLine($hFileCrystalReports, $sRiga)
                                            $iEsitoRicerca+=1
                                            $sDataOraUltimaRiga = $aContenutoFileAudit_Split[1]
                                        EndIf
                                    Next
                                    FileWriteLine($hFileCrystalReports, _
                                                                        '""' & "," & _
                                                                        '"System"' & "," & _
                                                                        '"Application"' & "," & _
                                                                        '"Report Generato il: ' & _Now() & '"' & "," & _
                                                                        '""')
                                    FileClose($hFileCrystalReports)
                                    If($iEsitoRicerca > 0) Then
                                        Local $iEsitoShell = ShellExecute(@ScriptDir & "\CrystalReports\Eseguibile\bin\Debug\ReportAudit_Janssen.exe") ; Report_HauptPharma.exe
                                        If($iEsitoShell == 0) Then
                                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione del report!" & @CRLF & "Errore: " & @error)
                                        EndIf
                                        Exit
                                    Else
                                        MsgBox($MB_ICONWARNING, "Attenzione:", "Nessuna corrispondenza trovata con la descrizione " & $sDescrizioneUtente & "." & @CRLF & _
                                                                "Inserisci una nuova descrizione per creare un report.")
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                Else
                    MsgBox($MB_ICONERROR, "Errore!", "L'Audit Trail non è più valido." & @CRLF & "File corrotto e/o modificato.")
                    Exit
                EndIf
            EndIf
        EndIf
    EndIf
EndFunc

Func StampaReportAudit_PerDataDescrizione()
    Local $sDescrizioneUtente = GUICtrlRead($input_DescrizioneUtente)
    If($sDescrizioneUtente = "") Then
        MsgBox($MB_ICONERROR, "Errore!", "Il campo 'Descrizione' non può essere vuoto!")
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_RED)
        GUICtrlSetState($input_DescrizioneUtente, $GUI_FOCUS)
    Else
        GUICtrlSetBkColor($input_DescrizioneUtente, $COLOR_WHITE)
        ; Eliminazione del file di report precedentemente generato
        If(FileExists($sFileCrystalReports) == 1) Then
            FileDelete($sFileCrystalReports)
        EndIf
        If(FileExists($sFileConfigurazione) == 0) Then
            MsgBox($MB_ICONERROR, "Errore!", "Il file di configurazione" & @CRLF & $sFileConfigurazione & @CRLF & "non e' stato trovato.")
        Else
            Local $aSezioniConfigurazione = IniReadSection($sFileConfigurazione, "CONFIGURAZIONE_AUDIT")
            If @error Then
                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura della sezione del file di configurazione." & @CRLF & "Errore: " & @error)
                Exit
            Else
                If(ControllaFileAudit($aSezioniConfigurazione[1][1], $aSezioniConfigurazione[2][1]) == True) Then
                    Local $aFileCartellaAudit = _FileListToArray($aSezioniConfigurazione[1][1], "*.txt")
                    If @error Then
                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la creazione della lista dei file nella cartella:" & @CRLF & $aSezioniConfigurazione[1][1] & @CRLF & "Errore: " & @error)
                        Exit
                    Else
                        Local $sFileAudit = $aSezioniConfigurazione[1][1] & "\" & $aFileCartellaAudit[1]
                        Local $hFileAudit = FileOpen($sFileAudit, $FO_READ)
                        If($hFileAudit == -1) Then
                            MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileAudit)
                        Else
                            Local $aContenutoFileAudit = ""
                            _FileReadToArray($sFileAudit, $aContenutoFileAudit, $FRTA_NOCOUNT)
                            If @error Then
                                MsgBox($MB_ICONERROR, "Errore!", "Errore durante la lettura del file" & @CRLF & $sFileAudit & @CRLF & "Errore: " & @error)
                                Exit
                            Else
                                FileClose($hFileAudit)
                                If(FileExists($sFileCrystalReports) == 1) Then
                                    FileDelete($sFileCrystalReports)
                                    _FileCreate($sFileCrystalReports)
                                    If @error Then
                                        MsgBox($MB_ICONERROR, "Errore!", "Errore durante la crazione del file" & @CRLF & $sFileCrystalReports & @CRLF & "Errore: " & @error)
                                        Exit
                                    EndIf
                                EndIf
                                Local $hFileCrystalReports = FileOpen($sFileCrystalReports, $FO_APPEND)
                                If($hFileCrystalReports == -1) Then
                                    MsgBox($MB_ICONERROR, "Errore!", "Errore durante l'apertura del file" & @CRLF & $sFileCrystalReports)
                                    Exit
                                Else
                                    Local $sRiga = ""
                                    Local $iEsitoRicerca = 0
                                    Local $sDataReportUtente = GUICtrlRead($date_DataAuditUtente)
                                    Local $aDataReportUtente_Split = StringSplit($sDataReportUtente, "/", $STR_NOCOUNT)
                                    Local $sDataReportUtente_Reversed = $aDataReportUtente_Split[2] & "-" & $aDataReportUtente_Split[1] & "-" & $aDataReportUtente_Split[0]
                                    Local $aContenutoFileAudit_Split = ""
                                    Local $sDataOraUltimaRiga = ""
                                    FileWriteLine($hFileCrystalReports, '"DateTimeStamp","UserID","ProcessID","Description","Comment"' & @CRLF)
                                    For $i = 1 To UBound($aContenutoFileAudit) - 2
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], @TAB, ";")
                                        $aContenutoFileAudit[$i] = StringReplace($aContenutoFileAudit[$i], '"', "")
                                        $aContenutoFileAudit_Split = StringSplit($aContenutoFileAudit[$i], ";", $STR_NOCOUNT)
                                        If(StringInStr($aContenutoFileAudit_Split[1], $sDataReportUtente_Reversed) And _
                                            StringInStr($aContenutoFileAudit_Split