home *** CD-ROM | disk | FTP | other *** search
Wrap
'$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' CONST WINMAJVER = 3 CONST WINMINVER = 10 CONST WELCOME = 100 CONST DANE_PERSONALNE = 101 CONST DANE_PERSONALNE_SPR = 102 CONST KOLEJNA_INSTALACJA = 103 CONST PARAMETRY_INSTALACJI = 104 CONST MODAUTOEXEC = 105 CONST USZKODZONY_DYSK = 106 CONST ZLA_SCIEZKA = 107 CONST PUSTE_NAZWISKO = 108 CONST BLAD_ZAPISU_INSTAL = 109 CONST POTWIERDZENIE_WYJSCIA = 200 CONST INFOWYJSCIE = 201 CONST ZLYNUMER = 202 CONST POBIERZ_SCIEZKE = 203 CONST BRAKKATALOGU = 204 CONST BRAK_AUTOEXECA = 205 CONST NIE_ZAINSTALOWANY = 206 CONST JEST_SCIEZKA = 207 CONST ZLA_WERSJA_WINDOWS = 208 CONST BRAKMIEJSCADLAINITA = 209 CONST BLADINSTALACJI = 210 CONST INFODIALOG = 211 CONST BLAD_ZAPISU_DOCEL = 212 CONST BRAK_KARTY = 213 CONST POBIERZ_SCIEZKE_WORD = 214 CONST POBIERZ_SCIEZKE_EXCEL = 215 CONST BLAD_WORD_INSTALL = 216 CONST BLAD_EXCEL_INSTALL = 217 CONST ZLA_SCIEZKA_WORD = 218 CONST ZLA_SCIEZKA_EXCEL = 219 CONST BRAKMIEJSCA = 119 CONST KONIEC_OK = 123 CONST MAXPATHLEN = 30 CONST LOGO = 1 CONST ST = 1 CONST HLP = 2 CONST SDK = 3 CONST MACWORD = 4 CONST MACEXCEL = 5 CONST MB_ICONQUESTION = 32 CONST MB_ICONEXCLAMATION = 48 CONST MB_ICONASTERISK = 64 GLOBAL nazwa_glownego_pliku$ GLOBAL docel_nazwa$ GLOBAL numer_seryjny$ GLOBAL numer_uzytk$ GLOBAL nazwisko_uzytk$ GLOBAL organizacja_uzytk$ GLOBAL sciezka_inst$ GLOBAL ModAutoStr$ GLOBAL inst_st$ GLOBAL inst_hlp$ GLOBAL inst_sdk$ GLOBAL inst_macword$ GLOBAL inst_macexcel$ GLOBAL drive_status$ GLOBAL ZapotrzebowanieST$ GLOBAL ZapotrzebowanieHLP$ GLOBAL ZapotrzebowanieMACRW$ GLOBAL ZapotrzebowanieMACRE$ GLOBAL ZapotrzebowanieSDK$ GLOBAL ZapotrzebowanieExtra$ GLOBAL cuidll$ GLOBAL sciezka$ GLOBAL sciezkazap$ GLOBAL zrodlo$ GLOBAL np$ GLOBAL nu$ GLOBAL nazwiskouz$ GLOBAL ModAuto% GLOBAL ModAutoZap% GLOBAL PelenDysk% GLOBAL IgnorujPelen% GLOBAL cursor% DECLARE FUNCTION PobierzDanePersonalne LIB "mscuistf.dll" AS INTEGER DECLARE FUNCTION ZapiszDanePersonalne LIB "mscuistf.dll" AS INTEGER DECLARE FUNCTION WpiszDocelNumer LIB "mscuistf.dll" AS INTEGER DECLARE FUNCTION CheckSoundCard LIB "mscuistf.dll" AS INTEGER DECLARE SUB Initialize LIB "mscuistf.dll" (hInstance%, hMainWnd%) DECLARE SUB Terminate LIB "mscuistf.dll" DECLARE FUNCTION GetWindowsDrive AS STRING DECLARE FUNCTION TworzSciezke (Glowny$, Podkat$) AS STRING DECLARE SUB ObliczPotrzebyOpcji (KtorePliki%) DECLARE SUB ObliczPotrzebyWszystkie DECLARE SUB DodajDoListy (KtorePliki%) DECLARE SUB ObliczZajetoscDysku DECLARE SUB AddPathToAutoexec (AutoPath$, Path$) DECLARE FUNCTION IsPathInAutoexec (AutoPath$, Path$) AS INTEGER DECLARE SUB ClearWhiteChars (s$) DECLARE SUB ClearWhiteCharsAndEqualSign(s$) DECLARE SUB GetNextWordUC(s$,w$) DECLARE SUB GetNextPathUC(s$,w$) DECLARE FUNCTION SearchForPathCI (obj$, stg$) AS INTEGER DECLARE SUB ExplodeVersion(v$,v1%,v2%,v3%,v4%) DECLARE FUNCTION CompareVersion(ver1$,ver2$) AS INTEGER DECLARE SUB SearchForFile (ap$,fn$,dir$,ver$,found%) DECLARE FUNCTION WordInstallMacros( Channel& ) AS INTEGER DECLARE FUNCTION WordInstallMenus( Channel& ) AS INTEGER DECLARE SUB WordInstallErr( Msg$ ) DECLARE SUB ExcelInstallErr( Msg$ ) DECLARE FUNCTION DDEInit LIB "mscuistf.dll" (ServerName$, ServerTopic$) AS LONG DECLARE FUNCTION Dx LIB "mscuistf.dll" (Channel&, ExecCommand$) AS INTEGER DECLARE SUB DDETerminate LIB "mscuistf.dll" (hChannel&) DECLARE FUNCTION ShellExecute LIB "shell.dll" (hWnd%, lpszOp$, lpszFile$, lpszParams$, lpszDir$, fsShowCmd%) AS LONG DECLARE FUNCTION GetModuleHandle LIB "kernel" (plszName$) AS INTEGER BEGIN: cuidll$ = "mscuistf.dll" zrodlo$ = GetSymbolValue("STF_SRCDIR") sciezka$ = GetWindowsDrive+":\SYNTALK" WinPath$ = GetWindowsDir SetBitmap cuidll$,LOGO free& = GetFreeSpaceForDrive(GetWindowsDrive) needed& = 8192 IF needed&>free& THEN SetSymbolValue "BEEP", STR$(MB_ICONHAND) sz$=UIStartDlg(cuidll$, BRAKMIEJSCADLAINITA,"FButtonsDlgProc",0,"") GOTO WYJSCIE END IF ON ERROR GOTO BLAD IF (DoesFileExist(TworzSciezke(GetWindowsSysDir(),"pldialog.fon"),femExists)) THEN ELSE CopyFile zrodlo$+"pldialog.fo_", TworzSciezke(GetWindowsSysDir(),"pldialog.fon"), cmoDecompress+cmoOverwrite, 0 ENDIF SetSymbolValue "PLDialogFontPath", TworzSciezke(GetWindowsSysDir(),"PLDIALOG.FON") Initialize hInstFrame(), HwndFrame() ma%=GetWindowsMajorVersion mi%=GetWindowsMinorVersion IF GetWindowsMajorVersion<WINMAJVER THEN GOTO ZLAWERSJA ELSEIF GetWindowsMajorVersion=WINMAJVER THEN IF GetWindowsMinorVersion<WINMINVER THEN GOTO ZLAWERSJA END IF END IF cursor%=ShowWaitCursor SetSymbolValue "Info", "Chwileczke, analizujΩ konfiguracje systemu ..." sz$=UIStartDlg(cuidll$,INFODIALOG,"FInfoDlgProc",0,"") numer_seryjny$ = "PSN" numer_uzytk$ = "USN" nazwisko_uzytk$ = "UName" organizacja_uzytk$ = "UOrg" nazwa_glownego_pliku$ = "GlownyPlik" docel_nazwa$ = "DocelowaNazwa" sciezka_inst$ = "InstallPath" ModAutoStr$ = "AutoexecModify" inst_st$ = "InstallST" inst_hlp$ = "InstallHLP" inst_sdk$ = "InstallSDK" inst_macword$ = "InstMacWord" inst_macexcel$ = "InstMacExcel" drive_status$ = "DriveStatus" SetSymbolValue numer_seryjny$, "" SetSymbolValue numer_uzytk$, "" SetSymbolValue nazwisko_uzytk$, "" SetSymbolValue organizacja_uzytk$, "" IF DoesFileExist (TworzSciezke(WinPath$,"SYNTALK.INI"),femExists) THEN IF (GetIniKeyString("SYNTALK.INI", "Global", "WorkDir") <> "") THEN sciezka$ = GetIniKeyString("SYNTALK.INI", "Global", "WorkDir") SetSymbolValue sciezka_inst$,sciezka$ IF DoesFileExist (TworzSciezke(sciezka$,"SYNTALK.EXE"),femExists) THEN AddListItem inst_st$,"OFF" ELSE AddListItem inst_st$,"ON" ENDIF AddListItem inst_st$,"" IF DoesFileExist (TworzSciezke(sciezka$,"SYNTALK.HLP"),femExists) THEN AddListItem inst_hlp$,"OFF" ELSE AddListItem inst_hlp$,"ON" ENDIF AddListItem inst_hlp$,"" IF DoesDirExist (TworzSciezke(sciezka$,"SDK")) THEN AddListItem inst_sdk$,"OFF" ELSE AddListItem inst_sdk$,"ON" ENDIF AddListItem inst_sdk$,"" IF DoesFileExist (TworzSciezke(sciezka$,"SYNTALK.DOT"),femExists) THEN AddListItem inst_macword$,"OFF" ELSE AddListItem inst_macword$,"ON" ENDIF AddListItem inst_macword$,"" IF DoesFileExist (TworzSciezke(sciezka$,"SYNTALK.XLA"),femExists) THEN AddListItem inst_macexcel$,"OFF" ELSE AddListItem inst_macexcel$,"ON" ENDIF AddListItem inst_macexcel$,"" GOTO SWITCH_INITIALIZED ENDIF ENDIF SetSymbolValue sciezka_inst$,sciezka$ AddListItem inst_st$,"ON" AddListItem inst_st$,"" AddListItem inst_hlp$,"ON" AddListItem inst_hlp$,"" AddListItem inst_sdk$,"ON" AddListItem inst_sdk$,"" AddListItem inst_macword$,"ON" AddListItem inst_macword$,"" AddListItem inst_macexcel$,"ON" AddListItem inst_macexcel$,"" SWITCH_INITIALIZED: AddListItem drive_status$, MID$(sciezka,1,2) AddListItem drive_status$, "" AddListItem drive_status$, "" AddListItem drive_status$, "" AddListItem drive_status$, "" AddListItem drive_status$, "" ZapotrzebowanieST$ = "STNeeds" ZapotrzebowanieHLP$ = "HLPNeeds" ZapotrzebowanieMACRW$ = "MacWordNeeds" ZapotrzebowanieMACRE$ = "MacExcelNeeds" ZapotrzebowanieSDK$ = "SDKNeeds" ZapotrzebowanieExtra$ = "ExtraNeeds" FOR i%=1 TO 26 STEP 1 AddListItem ZapotrzebowanieExtra$,"0" NEXT i% ModAuto%=1 szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ gp$=zrodlo$+"SYNTALK.EXE" SetSymbolValue nazwa_glownego_pliku$, gp$ RestoreCursor cursor% UIPop 1 WELCOME: SetSymbolValue "BEEP", STR$(-1) sz$ = UIStartDlg(cuidll$, WELCOME, "FButtonsDlgProc", 0, "") IF sz$ = "KONTYNUACJA" THEN UIPop 1 ELSE GOSUB PYTANIE_WYJSCIA UIPop 1 GOTO WELCOME END IF IF (CheckSoundCard() = 0) THEN SetSymbolValue "BEEP", STR$(MB_ICONEXCLAMATION) sz$ = UIStartDlg(cuidll$, BRAK_KARTY, "FButtonsDlgProc", 0, "") IF sz$ = "KONTYNUACJA" THEN UIPop 1 ELSE GOSUB PYTANIE_WYJSCIA UIPop 1 END IF ENDIF DANEPERSONALNE: INSTALL: ObliczPotrzebyWszystkie ObliczZajetoscDysku INST1: sz$=UIStartDlg (cuidll$,PARAMETRY_INSTALACJI, "FInstallParamsDlgProc", 0, "") SELECT CASE sz$ CASE "REACTIVATE" ObliczPotrzebyWszystkie ObliczZajetoscDysku GOTO INST1 CASE "SYNTALK" ObliczPotrzebyOpcji ST ObliczZajetoscDysku GOTO INST1 CASE "HELP" ObliczPotrzebyOpcji HLP ObliczZajetoscDysku GOTO INST1 CASE "MACWORD" ObliczPotrzebyOpcji MACWORD ObliczZajetoscDysku GOTO INST1 CASE "MACEXCEL" ObliczPotrzebyOpcji MACEXCEL ObliczZajetoscDysku GOTO INST1 CASE "SDK" ObliczPotrzebyOpcji SDK ObliczZajetoscDysku GOTO INST1 CASE "ZAKONCZENIE" GOSUB PYTANIE_WYJSCIA UIPop 1 GOTO INST1 CASE "KONTYNUACJA" IF PelenDysk% THEN GOSUB DYSKPELEN ObliczPotrzebyWszystkie ObliczZajetoscDysku IF IgnorujPelen% THEN GOTO SPRAWDZKATALOG END IF UIPopAll GOTO INST1 END IF UIPop 1 GOTO SPRAWDZKATALOG CASE "ZMIEN" UIPop 1 GOSUB POBIERZSCIEZKE GOTO INST1 CASE ELSE UIPop 1 GOTO INST1 END SELECT SPRAWDZKATALOG: IF DoesDirExist(sciezka$)=0 THEN SetSymbolValue "BEEP", STR$(MB_ICONQUESTION) sz$=UIStartDlg(cuidll$, BRAKKATALOGU, "FButtonsDlgProc", 0, "") IF sz$="TAK" THEN UIPop 1 GOTO CZY_INSTALOWAC ELSE UIPop 1 GOTO INSTALL END IF END IF CZY_INSTALOWAC: IF GetListItem(inst_ST$,1)="OFF" THEN IF GetListItem(inst_HLP$,1)="OFF" THEN IF GetListItem(inst_MACWORD$,1)="OFF" THEN IF GetListItem(inst_MACEXCEL$,1)="OFF" THEN IF GetListItem(inst_SDK$,1)="OFF" THEN GOTO WYJSCIE END IF END IF END IF END IF END IF KATAOLG_WORDA: KATAOLG_EXCELA: MODAUTOEXEC: INSTALACJA: ClearCopyList DodajDoListy ST DodajDoListy HLP CreateDir sciezka$, cmoNone CopyFilesInCopyList cursor%=ShowWaitCursor SetSymbolValue "Info", "Konfiguruje SynTalka w systemie..." sz$=UIStartDlg(cuidll$,INFODIALOG,"FInfoDlgProc",0,"") CreateIniKeyValue "WIN.INI", "fonts", "PL Dialog","pldialog.fon", cmoOverwrite IF ( GetListItem(inst_ST$,1)="ON") OR (GetListItem(inst_HLP$,1)="ON") THEN CreateProgmanGroup "SynTalk - wersja DEMO", "", cmoNone ShowProgmanGroup "SynTalk - wersja DEMO", 1, cmoNone ENDIF IF GetListItem(inst_ST$,1)="ON" THEN CreateProgmanItem "SynTalk - wersja DEMO", "SynTalk", TworzSciezke( sciezka$, "syntalk.exe"), "", cmoOverwrite CreateProgmanItem "SynTalk - wersja DEMO", "Przeczytaj to", TworzSciezke( sciezka$, "czytaj.txt"), "", cmoOverwrite CreateProgmanItem "SynTalk - wersja DEMO", "Konkurs!!!", TworzSciezke( sciezka$, "konkurs.txt"), "", cmoOverwrite END IF IF GetListItem(inst_HLP$,1)="ON" THEN CreateProgmanItem "SynTalk - wersja DEMO", "Pomoc dla SynTalka", TworzSciezke( sciezka$, "syntalk.hlp"), "", cmoOverwrite END IF IF GetListItem(inst_ST$,1)="ON" THEN CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Global", "WorkDir", sciezka$ , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Global", "InitLogo", "1" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Dictionary", "ExpDict", TworzSciezke(sciezka$, "USER.EXP"), cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Dictionary", "UseExpDict", "Yes", cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Conversions", "ConvertNumber", "Yes" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Conversions", "ConvertDate", "Yes" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Conversions", "ConvertCaps", "Yes" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Conversions", "ConvertCapsLimit", "5" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Sound", "Tunning", "0" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Sound", "PauseInterSentence", "50" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Sound", "PausePunctation", "30" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Sound", "PauseInterWord", "7" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "Sound", "PauseDoubleLetter", "3" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "HotKeys", "ReadOrPause", "CS65" , cmoOverwrite CreateIniKeyValue TworzSciezke(WinPath$, "SYNTALK.INI"), "HotKeys", "Break", "CS83" , cmoOverwrite END IF WORDINSTALL: EXCELINSTALL: FINISH: RestoreCursor cursor% UIPop 1 sz$=UIStartDlg(cuidll$,KONIEC_OK,"FFinishDlgProc",0,"") GOTO WYJSCIE DYSKPELEN: SetSymbolValue "BEEP", STR$(MB_ICONQUESTION) sz$=UIStartDlg(cuidll$,BRAKMIEJSCA,"FButtonsDlgProc",0,"") SELECT CASE sz$ CASE "TAK" UIPop 1 IgnorujPelen% = 1 RETURN CASE "NIE" UIPop 1 IgnorujPelen% = 0 RETURN CASE ELSE GOTO DYSKPELEN END SELECT POBIERZSCIEZKE: SetSymbolValue sciezka_inst$, sciezka$ sciezkazap$=GetSymbolValue(sciezka_inst$) P1: sz$=UIStartDlg(cuidll$,POBIERZ_SCIEZKE,"FPathDlgProc",0,"") SELECT CASE sz$ CASE "KONTYNUACJA" sciezka$=GetSymbolValue(sciezka_inst$) IF IsDirWritable (sciezka$) THEN UIPopAll IF LEN (sciezka$)>MAXPATHLEN THEN SetSymbolValue sciezka_inst$, MID$(sciezka$,1,MAXPATHLEN)+"..." END IF ObliczPotrzebyWszystkie ObliczZajetoscDysku RETURN ELSE SetSymbolValue "BEEP", STR$(MB_ICONEXCLAMATION) sz$=UIStartDlg (cuidll$, ZLA_SCIEZKA, "FButtonsDlgProc",0,"") ENDIF UIPop 1 GOTO P1 CASE "ZAKONCZENIE", "CANCEL" sciezka$=sciezkazap$ IF LEN (sciezka$)>MAXPATHLEN THEN SetSymbolValue sciezka_inst$, MID$(sciezka$,1,MAXPATHLEN)+"..." END IF UIPopAll RETURN CASE ELSE GOTO P1 END SELECT GOTO WYJSCIE PYTANIE_WYJSCIA: SetSymbolValue "BEEP", STR$(MB_ICONQUESTION) sz$ = UIStartDlg(cuidll$, POTWIERDZENIE_WYJSCIA, "FButtonsDlgProc", 0, "") IF sz$ = "TAK" THEN UIPopAll GOTO BREAKINSTALL ELSEIF sz$="REACTIVATE" THEN GOTO PYTANIE_WYJSCIA ELSE UIPop 1 END IF RETURN ZLAWERSJA: SetSymbolValue "BEEP", STR$(MB_ICONEXCLAMATION) sz$=UIStartDlg(cuidll$,ZLA_WERSJA_WINDOWS,"FButtonsDlgProc", 0, "") GOTO WYJSCIE ERR: BREAKINSTALL: UIPopAll SetSymbolValue "BEEP", STR$(MB_ICONHAND) sz$=UIStartDlg(cuidll$, INFOWYJSCIE, "FButtonsDlgProc", 0, "") WYJSCIE: QUIT: UIPopAll Terminate END BLAD: UIPopAll SetSymbolValue "BEEP", STR$(MB_ICONHAND) sz$=UIStartDlg(cuidll$,BLADINSTALACJI,"FButtonsDlgProc",0,"") Terminate END SUB DodajDoListy (KtorePliki%) STATIC SELECT CASE KtorePliki% CASE ST IF GetListItem (inst_st$,1)="ON" THEN AddSectionFilesToCopyList "SynTalk",zrodlo$,sciezka$ END IF CASE HLP IF GetListItem (inst_hlp$,1)="ON" THEN AddSectionFilesToCopyList "Help",zrodlo$,sciezka$ END IF CASE SDK CASE MACWORD CASE MACEXCEL END SELECT END SUB SUB ObliczPotrzebyOpcji (KtorePliki%) STATIC KursorZap%=ShowWaitCursor() ClearCopyList DodajDoListy KtorePliki% Extra%=0 SELECT CASE KtorePliki% CASE ST ZapotrzebowanieListy$ = ZapotrzebowanieST$ IF GetListItem(inst_st$,1)="ON" THEN Nr%=ASC(UCASE$(GetWindowsDrive))-ASC("A")+1 ReplaceListItem ZapotrzebowanieExtra$, Nr%, "7792" Extra%=1 END IF CASE HLP ZapotrzebowanieListy$ = ZapotrzebowanieHLP$ CASE MACWORD ZapotrzebowanieListy$ = ZapotrzebowanieMACRW$ CASE MACEXCEL ZapotrzebowanieListy$ = ZapotrzebowanieMACRE$ CASE SDK ZapotrzebowanieListy$ = ZapotrzebowanieSDK$ END SELECT Braki&=GetCopyListCost(ZapotrzebowanieExtra$, ZapotrzebowanieListy$,"") Potrzeby&=0 FOR i%=1 TO 26 STEP 1 Potrzeby& = Potrzeby& + VAL(GetListItem(ZapotrzebowanieListy$,i%)) NEXT i% SELECT CASE KtorePliki% CASE ST ReplaceListItem inst_st$,2,STR$(Potrzeby&/1024)+" kB" CASE HLP ReplaceListItem inst_hlp$,2,STR$(Potrzeby&/1024)+" kB" CASE MACWORD ReplaceListItem inst_macword$,2,STR$(Potrzeby&/1024)+" kB" CASE MACEXCEL ReplaceListItem inst_macexcel$,2,STR$(Potrzeby&/1024)+" kB" CASE SDK ReplaceListItem inst_sdk$,2,STR$(Potrzeby&/1024)+" kB" END SELECT IF Extra% THEN ReplaceListItem ZapotrzebowanieExtra$, Nr%, "0" END IF RestoreCursor KursorZap% ZapotrzebowanieListy="" END SUB SUB ObliczPotrzebyWszystkie STATIC KursorZap%=ShowWaitCursor ObliczPotrzebyOpcji ST ObliczPotrzebyOpcji HLP RestoreCursor KursorZap% END SUB SUB ObliczZajetoscDysku STATIC PelenDysk%=0 Drajw$=MID$(Sciezka$,1,1) NumerDrajwu%=ASC(UCASE$(Drajw$)) - ASC("A") + 1 c1& = VAL(GetListItem(ZapotrzebowanieST$,NumerDrajwu%))+VAL(GetListItem(ZapotrzebowanieHLP$,NumerDrajwu%)) Calosc& = c1& WolneMiejsce& = GetFreeSpaceForDrive(Drajw$) IF Calosc&>=WolneMiejsce& THEN PelenDysk%=1 END IF ReplaceListItem drive_status$, 1, Drajw$ + ":" ReplaceListItem drive_status$, 2, STR$(WolneMiejsce&/1024) + " kB" ReplaceListItem drive_status$, 3, STR$(Calosc&/1024) + " kB" IF GetWindowsDrive=Drajw$ THEN ReplaceListItem drive_status$, 4, "" ReplaceListItem drive_status$, 5, "" ReplaceListItem drive_status$, 6, "" ELSE NumerDrajwu%=ASC(UCASE$(GetWindowsDrive)) - ASC("A") + 1 c1& = VAL(GetListItem(ZapotrzebowanieST$,NumerDrajwu%))+VAL(GetListItem(ZapotrzebowanieHLP$,NumerDrajwu%)) Calosc&=c1& IF Calosc&=0 THEN ReplaceListItem drive_status$, 4, "" ReplaceListItem drive_status$, 5, "" ReplaceListItem drive_status$, 6, "" ELSE WolneMiejsce&=GetFreeSpaceForDrive(GetWindowsDrive) ReplaceListItem drive_status$, 4, GetWindowsDrive + ":" ReplaceListItem drive_status$, 5, STR$ (WolneMiejsce&/1024) + " kB" ReplaceListItem drive_status$, 6, STR$ (Calosc&/1024) + " kB" IF Calosc&>=WolneMiejsce& THEN PelenDysk%=1 END IF END IF END IF END SUB FUNCTION GetWindowsDrive STATIC AS STRING p$=GetWindowsDir GetWindowsDrive=MID$(p$,1,1) END FUNCTION FUNCTION TworzSciezke (Glowny$, Podkat$) STATIC AS STRING IF Glowny$="" THEN TworzSciezke=Podkat$ ELSEIF Podkat$="" THEN TworzSciezke=Glowny$ ELSEIF MID$(Glowny$, LEN(Glowny$),1)= "\" THEN TworzSciezke=Glowny$+Podkat$ ELSE TworzSciezke=Glowny+"\"+Podkat END IF END FUNCTION SUB AddPathToAutoexec (AutoPath$, Path$) STATIC OPEN AutoPath$+"AUTOEXEC.BAT" FOR INPUT AS #1 OPEN AutoPath$+"AUTOEXEC.BAK" FOR OUTPUT AS #2 WHILE NOT EOF(1) LINE INPUT#1, s$ PRINT#2, s$ WEND CLOSE #1 CLOSE #2 OPEN AutoPath$+"AUTOEXEC.BAK" FOR INPUT AS #1 OPEN AutoPath$+"AUTOEXEC.BAT" FOR OUTPUT AS #2 PathExists%=0 WHILE NOT EOF(1) LINE INPUT#1, s$ IF PathExists%<>0 THEN PRINT#2, s$ ELSE s1$=s$ ClearWhiteChars s$ GetNextWordUC s$,w$ IF w$="PATH" THEN PathExists%=1 END IF IF w$="SET" THEN ClearWhiteChars s$ GetNextWordUC s$,w$ IF w$="PATH" THEN PathExists%=1 END IF END IF PRINT#2, s1$ IF PathExists% THEN PRINT#2, "PATH=%PATH%;"+Path$ END IF END IF WEND IF (PathExists%=0) THEN PRINT#2, "PATH="+Path$ END IF CLOSE #1 CLOSE #2 END SUB SUB ClearWhiteChars(s$) STATIC IF s$<>"" THEN x%=1 WHILE (MID$(s$,x%,1)=" " OR MID$(s$,x%,1)=CHR$(9) OR MID$(s$,x%,1)=CHR$(0)) x%=x%+1 WEND s$=MID$(s$,x%,LEN(s$)-x%+1) END IF END SUB SUB ClearWhiteCharsAndEqualSign(s$) STATIC IF s$<>"" THEN x%=1 WHILE (MID$(s$,x%,1)=" " OR MID$(s$,x%,1)=CHR$(9) OR MID$(s$,x%,1)=CHR$(0) OR MID$(s$,x%,1)=CHR$(61)) x%=x%+1 WEND s$=MID$(s$,x%,LEN(s$)-x%+1) END IF END SUB SUB GetNextWordUC(s$,w$) STATIC IF s$<>"" THEN break%=0 x%=1 w$="" WHILE break%<>1 SELECT CASE ASC(MID$(s$,x%,1)) CASE 48 TO 57, 65 TO 90, 97 TO 122 w$=w$+UCASE$(MID$(s$,x%,1)) x%=x%+1 IF x%>LEN(s$) THEN break%=1 END IF CASE ELSE break%=1 END SELECT WEND s$=MID$(s$,x%,LEN(s$)-x%+1) ELSE w$="" END IF END SUB SUB GetNextPathUC(s$,w$) STATIC IF s$<>"" THEN break%=0 x%=1 w$="" WHILE break%<>1 SELECT CASE ASC(MID$(s$,x%,1)) CASE 32,33,35 TO 41,45,46,48 TO 58, 64 TO 90, 92, 94 TO 255 w$=w$+UCASE$(MID$(s$,x%,1)) x%=x%+1 IF x%>LEN(s$) THEN break%=1 END IF CASE ELSE break%=1 END SELECT WEND s$=MID$(s$,x%,LEN(s$)-x%+1) IF MID$(s$,1,1)=";" THEN s$=MID$(s$,2,LEN(s$)-1) END IF ELSE w$="" END IF END SUB FUNCTION IsPathInAutoexec (AutoPath$, Path$) STATIC AS INTEGER IF MID$(Path$,Len(Path$),1)="\" THEN Path$=MID$(Path$,1,LEN(Path$)-1) END IF i%=0 OPEN AutoPath$+"AUTOEXEC.BAT" FOR INPUT AS #1 WHILE NOT EOF(1) LINE INPUT#1, s$ ClearWhiteChars s$ GetNextWordUC s$,w$ IF w$="PATH" THEN i%=SearchForPathCI(Path$,s$) END IF IF i%>0 THEN EXIT WHILE END IF IF w$="SET" THEN ClearWhiteChars s$ GetNextWordUC s$,w$ IF w$="PATH" THEN i%=SearchForPathCI(Path$,s$) END IF IF i%>0 THEN EXIT WHILE END IF END IF WEND CLOSE #1 IsPathInAutoexec=i% END FUNCTION FUNCTION SearchForPathCI (obj$, stg$) STATIC AS INTEGER found% = 0 ol% = LEN(obj$) sl% = LEN(stg$) n% = sl% - ol% + 1 FOR i% = 1 TO n% IF UCASE$(MID$(stg$, i%, ol%)) = UCASE$(obj$) THEN found% = 1 EXIT FOR END IF NEXT i% IF ((found%<>0) AND (i%<n%)) THEN IF MID$(stg$, i%+ol%, 1)<>";" THEN IF MID$(stg$, i%+ol%, 1)="\" THEN IF (i%+1<n%) THEN IF MID$(stg$, i%+ol%+1, 1)<>";" THEN found%=0 END IF END IF ELSE found%=0 END IF END IF END IF SearchForPathCI = found% END FUNCTION SUB ExplodeVersion(v$,v1%,v2%,v3%,v4%) STATIC GetNextWordUC v$,s$ v1%=VAL(s$) v$=MID$(v$,2,LEN(v$)-1) GetNextWordUC v$,s$ v2%=VAL(s$) v$=MID$(v$,2,LEN(v$)-1) GetNextWordUC v$,s$ v3%=VAL(s$) v$=MID$(v$,2,LEN(v$)-1) GetNextWordUC v$,s$ v4%=VAL(s$) END SUB FUNCTION CompareVersion(ver1$,ver2$) STATIC AS INTEGER ExplodeVersion ver1, v1%, v2%, v3%, v4% ExplodeVersion ver2, x1%, x2%, x3%, x4% StillComp%=1 cw%=0 IF v1%>x1% THEN cw%=1 StillComp%=0 ELSEIF v1%=x1% THEN StillComp%=1 ELSEIF v1%<x1% THEN cw%=-1 StillComp%=0 END IF IF StillComp THEN IF v2%>x2% THEN cw%=1 StillComp%=0 ELSEIF v2%=x2% THEN StillComp%=1 ELSEIF v2%<x2% THEN cw%=-1 StillComp%=0 END IF END IF IF StillComp THEN IF v3%>x3% THEN cw%=1 StillComp%=0 ELSEIF v3%=x3% THEN StillComp%=1 ELSEIF v3%<x3% THEN cw%=-1 StillComp%=0 END IF END IF IF StillComp THEN IF v4%>x4% THEN cw%=1 StillComp%=0 ELSEIF v4%=x4% THEN StillComp%=1 ELSEIF v4%<x4% THEN cw%=-1 StillComp%=0 END IF END IF CompareVersion=cw% END FUNCTION SUB SearchForFile (ap$,fn$,dir$,ver$,found%) STATIC IF (DoesFileExist (ap$+"AUTOEXEC.BAT",femExists)) THEN OPEN ap$+"AUTOEXEC.BAT" FOR INPUT AS #1 test%=0 found%=0 WHILE NOT EOF(1) LINE INPUT#1, s$ ClearWhiteChars s$ GetNextWordUC s$,w$ IF w$="PATH" THEN ClearWhiteCharsAndEqualSign s$ test%=1 ELSEIF w$="SET" THEN ClearWhiteChars s$ GetNextWordUC s$,w$ IF w$="PATH" THEN ClearWhiteCharsAndEqualSign s$ test%=1 END IF END IF IF test%=1 THEN WHILE s$<>"" GetNextPathUC s$,w$ IF DoesFileExist (TworzSciezke(w$,fn$),femExists) THEN dir$=w$ ver$=GetVersionOfFile(TworzSciezke(w$,fn$)) found%=1 CLOSE #1 EXIT SUB END IF WEND test%=0 END IF WEND CLOSE #1 ELSE dir$ = "" ver$ = "" found%=0 ENDIF END SUB SUB WordInstallErr( Msg$ ) STATIC RestoreCursor cursor% UIPop 1 SetSymbolValue "ERRMSG", Msg$ sz$=UIStartDlg(cuidll$, BLAD_WORD_INSTALL,"FMacroInstallErrDlgProc",0,"") UIPop 1 cursor%=ShowWaitCursor SetSymbolValue "Info", "Konfiguruje SynTalka w systemie..." sz$=UIStartDlg(cuidll$,INFODIALOG,"FInfoDlgProc",0,"") END SUB SUB ExcelInstallErr( Msg$ ) STATIC RestoreCursor cursor% UIPop 1 SetSymbolValue "ERRMSG", Msg$ sz$=UIStartDlg(cuidll$, BLAD_EXCEL_INSTALL,"FMacroInstallErrDlgProc",0,"") UIPop 1 cursor%=ShowWaitCursor SetSymbolValue "Info", "Konfiguruje SynTalka w systemie..." sz$=UIStartDlg(cuidll$,INFODIALOG,"FInfoDlgProc",0,"") END SUB FUNCTION WordInstallMacros( D& ) STATIC AS INTEGER IF (Dx(D&,"[if AppMinimize() then AppRestore ]") = 0) THEN WordInstallMacros = 0 ELSEIF (Dx(D&,"[FileOpen .Name="+CHR$(34)+TworzSciezke(sciezka$,"syntalk.dot")+CHR$(34)+", .ReadOnly=1 ]") = 0) THEN WordInstallMacros = 0 ELSEIF (Dx(D&,"[MacroCopy "+CHR$(34)+TworzSciezke(sciezka$,"syntalk.dot")+":Czytaj"+CHR$(34)+","+CHR$(34)+"Global:Czytaj"+CHR$(34)+" ]") = 0) THEN WordInstallMacros = 0 ELSEIF (Dx(D&,"[MacroCopy "+CHR$(34)+TworzSciezke(sciezka$,"syntalk.dot")+":Przerwij"+CHR$(34)+","+CHR$(34)+"Global:Przerwij"+CHR$(34)+" ]") = 0) THEN WordInstallMacros = 0 ELSEIF (Dx(D&,"[MacroCopy "+CHR$(34)+TworzSciezke(sciezka$,"syntalk.dot")+":Kontynuuj"+CHR$(34)+","+CHR$(34)+"Global:Kontynuuj"+CHR$(34)+" ]") = 0) THEN WordInstallMacros = 0 ELSEIF (Dx(D&,"[MacroCopy "+CHR$(34)+TworzSciezke(sciezka$,"syntalk.dot")+":Zatrzymaj"+CHR$(34)+","+CHR$(34)+"Global:Zatrzymaj"+CHR$(34)+" ]") = 0) THEN WordInstallMacros = 0 ELSE WordInstallMacros = 1 ENDIF END FUNCTION FUNCTION WordInstallMenus( D& ) STATIC AS INTEGER IF (Dx(D&,"[ToolsCustomizeMenuBar .Context = 0, .Position = 7, .MenuType = 0, .MenuText = "+CHR$(34)+"&SynTalk"+CHR$(34)+", .Add ]") = 0) THEN WordInstallMenus = 0 ELSEIF Dx(D&,"[ToolsCustomizeMenus.MenuType=0,.Position=-1,.Category=2,.Name="+CHR$(34)+"Czytaj"+CHR$(34)+",.Menu="+CHR$(34)+"&SynTalk"+CHR$(34)+",.AddBelow="+CHR$(34)+CHR$(34)+",.MenuText="+CHR$(34)+"&Czytaj"+CHR$(34)+",.Add,.Context=0]")=0 THEN WordInstallMenus = 0 ELSEIF Dx(D&,"[ToolsCustomizeMenus.MenuType=0,.Position=-1,.Category=2,.Name="+CHR$(34)+"Zatrzymaj"+CHR$(34)+",.Menu="+CHR$(34)+"&SynTalk"+CHR$(34)+",.AddBelow="+CHR$(34)+CHR$(34)+",.MenuText="+CHR$(34)+"&Zatrzymaj"+CHR$(34)+",.Add,.Context=0]")=0 THEN WordInstallMenus = 0 ELSEIF Dx(D&,"[ToolsCustomizeMenus.MenuType=0,.Position=-1,.Category=2,.Name="+CHR$(34)+"Kontynuuj"+CHR$(34)+",.Menu="+CHR$(34)+"&SynTalk"+CHR$(34)+",.AddBelow="+CHR$(34)+CHR$(34)+",.MenuText="+CHR$(34)+"&Kontynuuj"+CHR$(34)+",.Add,.Context=0]")=0 THEN WordInstallMenus = 0 ELSEIF Dx(D&,"[ToolsCustomizeMenus.MenuType=0,.Position=-1,.Category=2,.Name="+CHR$(34)+"Przerwij"+CHR$(34)+",.Menu="+CHR$(34)+"&SynTalk"+CHR$(34)+",.AddBelow="+CHR$(34)+CHR$(34)+",.MenuText="+CHR$(34)+"&Przerwij"+CHR$(34)+",.Add,.Context=0]")=0 THEN WordInstallMenus = 0 ELSE WordInstallMenus = 1 ENDIF END FUNCTION