function BOOL CheckListenPorts(szPorts, svResult, bLog)
number hPlikBat, hFileLog;
BOOL bResult;
LIST lsPort,lsNetStat;
string szParam,svLine, szPort;
int i,j,nWait;
begin
if bLog then WriteLog(0,"* Sprawdzenie czy wybrane porty nie są w użyciu"); endif;
bResult = TRUE;
svResult = "";
lsPort = ListCreate(STRINGLIST);
lsNetStat = ListCreate(STRINGLIST);
StrGetTokens(lsPort,szPorts,",");
OpenFileMode (FILE_MODE_APPEND);
if (CreateFile (hPlikBat, TARGETDIR, "netstat.bat") < 0) then
bResult = FALSE;
else
szParam = WINSYSDIR ^ "netstat.exe -a -n -p TCP >\""+ TARGETDIR ^ "netstat.log\"";
WriteLine(hPlikBat,szParam);
CloseFile(hPlikBat);
endif;
//Execute
if LaunchApplication(TARGETDIR ^ "netstat.bat", "", TARGETDIR, SW_HIDE, 0, LAAW_OPTION_USE_SHELLEXECUTE | LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS)=ISERR_SUCCESS then
nWait=0;
while !Is(FILE_EXISTS, TARGETDIR ^ "netstat.log")&&(nWait<5)
Sleep(500);
nWait = nWait + 1;
endwhile;
if Is(FILE_EXISTS, TARGETDIR ^ "netstat.log") then
OpenFileMode (FILE_MODE_NORMAL);
OpenFile (hFileLog, TARGETDIR, "netstat.log");
while (GetLine (hFileLog, svLine) = 0)
StrSub(svLine,svLine,0, 32);
ListAddString(lsNetStat,svLine,AFTER);
endwhile;
CloseFile (hFileLog);
//Sprawdzenie Portow
if (ListCount(lsPort)>0) && (ListCount(lsNetStat)>0) then
ListSetIndex(lsPort,LISTFIRST);
for i=0 to ListCount(lsPort)-1
ListCurrentString(lsPort,szPort);
ListSetIndex(lsNetStat,LISTFIRST);
for j=0 to ListCount(lsNetStat)-1
ListCurrentString(lsNetStat, svLine);
if StrFind(svLine,":"+szPort)>0 then
if StrLength(svResult)>0 then
svResult = svResult + "," + szPort;
else
svResult = szPort;
endif;
if bLog then WriteLog(1," - Port:"+szPort+" jest w użyciu"); endif;
endif;
ListSetIndex(lsNetStat,LISTNEXT);
endfor;
ListSetIndex(lsPort, LISTNEXT);
endfor;
endif;
else
if bLog then WriteLog(1," - plik nie został utworzony \""+TARGETDIR ^ "netstat.log"+"\""); endif;
bResult = FALSE;
endif;
endif;
ListDestroy(lsPort);
ListDestroy(lsNetStat);
return bResult;
end;
Programowanie c++/c#/delphi/javas/php/installscript/nativescript
Przykłady - przydatne funkcje
środa, 28 października 2009
Funckja sprawdzająca czy w systemie podane porty nie są używane
Funkcja wykorzystuje systemowy program netstat, porty do sprawdzenia podajemy w zmiennej szPorts rozdzielając przecinkiem
Etykiety:
InstallShield - funkcje
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz