・C#から実行可能なAPIなどでCDドライブのトレイを開閉することはできますか?
・C#から実行可能なAPIなどでシステムの音量を変更することはできますか?
事前に他の言語でDLLを作り、それを呼び出す方法はできるだけ使わないように
したいと考えております。
アドバイス宜しくお願いします。
ドライブの開閉やシステムのボリューム変更は.NETのAPIではできないと思います。
が事前に自分でDLLを作る必要はなく、OSのAPIを呼び出せばそれで目的は達成できると思います。
とりあえずドライブの開閉は以下のような感じで出来ました。
using System; using System.IO; using System.Runtime.InteropServices; using System.Text; class Program { [DllImport("winmm", CharSet = CharSet.Auto)] private static extern int mciSendString( string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback); static void Main() { mciSendString("status my_sound volume", buff, buffのサイズ, IntPtr.Zero); foreach (string drive in Environment.GetLogicalDrives()) { DriveInfo di = new DriveInfo(drive); if (di.DriveType == DriveType.CDRom) { mciSendString("open " + drive + " type cdaudio alias orator", null, 0, IntPtr.Zero); int canEject = mciSendString("capability orator can eject", null, 0, IntPtr.Zero); Console.WriteLine("{0}はイジェクト{1}です。", drive, (canEject == 0) ? "可能" : "不可"); Console.WriteLine("{0}ドライブを開きます。", drive); mciSendString("set orator door open", null, 0, IntPtr.Zero); Console.WriteLine("{0}ドライブを閉じます。", drive); mciSendString("set orator door closed", null, 0, IntPtr.Zero); mciSendString("close orator", null, 0, IntPtr.Zero); } } } }
システムの音量調整は面倒なので割愛します(^^;
自作DLLを別途作る必要は一応ないと思います。
以下のサイトが参考になるようです。
CDドライブの開閉
http://bbs.wankuma.com/index.cgi?mode=al2&namber=38846&KLOG=67
音量調整
http://bbs.wankuma.com/index.cgi?mode=al2&namber=11021&KLOG=24
回答ありがとうございます。大変参考になりました。
ドライブの開閉やシステムのボリューム変更は.NETのAPIではできないと思います。
が事前に自分でDLLを作る必要はなく、OSのAPIを呼び出せばそれで目的は達成できると思います。
とりあえずドライブの開閉は以下のような感じで出来ました。
using System; using System.IO; using System.Runtime.InteropServices; using System.Text; class Program { [DllImport("winmm", CharSet = CharSet.Auto)] private static extern int mciSendString( string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback); static void Main() { mciSendString("status my_sound volume", buff, buffのサイズ, IntPtr.Zero); foreach (string drive in Environment.GetLogicalDrives()) { DriveInfo di = new DriveInfo(drive); if (di.DriveType == DriveType.CDRom) { mciSendString("open " + drive + " type cdaudio alias orator", null, 0, IntPtr.Zero); int canEject = mciSendString("capability orator can eject", null, 0, IntPtr.Zero); Console.WriteLine("{0}はイジェクト{1}です。", drive, (canEject == 0) ? "可能" : "不可"); Console.WriteLine("{0}ドライブを開きます。", drive); mciSendString("set orator door open", null, 0, IntPtr.Zero); Console.WriteLine("{0}ドライブを閉じます。", drive); mciSendString("set orator door closed", null, 0, IntPtr.Zero); mciSendString("close orator", null, 0, IntPtr.Zero); } } } }
システムの音量調整は面倒なので割愛します(^^;
自作DLLを別途作る必要は一応ないと思います。
回答ありがとうございます。
OSのAPIは知っていれば自由に使えるものなのですね。
他にどんなものが存在するのか興味が出てきました。
回答ありがとうございます。
OSのAPIは知っていれば自由に使えるものなのですね。
他にどんなものが存在するのか興味が出てきました。