Guest - Andreia - Postado Outubro 5, 2005 Denunciar Share Postado Outubro 5, 2005 Boa tarde Gostaria de saber se algum já usou ou sabe de a dll netapi32.dll funciona no windows 98 e 95, eu fiz no XP e funcionou direitinho..mas no 98 não...se algum puder me ajudar agradeço muitoObrigadaAndreia Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Outubro 5, 2005 Denunciar Share Postado Outubro 5, 2005 A dll netapi32.dll infelizmente não vai funcionar no Windows 9x pois é específica para plataformas NT .NETNo windows 9x é usado a dll svrapi.dll no lugar da netapi32.dll.Só que com várias diferenças...O que você pode fazer é o seguinte...O mais importante de tudo é não linkar nenhuma função que chama a dll netapi32.dll direto na aplicação ou seja, linkar as funções que você está usando em tempo de execução...Para isto você vai precisar detectar o Sistema operacional que está rodando, exemplo, se a plataforma é Windows NT (NT, 2000, XP, 2003) ou 9x (95, 98, ME)..Ai é só chamar a função em tempo de execução ao invés de linkar direto na aplicaçãoexemplo...Se o sistema for Windows 9x você carrega a dll 'svrapi.dll' e se for Windows NT ai você carrega a dll 'netapi32.dll'isso em tempo de execução, se você linkar alguma função dessas dll direto na aplicação, vai dar runtime error na hora que você abrir o programa, que é o que eu acho q está acontecendo não é? tipo..The nomedoprograma file is linked to missing export NETAPI32.DLL bla bla blaSe for algum componente que estiver linkando estas funções você terá que ter o source para poder modificar...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Andreia - Postado Outubro 5, 2005 Denunciar Share Postado Outubro 5, 2005 Eu estou usando essa dll em uma funcao que busca a Hora do Servidor, e é bem, esse erro que você falou que esta acontecendo... NET_API_STATUS = DWORD;function NetRemoteTOD(UncServerName: LPCWSTR; BufferPtr: PBYTE): NET_API_STATUS; stdcall; external 'netapi32.dll' Name 'NetRemoteTOD';function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; external 'netapi32.dll' Name 'NetApiBufferFree';dwRetValue := NetRemoteTOD(@ServerName, PBYTE(@TimeOfDayInfo));NetApiBufferFree(TimeOfDayInfo);Muito Obrigada...vou tentar fazer 2 funções...Obrigada pela atenção...você me ajudou MuitoAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Andreia - Postado Outubro 5, 2005 Denunciar Share Postado Outubro 5, 2005 não querendo abusar Churc, mas sera que não daria para fazer uma outra dessa funcao adpatando para essa outra DLL que você comentou ?function GetInfo(ComputadorRemoto: string): TStrings;const NERR_Success = 0;var TimeOfDayInfo: PTimeOfDayInfo; ServerName: array[0..255] of WideChar; dwRetValue, dwDays, dwSecs: DWORD; GMTTime: TSystemTime; CurTime, UpTime: TDateTime; ts: TTimeStamp; stString: TStrings;begin StringToWideChar(trim(ComputadorRemoto), @ServerName, SizeOf(ServerName)); dwRetValue := NetRemoteTOD(@ServerName, PBYTE(@TimeOfDayInfo)); if dwRetValue <> NERR_Success then raise Exception.Create(SysErrorMessage(dwRetValue)); with TimeOfDayInfo^ do begin FillChar(GMTTime, SizeOf(GMTTime), 0); with GMTTime do begin wYear := tod_year; wMonth := tod_month; wDayOfWeek := tod_weekday; wDay := tod_day; wHour := tod_hours; wMinute := tod_mins; wSecond := tod_secs; wMilliseconds := tod_hunds; end; CurTime := SystemTimeToDateTime(GMTTime); if tod_timezone <> -1 then CurTime := CurTime + ((1 / 24 / 60) * -tod_timezone); dwDays := 0; dwSecs := tod_msecs div 1000; if dwSecs >= SecsPerDay then begin dwDays := dwSecs div SecsPerDay; dwSecs := dwSecs mod SecsPerDay; end; ts.Time := dwSecs * 1000; ts.Date := DateDelta; UpTime := TimeStampToDateTime(ts); stString := TStringList.Create; with stString do begin Add(StringOfChar(' ', 40) + '*** ' + ComputadorRemoto + ' ***'); Add(Format(SUpTime, [dwDays, FormatDateTime('h', UpTime), FormatDateTime('n', UpTime), FormatDateTime('s', UpTime)])); Add(Format(SCurrentDate, [FormatDateTime(ShortDateFormat, CurTime)])); Add(Format(SCurrentTime, [FormatDateTime(LongTimeFormat, CurTime)])); data_maq:=strtodatetime(FormatDateTime(ShortDateFormat, CurTime)); hora:=strtodatetime(FormatDateTime(LongTimeFormat, CurTime)); EndUpdate; end; end; NetApiBufferFree(TimeOfDayInfo); Result := stString;end;Muito Obrigada Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Outubro 5, 2005 Denunciar Share Postado Outubro 5, 2005 (editado) olá andréiaolha infelizmente esta função que você está usando NetRemoteTOD não é suportada na dll 'svrapi.dll'Esta função é valida somente na dll 'netapi32.dll', que foi implementada a partir do Windows NT.As funções que são suportadas pela 'svrapi.dll' sãoNetAccessAdd NetAccessCheck NetAccessDel NetAccessEnum NetAccessGetInfo NetAccessGetUserPerms NetAccessSetInfo NetConnectionEnum NetFileClose2 NetFileEnum NetSecurityGetInfo NetServerGetInfo NetServerSetInfo NetSessionDel NetSessionEnum NetSessionGetInfo NetShareAdd NetShareDel NetShareEnum NetShareGetInfo NetShareSetInfoBom, vou dar uma pesquisada e ver se tem algo parecido para versões Win9x mas acho pouco provável, pois foi somente a partir do Windows NT que foi criado o conceito "Server" e essa função é para rede.qualquer coisa eu posto aqui...abraçosops acho q da sim pelo NetServerGetInfo qualquer coisa eu posto aquiabraços Editado Outubro 5, 2005 por Churc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Outubro 5, 2005 Denunciar Share Postado Outubro 5, 2005 ola andreiaolha pelo que vi não há como mesmo.A dll 'svrapi.dll' que é a antecessora da 'netapi32.dll' não tem nenhuma função que pegue estes tipos de informações do servidor, a NetGetServerInfo apenas pega informações como versão do Sistema e tal não pega data/hora.fazer o que não é?, paciência... o que você pode fazer agora, é usar isso somente quando a plataforma winnt+se isso servir e precisar de ajuda...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Andreia -
Boa tarde
Gostaria de saber se algum já usou ou sabe de a dll netapi32.dll funciona no windows 98 e 95, eu fiz no XP e funcionou direitinho..mas no 98 não...
se algum puder me ajudar agradeço muito
Obrigada
Andreia
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.