2009-04-24 38 views
12

Có ai biết lý do đằng sau có tùy chọn sử dụng:Sự khác nhau giữa CreateObject và Wscript.CreateObject là gì?

Wscript.CreateObject("some.object") 

CreateObject("some.object") 

trong VBScript? khi tôi tìm thấy tài liệu hoặc ví dụ sử dụng Wscript.CreateObject, tôi thường viết lại bằng cách sử dụng CreateObject, bởi vì nó luôn luôn có vẻ làm việc, và sau đó tôi có thể dễ dàng tái sử dụng mã trong một HTA hoặc ASP. Nhưng tôi đã luôn luôn tự hỏi tại sao tính năng này tồn tại và nếu nó khác biệt gì nếu bạn sử dụng cách này hay cách khác trong VBScript.

Trả lời

23

Không có sự khác biệt giữa hai, khi bạn gọi cho họ chỉ với một đối số. Làm chính xác điều tương tự.

Sự khác biệt giữa hai chỉ là bằng chứng nếu bạn gọi với hai tham số. Các báo cáo

Wscript.CreateObject("some.object", "AnotherParam") 

CreateObject("some.object", "AnotherParam") 

làm những việc hoàn toàn khác nhau:

Chức năng VBScript CreateObject giải thích tham số thứ hai là một tên máy tính từ xa và cố gắng để tạo ra các đối tượng COM tên trên máy tính từ xa đó; trong ví dụ này, nó cố gắng khởi tạo một thể hiện của một đối tượng với ProgId của "some.object" trên một máy tính từ xa có tên "AnotherParam". Phương thức WScript CreateObject giải thích tham số thứ hai là tiền tố chương trình con được sử dụng để xử lý các sự kiện từ đối tượng. Hai hàm GetObject có liên quan tương tự nhau.

(Phỏng theo TechNet, phần "So sánh VBScript CreateObject và GetObject Chức năng với WSH").

+0

Bạn có một ví dụ mã hoàn chỉnh trong tầm tay? – krlmlr

5

Tôi đoán rằng đối tượng WScript có phương thức CreateObject để bất kỳ ngôn ngữ Windows Script nào cũng có thể tạo đối tượng COM.

VBScript có khả năng đó như một chức năng toàn cầu, nhưng các ngôn ngữ máy chủ Windows Script khác có thể không.

Ví dụ: JScript không có hàm CreateObject toàn cầu (tôi tin) (tuy nhiên, có cú pháp var a = new ActiveXObject("..."), vì vậy bạn không cần sử dụng WScript.CreateObject trong JScript).

Tôi đoán không có sự khác biệt giữa hai hàm.

EDIT: Có một sự khác biệt (nhưng chỉ khi bạn đang cố gắng nhanh chóng đối tượng DCOM trên máy chủ từ xa), xem câu trả lời bằng cách @Thomas Petersen.

3

JScript không có CreateObject toàn cầu? WScript không thể sử dụng JScript?

Code from devGuru

// JScript 
var objIE = WScript.CreateObject("InternetExplorer.Application","objIE_") 
objIE.Visible = true 

while (objIE.Visible){ 
    WScript.Sleep(500); 
} 

function objIE_NavigateComplete2(pDisp, URL){ 
    WScript.Echo("You just navigated to", URL) 
} 

function objIE_OnQuit(){ 
    boolBrowserRunning = false ; 
} 
Các vấn đề liên quan