//请问我想控制播放中音屏的音量(单独降低或提高它的音量,但不能影响其它控件在同时播放其它音屏的音量大小),应该如何写?using System; 
using System.Runtime.InteropServices;  
using System.Text;  
using System.IO ; namespace LL 

/// <summary> 
/// clsMci 的摘要说明。 
/// </summary> 
public class clsMCI 

public clsMCI() 

} //定义API函数使用的字符串变量  
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)] 
private string Name = "" ; 
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)] 
private string durLength = "" ; 
[MarshalAs(UnmanagedType.LPTStr,SizeConst=128)] 
private string TemStr =""; 
int ilong; 
//定义播放状态枚举变量 
public enum State 

mPlaying = 1, 
mPuase = 2, 
mStop = 3 
}; 
//结构变量 
public struct structMCI  

public bool bMut; 
public int iDur; 
public int iPos; 
public int iVol; 
public int iBal; 
public string iName; 
public State state; 
}; public structMCI mc =new structMCI() ; //取得播放文件属性 
public string FileName 

get 

return mc.iName; 

set 

//ASCIIEncoding asc = new ASCIIEncoding();  
try 

TemStr ="";  
TemStr = TemStr.PadLeft(127,Convert.ToChar(" ")); 
Name = Name.PadLeft(260,Convert.ToChar(" ")) ; 
mc.iName = value;  
ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length); 
Name = GetCurrPath(Name); 
//Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media"; 
Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media"; 
ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , 0); 
ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, 0); 
ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , 0); 
mc.state = State.mStop;  

catch 




//播放 
public void play() 

TemStr = ""; 
TemStr = TemStr.PadLeft(127,Convert.ToChar(" ")); 
APIClass.mciSendString("play media", TemStr, TemStr.Length , 0); 
mc.state = State.mPlaying ; 

//停止 
public void StopT() 

TemStr = ""; 
TemStr = TemStr.PadLeft(128,Convert.ToChar(" ")); 
ilong = APIClass.mciSendString("close media", TemStr, 128, 0); 
ilong = APIClass.mciSendString("close all", TemStr, 128, 0); 
mc.state = State.mStop ;  
} public void Puase() 

TemStr = ""; 
TemStr = TemStr.PadLeft(128,Convert.ToChar(" ")); 
ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0); 
mc.state = State.mPuase ;  

private string GetCurrPath(string name) 

if(name.Length <1) return "";  
name = name.Trim(); 
name = name.Substring(0,name.Length-1); 
return name; 

//总时间 
public int Duration 

get 

durLength = ""; 
durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ; 
APIClass.mciSendString("status media length", durLength, durLength.Length, 0); 
durLength = durLength.Trim(); 
if(durLength == "") return 0; 
return (int)(Convert.ToDouble(durLength) / 1000f);  

} //当前时间 
public int CurrentPosition 

get 

durLength = ""; 
durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ; 
APIClass.mciSendString("status media position", durLength, durLength.Length, 0); 
mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f); 
return mc.iPos; 


} public class APIClass 

[DllImport("kernel32.dll", CharSet = CharSet.Auto)] 
public static extern int GetShortPathName ( 
string lpszLongPath, 
string shortFile, 
int cchBuffer 
); [DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)] 
public static extern int mciSendString ( 
string lpstrCommand, 
string lpstrReturnString, 
int uReturnLength, 
int hwndCallback 
);