Use LanguageText.pkg Use Windows.pkg Use Dfclient.pkg Use DFbitmap.pkg Use GlobalFunctionsProcedures.pkg Use cRichEdit.pkg Use cTextEdit.pkg Use cRichEdit.pkg Use gFormatNumbers.pkg Use tWinStructs.pkg Use cli.pkg Use DFBTRDRV.PKG Use MSSqldrv.pkg Use db2_drv.pkg Use odbc_drv.pkg Use seq_chnl.pkg Register_Function phoWorkspace Returns Handle Register_Function Help_filename Returns String Register_Function GetHelpFile Returns String Register_Function pbEnterKeyAsTabKey Returns Boolean // Use of Mertech drivers: // Ad the line "Define DUF_Use_Mertech_Drivers" prior "Use" of this package to your source code if using Mertech drivers! #IFDEF DUF_Use_Mertech_Drivers Use mertech.inc #ENDIF #IFNDEF ORAFLEX Define ORAFLEX for "ORA_DRV" #ENDIF #IFNDEF SQLFLEX Define SQLFLEX for "SQL_DRV" #ENDIF #IFNDEF MDSPgSQL Define MDSPgSQL for "MDSPGSQL" #ENDIF #IFNDEF MDSMySQL Define MDSMySQL for "MDSMYSQL" #ENDIF // *** Constant Declarations: *** // #IFDEF DF_DRIVER_SQLSERVER_CLIENT_VERSION #ELSE #Replace DF_DRIVER_SQLSERVER_CLIENT_VERSION |CI1160 #ENDIF #IFSame Language$Current = Language$English #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Nederlands #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Svenska #Replace C_$Computer_Name |CS"Datornamn: %1" #Replace C_$Current_User_Count |CS"Aktuellt antal användare: %1" #Replace C_$Max_Licensed_User_Count |CS"Max antal licensierade användare: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max antal dbDriver licensierade användare: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"Databasdrivrutinens version skall som lägst vara:" #Replace C_$SQL_Client_Version_Min_Text |CS"och klientversionen skall som lägst vara:" #Replace C_$SQL_Versions_Are_Text |CS"Men nuvarande versioner är:" #Replace C_$PleaseAdjustTxt |CS"Vänligen justera och försök igen." #Replace C_$ProgramWillExit_Text |CS"Programmet kommer nu att avslutas." #Replace C_$DF_Studio_License_Text |CS"Programmet körs under DataFlex Studio licens. Max antal användare för databas drivrutin kan ej bestämmas." #Replace C_$Compile_Date |CS"Kompilerad:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Innehåll kopierat till Windows klippbord. Tryck på Ctrl+V för att klistra in innehållet i t ex ett e-mejl." #ENDIF #ENDIF #IFSAME Language$Current Language$Deutsch #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Dansk #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF // 2016-12-12, Samuel: Added section for Portuguese #IFSame Language$Current = Language$Portugues #Replace C_$Computer_Name |CS"Nome do Computador: %1" #Replace C_$Current_User_Count |CS"Quantidade atua de Usuários: %1" #Replace C_$Max_Licensed_User_Count |CS"Quantidade máxima de usuários licenciados: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Quantidade máxima de usuarios licenciados para o dbDriver: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Vers▌o do motor Local do Pervasive: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Vers▌o do Motor do Servidor Pervasive: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"Cliente Nativo do SQL Server 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"Cliente Nativo do SQL Server 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"Cliente Nativo SQL (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Programa rodando sob Licensa do DataFlex Studios. Numero maximo de usuarios para o dbDriver n▌o pode ser recuperado." #Replace C_$Compile_Date |CS"Data de Compilaç▌o:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Conteúdo copiado da ▌rea de Transferência do Windows. Pressione Ctrl+V para colar o conteúdo em p. ex. um e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Francais #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSAME Language$Current Language$Italiano #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Espanol #Replace C_$Computer_Name |CS"Nome do Computador: %1" #Replace C_$Current_User_Count |CS"Quantidade atua de Usuários: %1" #Replace C_$Max_Licensed_User_Count |CS"Quantidade máxima de usuários licenciados: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Quantidade máxima de usuarios licenciados para o dbDriver: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Vers▌o do motor Local do Pervasive: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Vers▌o do Motor do Servidor Pervasive: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"Cliente Nativo do SQL Server 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"Cliente Nativo do SQL Server 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"Cliente Nativo SQL (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Programa rodando sob Licensa do DataFlex Studios. Numero maximo de usuarios para o dbDriver n▌o pode ser recuperado." #Replace C_$Compile_Date |CS"Data de Compilaç▌o:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Conteúdo copiado da ▌rea de Transferência do Windows. Pressione Ctrl+V para colar o conteúdo em p. ex. um e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Norsk #Replace C_$Computer_Name |CS"Datamaskinnavn: %1" #Replace C_$Current_User_Count |CS"Antall brukere: %1" #Replace C_$Max_Licensed_User_Count |CS"Maks. antall lisensierte brukere: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Maks. antall lisensierte brukere for databasedriver: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Programmet kj¢res under DataFlex Studio lisens. Maks. antal brukere for databasedriverrutine kan ikke fastsettes." #Replace C_$Compile_Date |CS"Kompilert:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Innehold kopiert til Windows utklippstavle. Trykk Ctrl+V for å lime inn i for eksempel en e-post." #ENDIF #ENDIF #IFSame Language$Current = Language$Russian #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Polish #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFSame Language$Current = Language$Hungarian #Replace C_$Computer_Name |CS"Computer Name: %1" #Replace C_$Current_User_Count |CS"Current User Count: %1" #Replace C_$Max_Licensed_User_Count |CS"Max Licensed User Count: %1" #Replace C_$Max_DbDriver_Licensed_User_Count |CS"Max dbDriver Licensed User Count: %1" #Replace C_$Pervasive_Local_Engine_Version |CS"Pervasive Local Engine Version: %1" #Replace C_$Pervasive_Server_Engine_Version |CS"Pervasive Server Engine Version: %1" #Replace C_$SQLSERVER2016DRVRSTR |CS"MS-SQL Server 2016 Client ODBC Driver 13 for SQL Server" #Replace C_$SQLSERVER2014DRVRSTR |CS"MS-SQL Server 2014 Client ODBC Driver 11 for SQL Server" #Replace C_$SQL_Server_Native_Client_11_0 |CS"SQL Server Native Client 11.0 (SQL Server 2012)" #Replace C_$SQL_Server_Native_Client_10_0 |CS"SQL Server Native Client 10.0 (SQL Server 2008)" #Replace C_$SQL_Native_Client |CS"SQL Native Client (SQL Server 2005)" #Replace C_$SQL_Server_SQL_Server_2000_client |CS"SQL Server (SQL Server 2000 client (MDAC))" #Replace C_$SQLServerText |CS"Server/DSN:" #Replace C_$SQL_Client_Text |CS"Client Version:" #Replace C_$SQL_Driver_Version_Min_Text |CS"The database driver version should at least be version:" #Replace C_$SQL_Client_Version_Min_Text |CS"and client version should at least be:" #Replace C_$SQL_Versions_Are_Text |CS"But the current versions are:" #Replace C_$PleaseAdjustTxt |CS"Please adjust and try again." #Replace C_$ProgramWillExit_Text |CS"The program will now exit." #Replace C_$DF_Studio_License_Text |CS"Program run under Studio license. The Max number of users for database drivers could not be retrieved." #Replace C_$Compile_Date |CS"Compile Date:" #IFNDEF C_$CopyToClipboard_Text #Replace C_$CopyToClipboard_Text |CS"Content copied to Windows clipboard. Press Ctrl+V to paste the content in e.g. an e-mail." #ENDIF #ENDIF #IFNDEF DATAFLEX_ID Define DATAFLEX_ID for "DATAFLEX" #ENDIF // System icon menu constants. If the upper left hand // icon in dialogs is clicked, shadow all menu items except Move & Close. #IFNDEF SC_RESTORE Define SC_RESTORE for |CI$F120 #ENDIF #IFNDEF SC_MOVE Define SC_MOVE for |CI$F010 #ENDIF #IFNDEF SC_SIZE Define SC_SIZE for |CI$F000 #ENDIF #IFNDEF SC_MINIMIZE Define SC_MINIMIZE for |CI$F020 #ENDIF #IFNDEF SC_MAXIMIZE Define SC_MAXIMIZE for |CI$F030 #ENDIF #IFNDEF SC_CLOSE Define SC_CLOSE for |CI$F060 #ENDIF #IFNDEF SC_KEYMENU Define SC_KEYMENU for |CI$F100 #ENDIF #IFNDEF SC_NEXTWINDOW Define SC_NEXTWINDOW for |CI$F040 #ENDIF #IFNDEF SC_PREVWINDOW Define SC_PREVWINDOW for |CI$F050 #ENDIF Define CS_SignProgram for "signtool.exe" Define CS_TempCertBatchFile for "certinfo.bat" Define CS_VerifyCredentials for "verify" Define CS_VerifyFileParam for "/a" Define CS_DefAuthVerPolicy for "/pa" Define SEE_MASK_NOCLOSEPROCESS for 64 //(0x00000040) // *** Struct Declarations: *** Struct AboutSHELLEXECUTEINFO DWord cbSize Integer fMask Handle hwnd Pointer lpVerb Pointer lpFile Pointer lpParameters Pointer lpDirectory Integer nShow Pointer hInstApp Pointer lpIDList Pointer lpClass Handle hkeyClass DWord dwHotKey Handle hIconMonitor // Union //Handle hMonitor // Union Handle hProcess End_Struct #IF (Required_FMAC_Build < 107) Struct tWinMemoryStatusEx UInteger dwLength UInteger dwMemoryLoad UBigInt ullTotalPhys UBigInt ullAvailPhys UBigInt ullTotalPageFile UBigInt ullAvailPageFile UBigInt ullTotalVirtual UBigInt ullAvailVirtual UBigInt ullAvailExtendedVirtual End_Struct #ENDIF // OBSOLETE STRUCTURE AND WINDOWS API CALL. KEPT FOR BACKWARDS COMPATIBILITY //Type MEMORYSTATUS // Field MEMORYSTATUS.dwLength as DWord // sizeof(MEMORYSTATUS) // Field MEMORYSTATUS.dwMemoryLoad as DWord // percent Of memory in use // Field MEMORYSTATUS.dwTotalPhys as DWord // bytes Of physical memory // Field MEMORYSTATUS.dwAvailPhys as DWord // free physical memory bytes // Field MEMORYSTATUS.dwTotalPageFile as DWord // bytes Of paging file // Field MEMORYSTATUS.dwAvailPageFile as DWord // free bytes Of paging file // Field MEMORYSTATUS.dwTotalVirtual as DWord // user bytes Of address space // Field MEMORYSTATUS.dwAvailVirtual as DWord // free user bytes //End_Type // *** External Function calls: *** // #IFNDEF get_GetSystemMenu External_Function GetSystemMenu "GetSystemMenu" User32.dll Handle hWnd Boolean bRevert Returns Handle #ENDIF #IFNDEF get_RemoveMenu External_Function GetRemoveMenu "RemoveMenu" user32.dll Handle hWnd UInteger uPosition UInteger uFlags Returns Handle #ENDIF #IF (!@ > 191) // Do not call directly, use the wrapper function instead External_Function WNetGetUserW "WNetGetUserW" MPR.DLL ; Pointer lpName ; Pointer lpUser_Name ; Pointer lpLength ; Returns DWord // Wrapper Function WNetGetUser Function WNetGetUser Global ; Pointer lpName ; Pointer lpUser_Name ; Pointer lpLength ; Returns DWord DWord dwResult UWide uwName uwUserName Send StringToWide lpName (&uwName) Send WideSetBuffer lpUser_Name lpLength (&uwUserName) Move (WNetGetUserW (uwName.lpUText, uwUserName.lpUText, lpLength)) to dwResult Send WideToString (&uwUserName) lpUser_Name Function_Return dwResult End_Function #ENDIF #IFNDEF get_WNetGetUser External_Function WNetGetUser "WNetGetUserA" MPR.DLL Pointer lpName Pointer lpUser_Name Pointer lpLength Returns DWord #ENDIF #IFNDEF get_GlobalMemoryStatus External_Function GlobalMemoryStatus "GlobalMemoryStatus" Kernel32.Dll Pointer lpsMemoryStatus Returns Integer #ENDIF #IFNDEF get_GlobalMemoryStatusEx External_Function GlobalMemoryStatusEx "GlobalMemoryStatusEx" Kernel32.Dll Pointer lpMemoryStatus Returns Integer #ENDIF External_Function AboutShellExecuteEx "ShellExecuteEx" Shell32.dll Pointer pExecInfo Returns Integer External_Function AboutWaitForSingleObject "WaitForSingleObject" Kernel32.dll ; Handle hHandle ; DWord dwMilliseconds ; Returns DWord External_Function AboutCloseHandle "CloseHandle" Kernel32.dll Handle hHandle Returns Integer // *** Global/Desktop Function Declarations: *** Function ComputerName Desktop Returns String String sName Get_Environment "COMPUTERNAME" to sName Function_Return sName End_Function Function Network_User_Name Desktop Returns String #IF (!@ > 191) WString wName Integer iRetval iLength Move 0 to iLength Move (WNetGetUserW (0, 0, AddressOf (iLength))) to iRetval Move (ZeroString(iLength)) to wName Move (WNetGetUserW (0, AddressOf (wName), AddressOf (iLength))) to iRetval If (iRetval = NO_ERROR) Begin Function_Return (CString (wName)) End Function_Return "User Unknown" #ELSE String sName Get_Environment "USERNAME" to sName Function_Return sName #ENDIF End_Function Function SQLClientVersion Desktop String sDriverID Integer iClient Returns String String sClient sDriver sClientDriver Integer iNumberOfDrivers iDriver iCount iClientVersion Handle hoMsqlDrv Move 0 to iDriver Move "" to sClient Get_Attribute DF_NUMBER_DRIVERS to iNumberOfDrivers For iCount from 1 to iNumberOfDrivers Get_Attribute DF_DRIVER_NAME of iCount to sDriver If (Uppercase(sDriver) = Uppercase(sDriverID)) Begin Move iCount to iDriver Move iNumberOfDrivers to iCount // We're done. End Loop // This info is (at current) only available for the MS SQL driver: If (sDriverID = MSSQLDRV_ID) Begin Get_Attribute DF_DRIVER_SQLSERVER_CLIENT_VERSION of iDriver to iClientVersion Get Create (RefClass(cMSSQLHandler)) to hoMsqlDrv Get SqlServerClientVersionName of hoMsqlDrv iClientVersion to sClientDriver Send Destroy of hoMsqlDrv Move (SFormat("MSSQLDRV Client Version: %1", sClientDriver)) to sClient End Function_Return sClient End_Function // *** Class Declarations: *** // Class cBitmapContainerDFLink is a BitmapContainer Procedure Mouse_Click Integer iWindowNumber Integer iPosition Send Mouse_Up iWindowNumber iPosition End_Procedure Procedure Mouse_Up Integer iWindowNumber Integer iPosition Forward Send Mouse_Up iWindowNumber iPosition Send Show_HomePage "http://www.dataaccess.com/" End_Procedure End_Class Class cCopyEditorContentButton is a Button Procedure Construct_Object Forward Send Construct_Object Property Handle phoEditorHandle #IF (!@ >= 170) Set psToolTip to C_$DescCopy #ENDIF End_Procedure Procedure CopyToWindowsClipboard Handle hoEditor Boolean bCanCopy Address aEditorAddress Get phoEditorHandle to hoEditor Send Select_All of hoEditor Get CanCopy of hoEditor to bCanCopy If (bCanCopy = True) Begin Get paValue of hoEditor to aEditorAddress Send Copy of hoEditor // Remove the selection after text is copied to the clipboard. Send Beginning_of_Data of hoEditor Send Info_Box C_$CopyToClipboard_Text End End_Procedure End_Class { Visibility=Private } Class SysinfoDisplay is a cTextEdit Procedure Construct_Object Forward Send Construct_Object Set Size to 100 245 Set Location to 6 6 Set Border_Style to Border_None Set Read_Only_State to True Set pbWrap to True Set peAnchors to anAll End_Procedure // Augmented class message to adjust certain text strings that are wrong... Procedure AppendTextLn String sText String sWorkspaceWSFile // Only works for English: If (ghoApplication > 0) Begin If (sText contains "Workspace Name") Begin Move "Workspace Config Filename:" to sText Get psWorkspaceWSFile of (phoWorkspace(ghoApplication)) to sWorkspaceWSFile Move (sText * sWorkspaceWSFile) to sText End End Send AppendText sText Send AppendText (character(10)) End_Procedure // This method will show the name Of the current directory in the system // information box { Visibility=Private } Procedure Show_Current_Directory String sDir Get_Current_Directory To sDir Send AppendTextLn (SFormat (C_$CurrentDirectory, sDir)) End_Procedure { Visibility=Private } Procedure Show_Windows_Directory String sWindir Get_Windows_Directory To sWindir Send AppendTextLn (SFormat (C_$WindowsDirectory, sWindir)) End_Procedure { Visibility=Private } Procedure Show_Current_User Send AppendTextLn (SFormat (C_$Computer_Name, ComputerName (Self))) Send AppendTextLn (SFormat (C_$NetworkUserName, Network_User_Name (Self))) End_Procedure { Visibility=Private } Procedure Show_Number_Format Integer iFormat String sFormatText Get_Attribute DF_THOUSANDS_SEPARATOR to iFormat Move (Character (iFormat)) To sFormatText Send AppendTextLn (SFormat (C_$ThousandsSeparator, sFormatText, iFormat)) Get_Attribute DF_DECIMAL_SEPARATOR to iFormat Move (Character (iFormat)) to sFormatText Send AppendTextLn (SFormat (C_$DecimalSeparator, sFormatText)) End_Procedure { Visibility=Private } Procedure Show_Filelist_Name String sFilename Get_Attribute DF_FILELIST_NAME to sFilename Send AppendTextLn (SFormat (C_$CurrentFilelist, sFilename)) End_Procedure { Visibility=Private } Procedure Show_Lock_Delay Integer iLockdelay Get_Attribute DF_LOCK_DELAY to iLockdelay Send AppendTextLn (SFormat (C_$DatabaseLockingDelay, iLockDelay)) End_Procedure { Visibility=Private } Procedure Show_Lock_Timeout Integer iLockTimeout Get_Attribute DF_LOCK_TIMEOUT to iLockTimeout Send AppendTextLn (SFormat (C_$DatabaseLockingTimeout, iLockTimeOut)) End_Procedure { Visibility=Private } Procedure Show_Screen_Size Integer iYscreensize iXscreensize Move (GetSystemMetrics (SM_CXSCREEN)) To iXscreensize Move (GetSystemMetrics (SM_CYSCREEN)) To iYscreensize Send AppendTextLn (SFormat (C_$VideoResolution, iXscreensize, iYscreensize)) End_Procedure { Visibility=Private } Procedure Show_Page_Size Send AppendTextLn (SFormat (C_$PageEndFormFeed, Pageend, Pagefeed)) End_procedure { Visibility=Private } Procedure Show_Date Date dToday Move (CurrentDateTime()) to dToday Send AppendTextLn (SFormat (C_$CurrentSystemDate, String (dToday))) End_procedure { Visibility=Private } Procedure Show_Date_Format Integer iDateFormat String sDateFormat Get_Attribute DF_DATE_FORMAT to iDateFormat Case Begin Case (iDateFormat = DF_DATE_USA) Move C_$USA To sDateFormat Case Break Case (iDateFormat = DF_DATE_EUROPEAN) Move C_$European To sDateFormat Case Break Case (iDateFormat = DF_DATE_MILITARY) Move C_$Military To sDateFormat Case Break Case Else Move C_$UnknownDateType To sDateFormat Case Break Case End Send AppendTextLn (SFormat (C_$DateFormat, sDateformat)) End_Procedure { Visibility=Private } // 2013-08-14 NGS // Unformatted numeric values shown doesn't look good. These looks much better. Procedure Show_Systemresources tWinMemoryStatusEx MemoryStatusInfo Integer iRetval Number nValue String sValue Move (SizeOfType (tWinMemoryStatusEx)) to MemoryStatusInfo.dwLength Move (GlobalMemoryStatusEx (AddressOf (MemoryStatusInfo))) to iRetval If (iRetval = 0) Begin Move (ShowLastError ()) to iRetval Procedure_Return End Send AppendTextLn "" Move MemoryStatusInfo.ullTotalPhys to nValue // Show memory in Gigabytes: Move (nValue/1024/1024/1024) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 2 to sValue Send AppendTextLn (SFormat (C_$AvailableMemory, (sValue * "GB"))) Send AppendTextLn (SFormat (C_$MemoryUtilization, String(MemoryStatusInfo.dwMemoryLoad) * "%")) // Send AppendTextLn (SFormat (C_$AvailablePhysicalMemory, Real (MemoryStatusInfo.ullAvailPhys) / Real (MemoryStatusInfo.ullTotalPhys) * 100.0)) Move (Real(MemoryStatusInfo.ullAvailPhys) / Real(MemoryStatusInfo.ullTotalPhys) * 100.0) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 0 to sValue Send AppendTextLn (SFormat (C_$AvailablePhysicalMemory, (sValue * "%"))) // Send AppendTextLn (SFormat (C_$AvailablePagefileSpace, Real (MemoryStatusInfo.ullAvailPageFile) / Real (MemoryStatusInfo.ullTotalPageFile) * 100.0)) Move (Real(MemoryStatusInfo.ullAvailPageFile) / Real(MemoryStatusInfo.ullTotalPageFile) * 100.0) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 0 to sValue Send AppendTextLn (SFormat (C_$AvailablePagefileSpace, (sValue * "%"))) // Send AppendTextLn (SFormat (C_$AvailableVirtualMemory, Real (MemoryStatusInfo.ullAvailVirtual) / Real (MemoryStatusInfo.ullTotalVirtual) * 100.0)) Move (Real(MemoryStatusInfo.ullAvailVirtual) / Real(MemoryStatusInfo.ullTotalVirtual) * 100.0) to nValue Move (Round(nValue)) to nValue Get FormatNumber nValue 0 to sValue Send AppendTextLn (SFormat (C_$AvailableVirtualMemory, (sValue * "%"))) // Add an empty row after the memory information: Send AppendTextLn "" End_Procedure { Visibility=Private } Procedure Show_Registration String sRegName Integer iSN iUsersMax iUserCount Registration sRegName iSN Get_Licensed_Max_Users to iUsersMax Get_Current_User_Count to iUserCount Send AppendTextLn (SFormat (C_$Serial, iSN)) Send AppendTextLn (SFormat (C_$RegName, sRegName)) Send AppendTextLn (SFormat (C_$Current_User_Count, iUserCount)) Send AppendTextLn (SFormat (C_$Max_Licensed_User_Count, iUsersMax)) End_Procedure //**************************************************************************** // If workspaces are used, we will send the message EnumerateWorkspaceData // To the workspace object passing the an object and message To send back // To this object. It is expected that the workspace object will send this // message for every line Of information it wants displayed (passing the // information To be displayed //**************************************************************************** Register_Procedure EnumerateWorkspaceData Integer hObjId Integer hmMessId { Visibility=Private } Procedure Show_ServicePack String sKey sVersion sDataFlex Handle hoRegistry Boolean bExists bOpened #IF (!@ < 180) Move "Visual DataFlex" to sDataFlex #ELSE Move "DataFlex" to sDataFlex #ENDIF Get Create (RefClass(cRegistry)) to hoRegistry Set phRootKey of hoRegistry to HKEY_LOCAL_MACHINE Set pfAccessRights of hoRegistry to KEY_READ Get KeyExists of hoRegistry "SOFTWARE\Wow6432Node" to bExists If (bExists) Begin Move ("SOFTWARE\Wow6432Node\Data Access Worldwide\" + sDataFlex + "\" + SysConf (SYSCONF_DATAFLEX_REV)) to sKey End Else Begin Move ("SOFTWARE\Data Access Worldwide\" + sDataFlex + "\" + SysConf (SYSCONF_DATAFLEX_REV)) to sKey End Get KeyExists of hoRegistry sKey to bExists If (bExists) Begin Get OpenKey of hoRegistry sKey to bOpened If (bOpened) Begin Get ValueExists of hoRegistry "CurrentVersionDescription" to bExists If (bExists) Begin Get ReadString of hoRegistry "CurrentVersionDescription" to sVersion End Send CloseKey of hoRegistry End End Send Destroy of hoRegistry If (sVersion <> "") Begin Send AppendTextLn sVersion Send AppendTextLn "" End End_Procedure { Visibility=Private } Procedure Show_WorkspaceInformation Integer hoWorkspace If (ghoApplication <> 0) Begin Get phoWorkspace of ghoApplication to hoWorkspace If (hoWorkspace <> 0) Begin Send EnumerateWorkspaceData of hoWorkspace Self msg_AppendTextLn End End End_Procedure #IF (!@ >= 190) //**************************************************************************** // If connection ids are used, we will send the message EnumerateConnections // to the connection manager object passing the an object and message to send // back to this object. It is expected that the connection manager object will // send this message for every line Of information it wants displayed (passing // the information To be displayed //**************************************************************************** Register_Procedure EnumerateConnections Integer hObjId Integer hmMessId { Visibility=Private } Procedure Show_ConnectionIdInformation If (ghoConnection > 0) Begin Send EnumerateConnections of ghoConnection Self (RefProc(AppendTextLn)) Send AppendTextLn "" End End_Procedure #ENDIF { Visibility=Private } Function VersionStr Integer iVer Integer iRev Integer iBld Returns String Function_Return (String (iVer) - "." - String (iRev) - "." - String (iBld)) End_Function { Visibility=Private } Procedure Show_Versions Integer iVersion iRevision iBuild Version_information iVersion iRevision iBuild Send AppendTextLn (SFormat (C_$RuntimeVersion, VersionStr(self,iVersion,iRevision,iBuild) )) Send AppendTextLn (SFormat (C_$PackageVersion, VersionStr(self,PKG_VERSION, PKG_REVISION, PKG_BUILD) )) Send AppendTextLn (SFormat (C_$FMACVersion, VersionStr(self,FMAC_VERSION, FMAC_REVISION, FMAC_BUILD) )) #IFDEF IS$WIN64 Send AppendTextLn "This is a 64-bit exe file" #ELSE Send AppendTextLn "This is a 32-bit exe file" #ENDIF End_Procedure Function IsDAWSQLDriver String sDriverID Returns Boolean Boolean bOK Move (sDriverID = MSSQLDRV_ID or sDriverID = DB2_DRV_ID or sDriverID = ODBC_DRV_ID) to bOK Function_Return bOK End_Function Function IsMertechDriver String sDriverID Returns Boolean Boolean bOK #IFDEF DUF_Use_Mertech_Drivers Move (sDriverID = SQLFLEX or sDriverID = ORAFLEX or sDriverID = MDSPgSQL or sDriverID = MySQLFlex) to bOK #ENDIF Function_Return bOK End_Function //*** //*** BW //*** Procedure: Show_Drivers //*** Purpose : Show loaded database drivers //*** { Visibility=Private } #IF (Required_FMAC_Build > 106) #warning -3 #ENDIF Procedure Show_Drivers String sDriverID sVersion sClient sValue Integer iNumberOfDrivers iDriver iClient iUsersMax iSerialNo iNumServers iCount Handle hoCLIHandler hoBtrvHandler Boolean bStudioLicense bIsDAWDriver bIsMertechDriver Move False to bStudioLicense Get Create (RefClass(cCLIHandler)) to hoCLIHandler Get Create (RefClass(cDFBtrDrvHandler)) to hoBtrvHandler // For testing purposes: // Send Ignore_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // Load_Driver MSSQLDRV_ID // Load_Driver ODBC_DRV_ID // Load_Driver DB2_DRV_ID // Send Trap_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // // #IFDEF DUF_Use_Mertech_Drivers // Send Ignore_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // Load_Driver SQLFLEX // Load_Driver MDSPgSQL // Load_Driver MDSMySQL // Load_Driver ORAFLEX // Send Trap_Error of Error_Object_Id DFERR_CANT_LOAD_DLL // #ENDIF Move False to Err // Loop through all loaded drivers. Get_Attribute DF_NUMBER_DRIVERS to iNumberOfDrivers If (iNumberOfDrivers > 1) Begin Send AppendTextLn "" End For iDriver from 1 to iNumberOfDrivers // For some weird reason it can happen that - when using Mertech drivers - that the driver index // was increased in the CLI array, but it has no value. In that case a "Bad parameter..." error // would be thrown, so we safeguard from that here. Send Ignore_Error of Error_Object_Id DFERR_BAD_PARAMETER Get_Attribute DF_DRIVER_NAME of iDriver to sDriverID Send Trap_Error of Error_Object_Id DFERR_BAD_PARAMETER Get IsDAWSQLDriver sDriverID to bIsDAWDriver Get IsMertechDriver sDriverID to bIsMertechDriver If (sDriverID = DFBTRDRV_ID or bIsDAWDriver = True or bIsMertechDriver = True) Begin // Pervasive/Btrieve database If (sDriverID = DFBTRDRV_ID) Begin Get CKRevision of hoBtrvHandler to sVersion Get PSQLLocalEngineVersionInfo of hoBtrvHandler 0 to sClient If (sClient <> "0.0.0") Begin Send AppendTextLn (SFormat (C_$Pervasive_Local_Engine_Version, sClient)) End Get PSQLServerEngineVersionInfo of hoBtrvHandler 0 to sClient If (sClient <> "0.0.0") Begin Send AppendTextLn (SFormat (C_$Pervasive_Server_Engine_Version, sClient)) End End Else Begin Set psDriverID of hoCLIHandler to sDriverID Move 0 to iNumServers If (sDriverID <> DATAFLEX_ID) Begin Get_Attribute DF_DRIVER_NUMBER_SERVERS of iDriver to iNumServers End If (bIsDAWDriver = True) Begin If (sDriverID = MSSQLDRV_ID) Begin Get SQLClientVersion sDriverID iClient to sClient End Get CKRevision of hoCLIHandler to sVersion End If (bIsMertechDriver = True) Begin #IFDEF DUF_Use_Mertech_Drivers GET_DRIVER_REVISION to sVersion #ENDIF End // If the serialnumber is = 0, it means that the // Studio licens is in use and there is no // number of max users defined because the driver is // relying on the info from the VDF license. If (bStudioLicense = False) Begin Get SerialNumber of hoCLIHandler to iSerialNo Move (iSerialNo = 0) to bStudioLicense End End Send AppendTextLn (SFormat (C_$DatabaseDriver, (sDriverID * "-" * (C_$Version + ": " + sVersion)))) If (sClient <> "" and sDriverID = MSSQLDRV_ID) Begin Send AppendTextLn (C_$SQL_Client_Text * sClient) End If (iNumServers <> 0) Begin For iCount from 1 to iNumServers Get_Attribute DF_DRIVER_SERVER_NAME of iDriver iCount to sValue If (not(sValue contains ";PWD=")) Begin Send AppendTextLn (" " + C_$SQLServerText * sValue) End Loop End End Loop Send AppendTextLn "" If (bStudioLicense = False) Begin Get MaxUsers of hoCLIHandler to iUsersMax Send AppendTextLn (SFormat (C_$Max_DbDriver_Licensed_User_Count, iUsersMax)) End Else Begin Send AppendTextLn C_$DF_Studio_License_Text End Send Destroy of hoCLIHandler Send Destroy of hoBtrvHandler End_Procedure { Visibility=Private } Procedure Show_HelpFile String sHelpFile Integer eHelpType If (ghoApplication <> 0) Begin Get peHelpType Of ghoApplication To eHelpType If (eHelpType = htHtmlHelp and ghoHtmlHelp) Begin Get GetHelpFile Of ghoHtmlHelp To sHelpFile End Else If (eHelpType = htWinHelp and Help_object_id) Begin Get Help_filename Of Help_object_id To sHelpFile End Else Begin Move C_$ThereIsNoHelpfileDefined To sHelpFile End Send AppendTextLn (SFormat (C_$HelpFile, sHelpFile)) End End_Procedure { Visibility=Private } Procedure Show_EnterAsTab Boolean bEnterKeyAsTabKey String sText If (ghoApplication <> 0) Begin Get pbEnterKeyAsTabKey Of ghoApplication To bEnterKeyAsTabKey If (bEnterKeyAsTabKey) Begin Move "True" To sText End Else Begin Move "False" To sText End Send AppendTextLn (SFormat (C_$EnterKeyNavForward, sText)) End End_Procedure // During activation we will remove the old information and add the newly // found systeminformation { Visibility=Private } Procedure Add_Focus Integer hoRoot Forward Send Add_Focus hoRoot Send Delete_Data Set Changed_State To False Set Read_Only_State To True Send Show_Registration Send Show_Drivers Send Show_ServicePack Send Show_Versions Send AppendTextLn "" If (ghoApplication <> 0) Begin Send Show_WorkSpaceInformation Send Show_HelpFile Send AppendTextLn "" End Else Begin Send AppendTextLn "" End #IF (!@ >= 190) If (ghoConnection <> 0) Begin Send Show_ConnectionIdInformation End #ENDIF Send Show_Current_User Send Show_Windows_Directory Send Show_Current_Directory // This is already shown in the workspace details, // unless no workspace object is present: If (ghoApplication = 0) Begin Send Show_Filelist_Name End If (ghoApplication <> 0) Begin Send AppendTextLn "" Send Show_EnterAsTab End Send Show_Screen_Size Send Show_Page_Size Send Show_Number_Format Send Show_Date_Format Send Show_Lock_Delay Send Show_Lock_Timeout Send Show_Date Send Show_Systemresources Send Beginning_of_Data Set Icon to 'default.ico' End_Procedure End_Class { Visibility=Private } Class SysInfoDialog is a ModalPanel Procedure Construct_Object Forward Send Construct_Object Set Label to C_$SystemInformation Set Size to 140 267 Set Locate_Mode to CENTER_ON_PARENT Set Border_Style to Border_Thick Set Sysmenu_Icon to False // "+1" will make the panel to paint correctly. Set piMinSize to (Hi(Size(Self))) (Low(Size(Self)) +1) // 2014-09-14 NGS // Added a container object around the cTexteditor // object to get a border around the text. Object oSysinfoDisplayContainer is a Container3d Set Location to 2 4 Set Size to 110 255 Set Border_Style to Border_ClientEdge Set Color to clWhite Set peAnchors to anAll Object oSysinfoDisplay is a SysInfoDisplay End_Object End_Object Object oCloseButton is a Button Set Label to C_$Close Set Location to 120 210 Set Message item 0 to msg_Close_Panel Set Default_State To True // In case someone likes to make the AboutDialog's Border_Style to thick, // and changes its peAnchors, we might as well prepare this object // for that situation. Set peAnchors to anBottomRight End_Object Object oCopyButton is a cCopyEditorContentButton On_Item C_$Copy Send CopyToWindowsClipboard Set Size to 14 50 Set Location to 120 158 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight Set phoEditorHandle to (oSysinfoDisplay(Self)) End_Object On_Key kCancel Send Close_Panel End_Procedure Procedure Page Integer iPageObject Handle hMenu Integer iPrevState Forward Send Page iPageObject // Ok, this seems to have been fixed in VDF 17.1! // #IF (!@ < 170) // Shadow upper left corner menu items: (icon menu items) Move (GetSystemMenu(Window_Handle(Self), False)) to hMenu Move (EnableMenuItem(hMenu, SC_RESTORE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_SIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MINIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MAXIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState #ENDIF End_Procedure End_Class Class cAboutEdit is an cRichEdit Procedure Construct_Object Forward Send Construct_Object Property String psContentText Set Size to 77 153 Set Location to 8 60 Set Read_Only_State to True Set Skip_State to True // Font size is calculated in "Twips", which are 1/1440 of an inch, // or 1/20 of a printer's point. Set piRightMargin to (0.1 * 1440) Set Border_Style to Border_None End_Procedure // Adds a line of text to the edit object Procedure Add_Line String sText String sContentText Get psContentText to sContentText Move (sContentText + String(sText)) to sContentText Set psContentText to sContentText End_Procedure // Compared to Add_Line above, this adds an extra empty line after the passed value. // Note that we use a property psContentText and add to it, // because the object isn't paged yet when we add these // values and the COM edit object needs to be paged // for the text to become visible. See Also: Procedure Page below. Procedure Add_LineLn String sText String sContentText sCR Move (Character(10) + String(Character(13))) to sCR Get psContentText to sContentText Move (sContentText + String(sText) + sCR) to sContentText Set psContentText to sContentText End_Procedure Procedure OnLinkClicked Integer iPositionStart Integer iPositionEnd String sLinkText Get TextRange iPositionStart iPositionEnd to sLinkText Send Show_HomePage sLinkText End_Procedure Procedure Page Integer iPageObject String sContentText Forward Send Page iPageObject Get psContentText to sContentText Send AppendText sContentText send Beginning_of_Data End_Procedure End_Class { OverrideProperty=StatusBar_Id DesignTime=False } { OverrideProperty=ToolBar_Id DesignTime=False } { HelpTopic=AboutDialog } Class AboutDialog is a ModalPanel Procedure Construct_Object Forward Send Construct_Object Set Label to C_$About Set Size to 118 230 Set Locate_Mode to CENTER_ON_PARENT Set Border_Style to Border_Thick Set piMinSize to (Hi(Size(Self))) (Low(Size(Self))) Object oSysInfoDialog is a SysInfoDialog End_Object Object oBox is a Container3d Set Border_Style to Border_Normal Set Size to 90 220 Set Location to 4 5 Set Color to clWhite // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anAll Object oAboutGraphic is a BitmapContainer Set Border_Style To Border_None Set Bitmap_Style to Bitmap_Center Set Color to clWhite Set Size to 45 50 Set Location to 0 3 End_Object Object oPoweredByDFGraphic is a cBitmapContainerDFLink Set Border_Style to Border_None Set Bitmap_Style to Bitmap_Center Set Color to clWhite Set Size to 30 55 Set Location to 50 3 End_Object Object oInfoList_Editor is an cAboutEdit // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anAll End_Object // These objects are here for backwards compatability only. // They are not used. Object oProductName is a TextBox Set Label To C_$ProductName Set Size To 10 45 Set Location To 8 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object Object oVersion is a TextBox Set Label To C_$Version Set Size To 10 25 Set Location To 21 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object Object oCopyright is a TextBox Set Label To C_$Copyright Set Size To 10 31 Set Location To 34 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object Object oAuthor is a TextBox Set Label To C_$Author Set Size To 10 22 Set Location To 46 53 Set Visible_State to False Set Focus_Mode to NonFocusable End_Object End_Object Object oOKButton is a Button On_Item C_$Close Send Close_Panel Set Location to 98 176 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight End_Object Object oSysInfoButton is a Button On_Item C_$SystemInfo Send Show_Sysinfo Set Location to 98 123 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight End_Object Object oCopyButton is a cCopyEditorContentButton On_Item C_$Copy Send CopyToWindowsClipboard Set Size to 14 50 Set Location to 98 70 // In case someone wants to set the AboutDialog's Border_Style to thick, // we might as well prepare the object for it. Set peAnchors to anBottomRight Set phoEditorHandle to (oInfoList_Editor(Self)) End_Object On_Key Kcancel Send KeyAction of oOKButton Set Logo to "DacAbout.bmp" // Square bitmaps of 80x80 work best Set LogoDF to "DF32.bmp" // Set LogoVDF to "PoweredByOrange.bmp" End_Procedure Procedure Page Integer iPageObject Handle hMenu Integer iPrevState Forward Send Page iPageObject // Due to a bug in the ModalPanel class, we need to set the icon here: Set Icon to "Default.ico" // Shadow upper left corner menu items: (icon menu items) Move (GetSystemMenu(Window_Handle(Self), False)) to hMenu Move (EnableMenuItem(hMenu, SC_RESTORE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState // The "Move" menu command may come in handy to have. // Move (EnableMenuItem(hMenu, SC_MOVE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_SIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MINIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState Move (EnableMenuItem(hMenu, SC_MAXIMIZE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState // The "Close" menu command may be good to have. // Move (EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND ior MF_GRAYED)) to iPrevState End_Procedure { MethodType=Property } Procedure Set ProductName String sText Set Value of oProductName to sText End_Procedure { MethodType=Property } Procedure Set Copyright String sText Set Value of oCopyright to sText End_Procedure { MethodType=Property } Procedure Set Author String sText Set Value of oAuthor to sText End_Procedure { MethodType=Property } Procedure Set Version String sVersion Handle hoVersionInfo Boolean bIncluded Integer iMajor iMinor iRelease iBuild Date dCompileDate String sCertInfo If (sVersion = "") Begin // This automatically shows the program version of the program, if available. // It will be displayed as the second item in the edit object. If (ghoApplication <> 0) Begin Get phoVersionInfo of ghoApplication to hoVersionInfo If (hoVersionInfo <> 0) Begin Get pbIncluded of hoVersionInfo to bIncluded If (bIncluded) Begin Get piVersionMajor of hoVersionInfo to iMajor Get piVersionMinor of hoVersionInfo to iMinor Get piVersionRelease of hoVersionInfo to iRelease Get piVersionBuild of hoVersionInfo to iBuild Move (SFormat (C_$VERSION + ": %1.%2.%3.%4", iMajor, iMinor, iRelease, iBuild)) to sVersion End End End End // Display the compiled date as the next row in the edit object, after the program version. Get GetCompileDate to dCompileDate If (sVersion <> "") Begin Send Add_Lineln (sVersion + (Character(13)) + C_$Compile_Date * String(dCompileDate)) End Get IsProgramDigitallySigned to sCertInfo If (sCertInfo <> "-1") Begin If (sCertInfo <> "") Begin Send Add_LineLn sCertInfo End Else Begin Send Add_LineLn "The program has NOT been digitally signed, or there is a problem with the digical certificate." End End End_Procedure Function IsDate String sDate Returns Boolean Boolean bIsDate String sGoodCharacters sChar Integer iCount iLength Move True to bIsDate Move "0123456789-/" to sGoodCharacters Move (Length(sDate)) to iLength For iCount from 1 to iLength Move (Left(sDate, 1)) to sChar Move (Mid(sDate, 12, 2)) to sDate Move (sGoodCharacters contains sChar) to bIsDate If (bIsDate = False) Begin Move iLength to iCount End Loop Function_Return bIsDate End_Function Function GetCompileDate Returns Date Date dCompileDate String sAppFilename sProgram sData sCompileDate Integer iChannel iPos iDateFormat iCount iSize Boolean bIsValid Move 0 to dCompileDate // Get full path to the current running executable Get GetApplicationFileName of ghoApplication to sAppFilename Get GetApplicationName of ghoApplication to sProgram //Read the current file up to where the data we're interesting in is (this was hand calced and so could vary) Get Seq_Open_Input_Channel ("binary:" * sAppFilename) to iChannel Get_Argument_Size to iSize Set_Argument_Size 9000000 Read_Block channel iChannel sData 9000000 // This must be big enough to reach the compile date location Move (Pos(sProgram,sData)) to iPos If (iPos > 0) Begin // The compile date is 10 characters long and starts 3 characters after the program name Move (Mid(sData, 10, iPos + Length(sProgram) + 3)) to sCompileDate // In US format // If the current date format is non US, we need to temporary // change the format and then move the string to the date variable. Get_Attribute DF_DATE_FORMAT to iDateFormat Set_Attribute DF_DATE_FORMAT to DF_DATE_USA Move (Date(sCompileDate)) to dCompileDate Set_Attribute DF_DATE_FORMAT to iDateFormat // Reset date format End Else Begin Error DFERR_PROGRAM "Compile Date location in .exe not found" End Send Seq_Close_Channel iChannel Set_Argument_Size iSize // Read_Block channel iChannel sData (8 * 1024) // First 8K is .exe header skip it // Read_Block channel iChannel sData 75 // The compile information we're interested in // The data is padded with Character(0)s. Strip them out // Move (CString(sData)) to sData // The compile date is after the first ", ", so string parsing is required // Move (Pos(", ", sData)) to iPos // Move (Mid(sData, 10, (iPos + 2) )) to sCompileDate // In US format // If the current date format is non US, we need to temporary // change the format and then move the string to the date variable. // Get_Attribute DF_DATE_FORMAT to iDateFormat // Set_Attribute DF_DATE_FORMAT to DF_DATE_USA // // // Note the build in IsDateValid can return the wrong result // // when controls characters are part of the sCompileDate. // Get IsDate sCompileDate)) to bIsValid // If (bIsValid = True) Begin // Move (Date(sCompileDate)) to dCompileDate // End // // // As of DataFlex 19.1 the header has changed; and so has the compile date location. // // It seems to me that the position for the compilation date can vary. So we read line-by-line // // until we encounter the program name that appears just in front of the compile date. // // Although I'm not sure about if/how the position varies, the below seems to work just fine. // If (dCompileDate = 0) Begin // Move "" to sCompileDate // Move 30000 to iSize // For iCount from 1 to iSize // Readln channel iChannel sData // Move (Pos(sProgram, sData)) to iPos // If (iPos <> 0) Begin // Move (Mid(sData, 10, (iPos + (Length(sProgram) + 2)))) to sCompileDate // Move (Trim(sCompileDate)) to sCompileDate // Move iSize to iCount // We're out of here. // End // Loop // If (Left(sCompileDate, 1) = "0") Begin // Move ("1" + String(sCompileDate)) to sCompileDate // End // Get IsDate sCompileDate)) to bIsValid // If (bIsValid = True) Begin // Move (Date(sCompileDate)) to dCompileDate // End // End // Send Seq_Close_Channel iChannel // Set_Attribute DF_DATE_FORMAT to iDateFormat // Reset date format Function_Return dCompileDate End_Function // A variant of the ShellExecute Win API, but it waits until the process that is started // (the passed program), has been finished // The DOS box does also _not_ flash briefly. Procedure RunProgramWait String sProgram String sParameter Handle hProcess Integer iVoid AboutSHELLEXECUTEINFO sInfo Move (SizeOfType(AboutSHELLEXECUTEINFO)) to sInfo.cbSize Move SEE_MASK_NOCLOSEPROCESS to sInfo.fMask Move SW_SHOW to sInfo.nShow Move (AddressOf(sProgram)) to sInfo.lpFile Move (AddressOf(sParameter)) to sInfo.lpParameters // This will "hide" the DOS box from showing (no flasing box): Move 0 to sInfo.nShow Move (AboutShellExecuteEx(AddressOf(sInfo))) to iVoid Move sInfo.hProcess to hProcess If (hProcess) Begin Move (AboutWaitForSingleObject(hProcess, -1)) to iVoid Move (AboutCloseHandle(hProcess)) to iVoid End End_Procedure Function AddFolderDelimiter String sPath Returns String String sDirSep Move (SysConf(SYSCONF_DIR_SEPARATOR)) to sDirSep Move (Trim(sPath)) to sPath If (Right(sPath, 1) <> sDirSep) Begin Move (sPath + sDirSep) to sPath End Function_Return sPath End_Function // Returns an empty string if the current program is not digitally signed, // or there is a problem with the certificate. // Note: A copy of the Microsoft signtool.exe program must reside in the Programs folder, // else nothing is shown in the About object. (Size 355 KB) Function IsProgramDigitallySigned Returns String Boolean bExists String sPath sProgram sParams sRetval Integer iCh Move "" to sRetval Get psProgramPath of (phoWorkspace(ghoApplication)) to sPath Get AddFolderDelimiter sPath to sPath File_Exist (sPath + CS_SignProgram) bExists If (bExists = False) Begin Function_Return "-1" End Get GetApplicationFileName of ghoApplication to sProgram Move (CS_VerifyCredentials * CS_DefAuthVerPolicy) to sParams Move (sParams * '"' + sProgram + '"') to sParams Move (sParams * String("| clip")) to sParams Get Seq_New_Channel to iCh Direct_Output channel iCh (sPath + CS_TempCertBatchFile) Writeln channel iCh ('"' + sPath + CS_SignProgram + '"' * sParams) Close_Output channel iCh // New ShellExecute based message that waits for the passed process to end. Send RunProgramWait (sPath + CS_TempCertBatchFile) "" Direct_Input channel iCh "CLIPBOARD:" Readln channel iCh sRetval Readln channel iCh sRetval Readln channel iCh sRetval Readln channel iCh sRetval Close_Input channel iCh Send Seq_Release_Channel iCh If (Lowercase(sRetval) contains "authenticode") Begin Move "This program has been digitally signed and the certificate is valid." to sRetval End Else Begin Move "" to sRetval End // Get DeleteFile (sPath + CS_TempCertBatchFile) to iRetval EraseFile (sPath + CS_TempCertBatchFile) Function_Return sRetval End_Function Procedure Add_LineLn String sValue Send Add_LineLn of oInfoList_Editor sValue End_Procedure Procedure Add_Line String sValue Send Add_Line of oInfoList_Editor sValue End_Procedure { MethodType=Property } Procedure Set Logo string sLogo // Square bitmaps of 80x80 work best Set Bitmap of oAboutGraphic to sLogo End_Procedure { MethodType=Property } Procedure Set LogoDF String sLogo Set Bitmap of oPoweredByDFGraphic to sLogo End_Procedure { Visibility=Private } Procedure Show_Sysinfo Send Popup_Modal of oSysinfoDialog End_Procedure { Visibility=Private } Procedure Show_HomePage String sWebpage Handle hWnd Get Window_Handle to hWnd Runprogram Shell Background (Trim(sWebpage)) End_Procedure End_Class