पर प्रोग्राम की मात्रा बदलें मैं प्रोग्राम की मात्रा को बदलना चाहता हूं (और मास्टर वॉल्यूम नहीं)। मेरे पास अभी निम्न कोड है:विन 7
DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
private void volumeBar_Scroll(object sender, EventArgs e)
{
// Calculate the volume that's being set
int NewVolume = ((ushort.MaxValue/10) * volumeBar.Value);
// Set the same volume for both the left and the right channels
uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));
// Set the volume
waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);
}
यह केवल Win XP पर काम करता है, विंडोज 7 (और शायद Vista नहीं)। मुझे कोई भी स्क्रिप्ट नहीं मिली है जो Win 7 पर प्राप्त होगी, केवल मास्टर वॉल्यूम को बदलने के लिए (जो मैं बाद में नहीं हूं)।
मैं इस कोड का उपयोग कर रहा हूं: http://pastebin.com/RcRjfBu4 हालांकि डीबग मुझे '0' देता है। मात्रा या तो नहीं बदलती है। – Devator
रेटवल = 0 का मतलब सफलता है, इसलिए कोई भाग्य नहीं है। जैसा कि मैंने कहा कि यह मेरे लिए काम करता है। मुझे लगता है कि आपके पास Win7 SP1 है। मेरे पास वीएस 11 बीटा भी स्थापित है - जो कुछ तय कर सकता है। – Phil
ठीक है, मैं पुष्टि कर सकता हूं कि यह काम कर रहा है (केवल आधा हालांकि)। स्लाइडर को स्लाइड करते समय मुझे वॉल्यूम बदलना दिखाई देता है (केवल विज़ुअल वार) - http://dl.dropbox.com/u/6166898/slider.png पर एक नज़र डालें। लेकिन वॉल्यूम ** ** नहीं बदला गया है! जब मैं मैन्युअल रूप से विंडोज वॉल्यूम स्लाइडर स्लाइड करता हूं तो ** ** ** बदलता है, लेकिन प्रोग्राम के भीतर से नहीं। क्या मुझसे कोई चूक हो रही है? – Devator