выдает ошибку оО: identifier redeclared: 'System'
| Код | unit uAU;
interface
function UpdateProgram(ExeName,Name,Path:string):boolean; function IPAddrToName(IPAddr : String): String; function GetLocalIP: String; procedure CreateCMD(Name,Path,exeName:string);
implementation
uses System, winsock, SysUtils, Types ;
const CMDName :WideString = 'ProgramsAU.cmd';
function CreateProcessWithLogonW(UserName, Domain, Password: WideString; LogonFlag: dword; AppName, CmdLine: WideString; CrtFlag: dword; Env: pointer; CurentDir: WideString; StartInfo:pointer; ProcInfo:pointer):BOOL; stdcall; external 'advapi32.dll';
function GetLocalIP: String; const WSVer = $202; var wsaData: TWSAData; P: PHostEnt; Buf: array [0..127] of Char; begin Result := ''; if WSAStartup(WSVer, wsaData) = 0 then begin if GetHostName(@Buf, 128) = 0 then begin P := GetHostByName(@Buf); if P <> nil then result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); end; WSACleanup; end; end;
function IPAddrToName(IPAddr : String): String; var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; s:string; i:integer; begin result:=''; WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr)); HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt<>nil then begin s:=StrPas(Hostent^.h_name); i:=1; while (i<length(s)) and (s[i]<>'.') do begin result:=result+s[i]; inc(i); end; end; end;
procedure CreateCMD(Name,Path,exeName:string); var f:file of text; begin AssignFile(f,CMDName); Rewrite(f); Writeln(f,'color A'); Writeln(f,'echo '+Name+' AutoUpdate, wait...'); Writeln(f,'copy \\mycomp'+path+exeName+'.exe '+exeName+'.exe'); Writeln(f,'Deletefile '+CMDName); CloseFile(f); end;
function UpdateProgram(ExeName,Name,Path:string):boolean; const aName :WideString = 'name'; aPass :WideString = 'pas'; var aSrv:string; si: TSTARTUPINFO; pi: TProcessInformation; begin result:=false; CreateCMD(Name,Path,exeName);
aSrv:=IPAddrToName(GetLocalIP); ZeroMemory(@si, sizeof(si)); si.cb := sizeof(si);
if CreateProcessWithLogonW(aName,aSrv,aPass,1,CMDName,CMDName,0, nil,'',@si, @pi) then result:=true; end;
end.
|
|