كيفية التحكم في وحدة تخزين نظام Windows باستخدام JScript أو VBScript؟

StackOverflow https://stackoverflow.com/questions/2216334

سؤال

أريد التحكم في مستوى نظام Windows الخاص بي من البرنامج النصي JScript أو VBScript. أيه أفكار؟

أيضا، هل يمكنني كشف حجم النظام إذا كانت صامتة؟

هل كانت مفيدة؟

المحلول

لكتم أو إلغاء تنظيم حجم النظام، يمكنك محاكاة مفتاح كتم الصوت باستخدام WshShell.SendKeys طريقة:

var oShell = new ActiveXObject("WScript.Shell");
oShell.SendKeys(Chr(&HAD));

أما بالنسبة لتغيير مستوى الصوت من البرنامج النصي، فهناك حل ينطوي على بعض أتمتة Windows، مثل تشغيل برنامج تخزين وحدة تخزين النظام ومحاكاة اختصارات لوحة المفاتيح المناسبة، لكنني لا أعتقد أنه موثوق. لذلك أوصي باستخدام بعض الأداة المساعدة الخارجية القادرة على تغيير مستوى الصوت، ثم اتصل به من البرنامج النصي الخاص بك. على سبيل المثال، يمكنك استخدام الحرة nircmd. أداة:

var oShell = new ActiveXObject("WScript.Shell");

// Increase the system volume by 20000 units (out of 65535)
oShell.Run("nircmd.exe changesysvolume 20000");

// Decrease the system volume by 5000 units
oShell.Run("nircmd.exe changesysvolume -5000");

NIRCMD يمكن أيضا كتم أو قم بحدوث حجم النظام:

var oShell = new ActiveXObject("WScript.Shell");
oShell.Run("nircmd.exe mutesysvolume 0");  // unmute
oShell.Run("nircmd.exe mutesysvolume 1");  // mute
oShell.Run("nircmd.exe mutesysvolume 2");  // switch between mute and unmute

نصائح أخرى

أفضل طريقة يمكنني رؤيتها لمعالجة مستوى حجم النظام على Windows دون الحاجة إلى تثبيت برنامج إضافي هو استخدام VBScript بإحدى الطرق التالية:

تبديل صامتة: (المذكورة بالفعل في إجابة سابقة)

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))

زيادة مستوى الصوت:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAF))

تقليل مستوى الصوت:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAE))

هذا يجب أن يعمل لمعظم آلات النوافذ الحديثة. لقد قمت باختبار هذا على نظام التشغيل Windows 7 و 8.1 ويعمل بشكل جيد حتى عند تشغيل "القيام به" في LC، لذلك من الممكن تضمين هذه البرامج النصية داخل قابلية تنفيذها وتشغيلها دون الحاجة إلى حفظها كملفات فردية.

على نظام التشغيل Windows 7، يمكنني القيام بذلك عن طريق التحكم في ضغطات المفاتيح باستخدام Wscript.

set oShell = CreateObject("WScript.Shell") 
oShell.run"%SystemRoot%\System32\SndVol.exe" 
WScript.Sleep 1500 
oShell.SendKeys"{TAB} " ' Tab to the mute and press space
oShell.SendKeys"%{F4}"  ' ALT F4 to exit the app.

لقد قمت بحفظها في ملف يسمى كتم الصوت .VBS وإنشاء اختصار على سطح المكتب لتعيين مفتاح اختصار. كنترول+بديل+F12. وبعد لسبب ما، تعمل اختصارات لوحة المفاتيح فقط إذا كانت على سطح المكتب، لذلك أنا لست متأكدا من مدى اختصارات لوحة المفاتيح الموثوق بها!

إجابة مانور ضبابية تعمل على ويندوز فيتا كذلك. هذا، أنا فقط صنعت للتو، يفعل الشيء نفسه بالمعنى.

set oShell = CreateObject("WScript.Shell") 
oShell.run"%SystemRoot%\System32\SndVol.exe" 'Runs The Master Volume App.
WScript.Sleep 1500 'Waits For The Program To Open
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20, If It Is Muted Then It Will Unmute It
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys"%{F4}"  ' ALT F4 To Exit The App.

إذا كنت ترغب في تقليل مستوى الصوت الذي ستفعله

oShell.SendKeys("{PGDN}") 'It Will Decrease The Volume By 20

http://www.nilpo.com/2008/11/windows-xp/mute-sound-volume-in-wsh/يستخدم ضغط المفاتيح لمفتاح كتم لوحة مفاتيح الوسائط المتعددة. ماهر ؛-)

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))

من داخل نافذة متصفح / صفحة ويب - بالتأكيد لا توجد طريقة على الإطلاق. سيحظر أمان Sandbox Browser ذلك حتى لو كان ذلك ممكنا من الناحية الفنية.

من داخل Windows Script Host (مستقل .vbs أو ملف .js) - لا توجد طريقة أعرفها. WMI لا يوفر التحكم في هذا أيضا، وفقا ل هذا السؤال.

انا إستعملت nircmd.exe. جنبا إلى جنب مع VBScript للتحكم في حجم النظام.

Set objShell = CreateObject("WScript.Shell") 
If Not WScript.Arguments.Named.Exists("elevate") Then
  CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
  WScript.Quit
End If
objShell.Run("nircmd.exe setvolume 0 0 0") 

'Set WshShell = WScript.CreateObject("WScript.Shell")
'WshShell.Popup "Success", "5", "MuteSpeaker"

' to successfully run this vbscript during log-off, nircmd.exe during should be present in "C:\Windows\System32"
' [cscript //X scriptfile.vbs MyArg1 MyArg2]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top