Có thể bạn chưa cài đặt điều khiển ActiveX này (hoặc đã đăng ký) trong máy tính của mình.
WScript.Shell
nên được tìm thấy trong tất cả các Windows:
var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");
Nếu có khoảng trống trong commands to run
, bạn cần phải sử dụng dấu ngoặc kép.
Sửa
Nội dung dưới đây chủ yếu là từ MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx
iRetVal = Shell.ShellExecute(
sFile,
[ vArguments ],
[ vDirectory ],
[ vOperation ],
[ vShow ]
)
Chúng ta hãy [vDirectory]
. Tài liệu hướng dẫn nói: "Đầy đủ điều kiện path of the directory
có chứa tệp được chỉ định bởi sFile. Nếu tham số này không được chỉ định, thư mục làm việc hiện tại được sử dụng."
Điều này có nghĩa là bạn có đường dẫn không hợp lệ cho đối số này (có .cmd.exe
ở cuối nó). Ngoài ra tất cả các ví dụ để tạo ActiveX giống như sau:
var objShell = new ActiveXObject("shell.application");
Lưu ý chữ thường trong "shell.application"
.
Và May12, cảm ơn vì đã hỏi điều này. Tôi không biết về điều khiển ActiveX này trước đây, nó có vẻ rất hữu ích đối với tôi.
EDIT II
Nhưng bạn đã hiểu nó? Ví dụ của bạn hoạt động hoàn hảo trong ứng dụng của tôi:
objShell.ShellExecute("cmd.exe", "cd C: C:\\cd c:\\ext_file main.exe test.txt", "C:\\WINDOWS\\system32", "open", 1);
Với ba trường hợp ngoại lệ:
1) Người tôi đã đề cập ở đầu câu trả lời này về con đường
2) Escaped \
sử dụng cũng trong lập luận.
3) Đối số cuối cùng là loại số, không phải là một chuỗi.
'cd C: 'hầu như không thực hiện bất kỳ nghĩa nào đó,' c: \ 'sẽ là đủ. – kirilloid