كيف تبدأ طلبًا من HTA؟
بسأل:
مرحبا ، خبير السيناريو! بالنسبة إلى HTA ، هل هناك أي شيء يمكن أن يحل محل أمر wscript.shell؟ أحتاج إلى تشغيل بعض التطبيقات وتحديد الملف المراد فتحه.
- DL
إجابة:
مرحبا DL. نعم ، نحن نعلم أنه يمكن استخدام مثل هذه الأوامر في HTA ويمكن استخدامها بدلاً من أمر wscript.shell ، وسنقدم لك ذلك منذ فترة. قبل تقديمه ، يجب أن نلاحظ أنه يمكنك بالفعل استخدام كائن wscript.shell في HTA. هذا ارتباك شائع: لأنه لا يمكنك استخدام أوامر معينة في HTA (مثل wscript.echo و wscript.sleep) ، يعتقد الناس أنه لا يمكنك استخدام أي أوامر WSH في HTA.
قبل المتابعة ، هناك سؤال آخر: لماذا لا يمكنك استخدام wscript.echo و wscript.sleep في HTA؟ أي أن هذه الطرق هي خصائص لكائنات WScript ، ولا يمكنك إنشاء مثيلات من كائنات WScript. يتم إنشاء كائنات WScript تلقائيًا ويتم إنشاءها فقط عند تشغيل مضيف Windows Script (أي wscript.exe أو cscript.exe). ويرجع ذلك بالتحديد إلى أن النصوص التالية صالحة تمامًا:
الرمز كما يلي:
wscript.echo "مهلا".
لاحظ أننا لم نقم بإنشاء كائن WScript ، والذي تم إنشاؤه تلقائيًا عندما ندعو مضيف Windows Script.
ولكن هذا يقتصر على كائنات wscript. هناك كائنات WSH أخرى يمكنك إنشاؤها ، بما في ذلك كائنات shell. على سبيل المثال ، فيما يلي HTA بسيط بسيط يقوم بإنشاء كائن wscript.shell ثم يقوم بتشغيل notepad.exe (ويفتح الملف c: /scripts/test.txt في العملية):
الرمز كما يلي:
<html>
<head>
<script language = "vbscript">
البرمجة الفرعية
تعيين ObjShell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
نهاية الفرعية
</script>
</head>
<body>
<button onClick = "RunProgram"> تشغيل البرنامج </button> <p>
</body>
</html>
كما ترون ، هذا هو أسهل HTA تقريبًا: يتكون من زر واحد فقط ويتم تشغيل روتين فرعي يسمى RunProgram عند النقر عليه. يرجى إلقاء نظرة على رمز البرمجيات:
الرمز كما يلي:
البرمجة الفرعية
تعيين ObjShell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
نهاية الفرعية
هذا كل شيء: نقوم بإنشاء مثيل لكائن wscript.shell ونطلق على طريقة التشغيل. هذا يمرر معلمة واحدة للتشغيل: اسم الملف القابل للتنفيذ (notepad.exe) متبوعًا بمسار الملف الذي تريد فتحه. هذا كل ما نحتاج إلى فعله.
بالمناسبة ، طالما يتم تشغيل البرنامج النصي في HTA ، لن تكون هناك مشاكل. إذا حاولت تشغيله في ملف HTML (أي ، ملف مع ملحق الملف .htm) ، يظهر مربع الرسائل يحذرك من أن عنصر تحكم ActiveX يحاول تشغيله على الصفحة. يجب أن تنقر فوق نعم للسماح للروتين الفرعي بإنشاء كائن shell ثم تشغيله. وذلك لأن كائنات WSH تعتبر "انعدام الأمن للبرمجة النصية".
ملاحظة: نعم ، هذا يبدو غريبًا بعض الشيء ، وأعتقد في الواقع أن كائنات البرمجة النصية ليست آمنة للبرمجة النصية. ولكن هذا لأن Internet Explorer يستخدم استضافة سينمائية مختلفة ونماذج أمان مختلفة عن WSH. لحسن الحظ ، تستخدم HTA نموذج أمان مختلف عن Internet Explorer ، مما يعني أنك لا تواجه هذه المشكلة عند إنشاء كائنات Shell داخل HTA.