//----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // UTILITY VARIE //----------------------------------------------------------------------------- function _Errore( szErrorString ) begin SetDialogTitle( DLG_MSG_SEVERE, "Errore fatale!" ); MessageBox( szErrorString, SEVERE ); _ShowExitDialog( DLG_EXITFAILURE ); exit; end; //----------------------------------------------------------------------------- function _Attenzione( szWarningString ) begin SetDialogTitle( DLG_MSG_WARNING, "Attenzione!" ); MessageBox( szWarningString, WARNING ); end; //----------------------------------------------------------------------------- function _Informazione( szWarningString ) begin SetDialogTitle( DLG_MSG_WARNING, "Attenzione!" ); MessageBox( szWarningString, INFORMATION); end; //----------------------------------------------------------------------------- function _Verifica( szQuestion ) NUMBER nRet; begin SetDialogTitle( DLG_ASK_YESNO, "Verifica" ); nRet = AskYesNo( szQuestion, NO ); return nRet; end; //----------------------------------------------------------------------------- function _MostraModelessDialog( ) NUMBER nHwnd, nRet, nMess; begin _CreateDLG ( "DLG_PLEASEWAIT", DLG_PLEASEWAIT, HWND_INSTALL ); nMess = WaitOnDialog( "DLG_PLEASEWAIT" ); if ( nMess = DLG_ERR ) then _Attenzione( STR_ERR_DLG ); endif; nHwnd = CmdGetHwndDlg( "DLG_PLEASEWAIT" ); nRet = ShowWindow ( nHwnd, 1 ); if ( nRet = -1 ) then _Attenzione( "Errore in ShowWindow" ); endif; end; //----------------------------------------------------------------------------- function _SettaModelessDialog( szText ) begin CtrlSetText( "DLG_PLEASEWAIT", IDD_MLTEXT, szText ); end; //----------------------------------------------------------------------------- function _NascondiModelessDialog( ) begin EndDialog( "DLG_PLEASEWAIT" ); ReleaseDialog( "DLG_PLEASEWAIT" ); end; //----------------------------------------------------------------------------- // Funzione che termina se la quantità di memoria è minore di quella richiesta function _RichiediMemoria( nReq ) NUMBER nExMem; STRING szExMem[_MAX_LENGTH]; begin GetSystemInfo( EXTENDEDMEMORY, nExMem, szExMem ); if nReq >= nExMem then _Errore( STR_NOTENUFEXMEM ); endif; end; //----------------------------------------------------------------------------- function _NToStringKB( nKB, szValue ) begin NumToStr( szValue, nKB ); szValue = szValue + " Kb"; end; //----------------------------------------------------------------------------- function _DeSlash( szSource, szDest ) NUMBER nLen; STRING szTemp; begin nLen = StrLength( szSource ); StrSub( szTemp, szSource, nLen - 1, 1 ); if szTemp = "\\" then StrSub( szDest, szSource, 0, nLen - 1 ); else szDest = szSource; endif; end; //----------------------------------------------------------------------------- function _CercaFileOvunque( szNomeFile, szRet ) NUMBER nRet1, nRet2, listDirs, listDrive; STRING szDir[_MAX_LENGTH], szMLText[_MAX_LENGTH], szDrive[_MAX_LENGTH]; begin _MostraModelessDialog( ); listDrive = ListCreate( STRINGLIST ); if ( listDrive = LIST_NULL ) then _Errore( "Errore fatale in ListCreate(listDrive)" ); _NascondiModelessDialog( ); endif; if ( GetValidDrivesList( listDrive, FIXED_DRIVE, 0 ) < 0 ) then _Errore( "Errore fatale in GetValidDriveList" ); _NascondiModelessDialog( ); endif; nRet1 = ListGetFirstString( listDrive, szDrive ); while ( nRet1 != END_OF_LIST ) szMLText = "Verifica di una precedente installazione sul drive " + szDrive + ": ..."; // szMLText = szMLText; _SettaModelessDialog( szMLText ); szDrive = szDrive + ":\\"; if ( FindAllFiles( szDrive, szNomeFile, szRet, RESET ) = 0 ) then _NascondiModelessDialog( ); return; endif; nRet1 = ListGetNextString( listDrive, szDrive ); endwhile; ListDestroy( listDrive ); _NascondiModelessDialog( ); szRet = ""; return; end; //----------------------------------------------------------------------------- function _DisattivaScreenSaver( ) begin bSCREENSAVER = _WinSubCheckScreenSaver( ); _WinSubScreenSaver( FALSE ); end; //----------------------------------------------------------------------------- function _RiattivaScreenSaver( ) begin if bSCREENSAVER then _WinSubScreenSaver( TRUE ); endif; end; //________________________________________________________________________________________________________________________ // *** Reperisce il nome del sistema operativo function _GetOSName( ) NUMBER nResult; STRING szResult; STRING szCheckDir[255]; begin VarSave(SRCTARGETDIR); TARGETDIR = WINSYSDIR; GetSystemInfo(WINMAJOR,nResult,szResult); bIsWin95 = FALSE; if(GetSystemInfo(OS,nResult,szOSName) < 0) then MessageBox("Couldn't get Operating System info",WARNING); else // attenzione: con la nascita di win2000 é sorto un pó di casino: infatti non é previsto da installshield3; inoltre, pur // essendo una evoluzione di WinNT non sempre presenta la cartella C:\winnt (27/06/2000); quindi si é resa necessaria la // ricerca della directory che contiene il sistema operativo (Windows2000, ovviamente) e, all'interno di essa, la directory // pwls che contiene i files degli utenti del sistema win2000 (tale directory non é infatti presente in altre versioni di // Windows (per ora...)) (05/12/2000) // Nuova puntata! Adesso c'é pure il terribile Win2000 server che, ovviamente, non ha la directory pwls sotto la sua // directory principale! Quindi, se non viene trovata la pwls si cerca la directory windirectory\system32\ras, che é tipica // dei sistemi windowsNT/2000 (c'é quindi sia sul client che sul server); per ora funziona, ma in futuro...? (20/02/2001) if (nResult=IS_WINDOWS95) then szCheckDir = WINDIR ^ "pwls"; if (Is(PATH_EXISTS, szCheckDir)=TRUE) then nResult=IS_WINDOWSNT; else szCheckDir = WINSYSDIR ^ "../system32/ras"; if (Is(PATH_EXISTS, szCheckDir)=TRUE) then nResult=IS_WINDOWSNT; endif; endif; endif; switch(nResult) case IS_WINDOWSNT: szOSName="Windows NT"; case IS_WINDOWS95: szOSName="Windows 95"; bIsWin95 = TRUE; endswitch; endif; VarRestore(SRCTARGETDIR); end; //----------------------------------------------------------------------------- // Reperisce il nome del sistema operativo function _GetTmpDir(szResult ) STRING szTemp; begin szTemp=SUPPORTDIR; szResult =szTemp; end; //----------------------------------------------------------------------------- function _CreateDLG( szDLG, iDLG_ID, lHwnd ) STRING szSupportDLL [ _MAX_LENGTH ]; begin szSupportDLL = SUPPORTDIR ^ "\\PSETUP.DLL"; if ( DefineDialog( szDLG, 0 , szSupportDLL, iDLG_ID, "", HWND_DESKTOP, lHwnd, DLG_MSG_STANDARD | DLG_CENTERED ) ) then _Errore( "Errore interno. Impossibile creare una finestra di dialogo.\nInstallazione terminata." ); endif; end; //--------------------------------------------------------------------------------------------------------------------- function _Cambia_Attributi(szS0) STRING szS1[_MAX_LENGTH]; begin if ( Is( FILE_EXISTS, szS0 ) ) then if (SetFileInfo(szS0,FILE_ATTRIBUTE,FILE_ATTR_NORMAL|FILE_ATTR_ARCHIVED,"") < 0) then szS1 = "Impossibile cambiare i permessi ad " ^ szS0; MessageBox(szS1,WARNING); endif; endif; end; //---------------------------------------------------------------------------------------------------------------------- function _TCPIPPresent() NUMBER nvResult; begin if (UseDLL("winsock.dll")=0) then UnUseDLL("winsock.dll"); nvResult =TRUE; else nvResult =FALSE; endif; return nvResult; end;