請問如何在程式中設定iis的虛擬目錄,adsi方法看不太懂.. |
答題得分者是:ha0009
|
eric0218
一般會員 發表:1 回覆:5 積分:1 註冊:2003-07-10 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
我的朋友照這篇文章成功的使用該功能,你可以參考看看。
http://www.yesky.com/20010404/166909.shtml
|
eric0218
一般會員 發表:1 回覆:5 積分:1 註冊:2003-07-10 發送簡訊給我 |
"新建一个单元,声明。
unit ActiveDs; interface function ADsGetObject(const PathName: WideString; const GUID: TGUID; out I: IUnknown): HRESULT; stdcall; implementation function ADsGetObject; external 'activeds.dll' name 'ADsGetObject'; end."
這一段是要如何做,可否再詳細說明.謝謝.
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
eric0218
一般會員 發表:1 回覆:5 積分:1 註冊:2003-07-10 發送簡訊給我 |
剛試了,問題還是一堆.
可否將步驟很詳細的說明
1.先引入类型库(Project|Import Type Library)adsiis.dll、iisext.dll和activeds.tlb
2.新建一个单元,声明。
unit ActiveDs; interface function ADsGetObject(const PathName: WideString; const GUID: TGUID; out I: IUnknown): HRESULT; stdcall; implementation function ADsGetObject; external 'activeds.dll' name 'ADsGetObject'; end. 3.主程式用那一種方法,詳細的code為何?
我是初學delphi所以有很多地方不懂,請多關照.謝謝ha0009的回答
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
因為我沒有實際使用過,剛剛測了第一個程式沒問題呀。
我把我測試的 Code 給你參考看看,如果需要更詳細的資源你
可以在網上仔細搜索應該有很多資料,另外在微軟的 MSDN 上
你也可以找到很好的資料,如果還不能,我再向我的朋友請教
好了< > 記住一句話...天助自助< >
procedure TForm1.Button1Click(Sender: TObject); var Container: IADsContainer; ADs: IADs; begin OleCheck (ADsGetObject('IIS://localhost/w3svc', IID_IADsContainer, IUnknown(Container))); try // IIsWebServer 是關鍵字,代表要求 IIS 內的 Web 站台。 // 第二個參數表示第幾個站台。由 1 開始。 Ads := IADs(Container.GetObject('IIsWebServer', '1')); ShowMessage(ADs.ADsPath); OleCheck (ADs.QueryInterface(IID_IADsContainer, Container)); // IIsWebVirtualDir 也是關鍵字,表示要取得站台的目錄。 // 第二個參數表示目錄的名稱。Root 代表根目錄。 ADs := IADs (Container.GetObject('IIsWebVirtualDir', 'Root')); ShowMessage(ADs.ADsPath); OleCheck (ADs.QueryInterface(IID_IADsContainer, Container)); // 第二個參數表示要建立的目錄名稱。 ADs := IADs (Container.Create('IIsWebVirtualDir', 'DelphiTest')); // 下列程式碼是設定 ADs 物件(目前是 IIsWebVirtualDir) 的屬性 ADs.Put('AccessRead', 'True'); ADs.Put('Path', 'c:\Temp'); ADs.SetInfo; finally ads := nil; Container := nil; end; end; |
eric0218
一般會員 發表:1 回覆:5 積分:1 註冊:2003-07-10 發送簡訊給我 |
我貼上程式
----------------------
unit ActiveDs;
interface
function ADsGetObject(const PathName: WideString; const GUID: TGUID; out I: IUnknown): HRESULT; stdcall;
implementation
function ADsGetObject; external 'activeds.dll' name 'ADsGetObject';
end.
---------------------------
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ActiveDs,
StdCtrls; type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject);
var
Container: IADsContainer;
ADs: IADs;
begin
OleCheck (ADsGetObject('IIS://localhost/w3svc', IID_IADsContainer, IUnknown(Container))); try
// IIsWebServer 是關鍵字,代表要求 IIS 內的 Web 站台。
// 第二個參數表示第幾個站台。由 1 開始。
Ads := IADs(Container.GetObject('IIsWebServer', '1'));
ShowMessage(ADs.ADsPath); OleCheck (ADs.QueryInterface(IID_IADsContainer, Container));
// IIsWebVirtualDir 也是關鍵字,表示要取得站台的目錄。
// 第二個參數表示目錄的名稱。Root 代表根目錄。
ADs := IADs (Container.GetObject('IIsWebVirtualDir', 'Root'));
ShowMessage(ADs.ADsPath); OleCheck (ADs.QueryInterface(IID_IADsContainer, Container)); // 第二個參數表示要建立的目錄名稱。
ADs := IADs (Container.Create('IIsWebVirtualDir', 'DelphiTest'));
// 下列程式碼是設定 ADs 物件(目前是 IIsWebVirtualDir) 的屬性
ADs.Put('AccessRead', 'True');
ADs.Put('Path', 'c:\Temp');
ADs.SetInfo;
finally
ads := nil;
Container := nil;
end;
end;
------------------------------------
errMsg:
[Error] Unit1.pas(28): Undeclared identifier: 'IADsContainer'
[Error] Unit1.pas(29): Undeclared identifier: 'IADs'
[Error] Unit1.pas(31): Undeclared identifier: 'OleCheck'
[Error] Unit1.pas(31): Undeclared identifier: 'IID_IADsContainer'
[Error] Unit1.pas(36): Missing operator or semicolon
[Error] Unit1.pas(36): Incompatible types: 'HGDIOBJ' and 'String'
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
eric0218
一般會員 發表:1 回覆:5 積分:1 註冊:2003-07-10 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
eric0218
一般會員 發表:1 回覆:5 積分:1 註冊:2003-07-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |