Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用一个按钮打开CD托盘_C# - Fatal编程技术网

C# 用一个按钮打开CD托盘

C# 用一个按钮打开CD托盘,c#,C#,我想用同样的按钮在cd托槽关闭时打开cd托槽,在cd托槽打开时关闭cd托槽 我知道打开或关闭CD托盘的命令: [DllImport("winmm.dll", EntryPoint = "mciSendString")] public static extern int mciSendStringA(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); 我的问题是我不知道CD托盘的

我想用同样的按钮在cd托槽关闭时打开cd托槽,在cd托槽打开时关闭cd托槽

我知道打开或关闭CD托盘的命令:

[DllImport("winmm.dll", EntryPoint = "mciSendString")]
public static extern int mciSendStringA(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
我的问题是我不知道CD托盘的状态,我只知道如何检查CD/DVD是否已加载,而不知道托盘的状态

我不喜欢的是一个变量来记忆状态的想法——正如我发现的一些线程中所建议的那样——因为一旦按下硬件按钮,它就会立即失去同步

但这一定是可能的,因为有些程序——比如itunes——正是我想做的


提前感谢您的帮助。

首先,您必须为返回状态导入一个DLL和一个变量

[DllImport("winmm.dll", EntryPoint="mciSendStringA")]
public static extern void mciSendStringA(string lpstrCommand, 
string lpstrReturnString, long uReturnLength, long hwndCallback);

string rt = "";
打开光盘:

mciSendStringA("set CDAudio door open",rt,127,0);
关闭光盘:

mciSendStringA("set CDAudio door closed",rt,127,0);

我以前读过这些讨论,但它们只在CD加载时检测到;他们没有区分开放和封闭+空,这是我需要的。顶部建议的链接没有帮助,因为它只是一个相关的问题,但不包含答案。具体来说:我不一定想知道状态,我只想用一个按钮打开和关闭,正如所说的,这应该是其他程序可以做到的。