C++Builder使用ADSI建立web站點 (轉)

worldblog發表於2007-12-11
C++Builder使用ADSI建立web站點 (轉)[@more@]

C++Builder使用ADSI建立站點

以下是我學習MSDN中的文章。總結出適合在C++Builder下建立WebServer的例子:
其中使用ADSI的一些介面,注意要將Activeds.Lib新增入工程,
還要包含以下幾個頭。
比較簡單,希望能拋磚引玉。

#include
#pragma hdrstop

#include "Unit1.h"


#pragma package(smart_init)
#pragma re "*.dfm"
#include "iads.h"
#include "adssts.h"
#include "Adshlp.h"


TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}


個引數:ip:字串,ain:域名(),DiskPath:虛擬目錄路徑(C:www)
BOOL CreateWebServer(String ip,String domain,String DiskPath)
{
IADntainer *pCont=NULL;
IADs* pAds=NULL;
IADs* pVrAds=NULL;
IADsServiceOperations *pSrvOp;
IDispatch *pDisp = NULL;
IDispatch *pVrDisp = NULL;
AnsiString WNumer=IntToStr(random(1000)); 一個隨機數建立站點
String newBindings=ip+":80:"+domain;
 
/* 獲得WebServer */
if(ADsGet(L"IIS://localhost/w3svc",IID_IADsContainer,(void**)&pCont)==S_OK)
{  /建站點
  if(pCont->Create(L"IIsWebServer",(wchar_t*)WString(WNumer),&pDisp)==S_OK)
  {
  pDisp->QueryInterface(IID_IADs, (void**)&pAds);
  pDisp->QueryInterface(IID_IADsServiceOperations, (void**)&pSrvOp);
  pAds->Put(L"ServerSize",Variant(int(1)));
  pAds->Put(L"ServerComment",Variant(String("xiwei")));//註釋,沒太多用處,xiwei我的名字
  pAds->Put(L"ServerBindings",Variant(String(newBindings)));
  pAds->SetInfo();

  建主目錄
 
  pCont->GetObject(L"IIsWebServer",(wchar_t*)WideString(WNumer),&pDisp);//得到剛才建立地網站
  if(pDisp->QueryInterface(IID_IADsContainer,(void**)&pCont)==S_OK)
  {
  if(pCont->Create(L"IIsWebVirtualDir",L"Root",&pVrDisp)==S_OK)
  {
  pVrDisp->QueryInterface(IID_IADs, (void**)&pVrAds);
  pVrAds->Put(L"AccessRead",Variant(BOOL("True")));
  pVrAds->Put(L"AccessWrite",Variant(BOOL("True")));
  pVrAds->Put(L"AccessScript",Variant(BOOL("True")));
  pVrAds->Put(L"EnableDirBrowsing",Variant(BOOL("True")));
  pVrAds->Put(L"Path",Variant(String(DiskPath)));
  pVrAds->Put(L"AppRoot",Variant(String(DiskPath)));
  pVrAds->SetInfo();
  pVrAds->Release();
  pAds->Release();
  pCont->Release();
  }
  動新建的WebServer
  pSrvOp->Start();
  pSrvOp->Release();
  }
  }
}

}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
CreateWebServer(Edit1->Text,"",Edit2->Text);
}

以上內容缺少錯誤處理,諸如ip地址已被佔用等,我認為技術這東西用不著保守,沒等生利息呢,已經貶值了。
哈哈,希望各位給以指正!我的E:">proton@yeah.net


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991332/,如需轉載,請註明出處,否則將追究法律責任。

相關文章