var  VI: TOSVersionInfo;begin
  VI.dwOSVersionInfoSize := SizeOf(VI);
  GetVersionEx(VI);
  with  VI do
  begin
      case dwPlatformID of
     VER_PLATFORM_WIN32S: //do your prmg ;
     VER_PLATFORM_WIN32_WINDOWS //do your prmg :;
     VER_PLATFORM_WIN32_NT //do your prmg :;
    end;
  end;
end;

解决方案 »

  1.   

    var  VI: TOSVersionInfo;begin
      VI.dwOSVersionInfoSize := SizeOf(VI);
      GetVersionEx(VI);
      with  VI do
      begin
          case dwPlatformID of
         VER_PLATFORM_WIN32S: 
         VER_PLATFORM_WIN32_WINDOWS //do your prmg :;
         VER_PLATFORM_WIN32_NT //do your prmg :;
        end;
      end;
    end; 
      

  2.   

    其实我是想知道具体如何调用:...function NetShareAdd(ServerName: PChar; ShareLevel: SmallInt; Buffer: Pointer; Size: Word): Integer; StdCall;
    function NetShareDel(ServerName: PChar; NetName: PChar; Reserved: Word): Integer; StdCall;implementation...function NetShareAdd; external 'SVRAPI.DLL';
    function NetShareDel; external 'SVRAPI.DLL';
      //win98下是用这SVRAPI.DLL
      //win2000下用NETAPI32.DLL
    function ShareResource(...): Integer;
    var
      ...
    begin
      ...
      Result := NetShareAdd(...));
    end;function DeleteShare(...): Integer;
    var
      ...
    begin
      ...
      Result := NetShareDel(...));
    end;
    然后,应该这样修改,使能适合98或2000的操作系统而自动调用初次使用dll,还不清楚调用的方法,谢谢了!
      

  3.   

    是:应该怎样修改,使能适合98或2000的操作系统而自动调用???初次使用dll,还不清楚调用的方法,谢谢了! 
     
      

  4.   

    你现在用的是静态连接,不可以在程序启动的时候动态指定。如果你动态装载DLL就可以。
    查查MSDN里的
    LoadLibrary、GetProcAddress、FreeLibrary三个函数。
      

  5.   

    提供资料:GetVersion取到的版本信息是一个整体,要取得某个主版本或者次版本很麻烦,用一个记录就可以简单解决了:
    procedure TForm1.Button1Click(Sender: TObject);
    Type
      TVersion = packed record
         WinVer,
         WinRev,
         DosRev,
         DosVer: byte;
      end;
    var
      V:Dword;
    begin
      V:=GetVersion;
      Label1.Caption :=Format('Windows Version:%d.%d,Dos Version:%d.%d',[TVersion(V).WinVer,TVersion(V).WinRev,Tversion(V).DosVer,TVersion(V).DosRev]);
    end;其实在Delphi5中有一些系统常量可以使用(在sysutils单元):
    Win32BuildNumber         //Build版本号
    Win32Platform            //系统平台,2=Win32系统
    Win32MajorVersion        //主版本号
    Win32MinorVersion        //次版本号
    Win32CSDVersion          //其他版本信息,例如"Service Pack 2"
    动态调用Dll:typedef DWORD (WINAPI Fun) (DWORD,DWORD);
      HINSTANCE hkDll=LoadLibrary("KERNEL32.DLL");
      Fun*RegisterServiceProcess=(Fun*)::GetProcAddress(hkDll,"RegisterServiceProcess");
      (*RegisterServiceProcess)(NULL,1);
      FreeLibrary(hkDll);
    ===============
    var
      H: HWnd;
      p: procedure(Handle: THandle; Path: PChar); stdcall;
    begin
            H := LoadLibrary(PChar('shdocvw.dll'));
            if H <> 0 then
              begin
                p := GetProcAddress(H, PChar('DoOrganizeFavDlg'));
                if Assigned(p) then p(Application.Handle, PChar(favpath));
              end;
          FreeLibrary(h); 
    end;
      

  6.   

    对于调用系统中的dll,程序退出前不用free掉吧?
      

  7.   

    只要是用LoadLibrary装入的DLL,都要Free掉。