Main.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using NEROLib;
  8. namespace NeroFiddlesCOM.NET
  9. {
  10. /// <summary>
  11. /// Summary description for MainForm.
  12. /// </summary>
  13. public class MainForm : System.Windows.Forms.Form
  14. {
  15. private Nero m_nero;
  16. private NeroDrives m_devices;
  17. private NeroDrive m_lastDrive;
  18. private _INeroDriveEvents_OnDriveStatusChangedEventHandler m_evDriveStatusChanged;
  19. private System.Windows.Forms.Label label1;
  20. private System.Windows.Forms.ComboBox c_Devices;
  21. private System.Windows.Forms.Button c_BurnIsoAudio;
  22. private System.Windows.Forms.Button c_Erase;
  23. private System.Windows.Forms.Button c_BurnImage;
  24. private System.Windows.Forms.Button c_Exit;
  25. private System.Windows.Forms.Button c_DriveInfo;
  26. private System.Windows.Forms.Button c_Eject;
  27. private System.Windows.Forms.Button c_Load;
  28. private System.Windows.Forms.Button c_DAE;
  29. private System.Windows.Forms.Label label2;
  30. private System.Windows.Forms.Label c_LastDriveStatus;
  31. private System.Windows.Forms.Button c_BurnCopy;
  32. private System.Windows.Forms.Label label3;
  33. private System.Windows.Forms.Label c_APIVersion;
  34. private System.Windows.Forms.Button c_ImageInfo;
  35. private System.Windows.Forms.Button c_DiscInfo;
  36. private System.Windows.Forms.GroupBox groupBox1;
  37. private System.Windows.Forms.GroupBox groupBox2;
  38. private System.Windows.Forms.GroupBox groupBox3;
  39. private System.Windows.Forms.GroupBox groupBox4;
  40. private System.Windows.Forms.Button c_NVAPI;
  41. /// <summary>
  42. /// Required designer variable.
  43. /// </summary>
  44. private System.ComponentModel.Container components = null;
  45. public MainForm()
  46. {
  47. //
  48. // Required for Windows Form Designer support
  49. //
  50. InitializeComponent();
  51. }
  52. protected override void OnLoad(EventArgs e)
  53. {
  54. base.OnLoad (e);
  55. // When the main form loads, let's create the Nero object first.
  56. // Then get the available devices and fill the combobox.
  57. //
  58. m_nero = new NeroClass();
  59. m_devices = m_nero.GetDrives(NERO_MEDIA_TYPE.NERO_MEDIA_CD);
  60. for (int i = 0; i < m_devices.Count; i ++)
  61. {
  62. NeroDrive drive = (NeroDrive) m_devices.Item (i);
  63. string sDriveLetter = (drive.DriveLetter == "")? "?": drive.DriveLetter.ToUpper ();
  64. c_Devices.Items.Add (sDriveLetter + ": " + drive.DeviceName);
  65. }
  66. c_Devices.SelectedIndex = 0;
  67. // Show the version.
  68. //
  69. short v1 = 0, v2 = 0, v3 = 0, v4 = 0;
  70. m_nero.APIVersion (ref v1, ref v2, ref v3, ref v4);
  71. c_APIVersion.Text = v1.ToString () + "." + v2.ToString () + "." + v3.ToString () + "." + v4.ToString ();
  72. }
  73. /// <summary>
  74. /// Clean up any resources being used.
  75. /// </summary>
  76. protected override void Dispose( bool disposing )
  77. {
  78. if( disposing )
  79. {
  80. if (components != null)
  81. {
  82. components.Dispose();
  83. }
  84. }
  85. base.Dispose( disposing );
  86. }
  87. #region Windows Form Designer generated code
  88. /// <summary>
  89. /// Required method for Designer support - do not modify
  90. /// the contents of this method with the code editor.
  91. /// </summary>
  92. private void InitializeComponent()
  93. {
  94. this.label1 = new System.Windows.Forms.Label();
  95. this.c_DiscInfo = new System.Windows.Forms.Button();
  96. this.c_Devices = new System.Windows.Forms.ComboBox();
  97. this.c_BurnIsoAudio = new System.Windows.Forms.Button();
  98. this.c_Erase = new System.Windows.Forms.Button();
  99. this.c_BurnImage = new System.Windows.Forms.Button();
  100. this.c_Exit = new System.Windows.Forms.Button();
  101. this.c_DriveInfo = new System.Windows.Forms.Button();
  102. this.c_Eject = new System.Windows.Forms.Button();
  103. this.c_Load = new System.Windows.Forms.Button();
  104. this.c_DAE = new System.Windows.Forms.Button();
  105. this.label2 = new System.Windows.Forms.Label();
  106. this.c_LastDriveStatus = new System.Windows.Forms.Label();
  107. this.c_BurnCopy = new System.Windows.Forms.Button();
  108. this.label3 = new System.Windows.Forms.Label();
  109. this.c_APIVersion = new System.Windows.Forms.Label();
  110. this.c_ImageInfo = new System.Windows.Forms.Button();
  111. this.groupBox1 = new System.Windows.Forms.GroupBox();
  112. this.groupBox2 = new System.Windows.Forms.GroupBox();
  113. this.groupBox3 = new System.Windows.Forms.GroupBox();
  114. this.groupBox4 = new System.Windows.Forms.GroupBox();
  115. this.c_NVAPI = new System.Windows.Forms.Button();
  116. this.SuspendLayout();
  117. //
  118. // label1
  119. //
  120. this.label1.Location = new System.Drawing.Point(10, 9);
  121. this.label1.Name = "label1";
  122. this.label1.Size = new System.Drawing.Size(144, 17);
  123. this.label1.TabIndex = 0;
  124. this.label1.Text = "Devices:";
  125. //
  126. // c_DiscInfo
  127. //
  128. this.c_DiscInfo.Location = new System.Drawing.Point(19, 155);
  129. this.c_DiscInfo.Name = "c_DiscInfo";
  130. this.c_DiscInfo.Size = new System.Drawing.Size(96, 25);
  131. this.c_DiscInfo.TabIndex = 8;
  132. this.c_DiscInfo.Text = "Disc Info";
  133. this.c_DiscInfo.Click += new System.EventHandler(this.DiscInfo_Click);
  134. //
  135. // c_Devices
  136. //
  137. this.c_Devices.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
  138. this.c_Devices.Location = new System.Drawing.Point(10, 26);
  139. this.c_Devices.Name = "c_Devices";
  140. this.c_Devices.Size = new System.Drawing.Size(230, 20);
  141. this.c_Devices.TabIndex = 1;
  142. this.c_Devices.SelectedIndexChanged += new System.EventHandler(this.c_Devices_SelectedIndexChanged);
  143. //
  144. // c_BurnIsoAudio
  145. //
  146. this.c_BurnIsoAudio.Location = new System.Drawing.Point(144, 121);
  147. this.c_BurnIsoAudio.Name = "c_BurnIsoAudio";
  148. this.c_BurnIsoAudio.Size = new System.Drawing.Size(96, 24);
  149. this.c_BurnIsoAudio.TabIndex = 11;
  150. this.c_BurnIsoAudio.Text = "BurnIsoAudio";
  151. this.c_BurnIsoAudio.Click += new System.EventHandler(this.c_BurnIsoAudio_Click);
  152. //
  153. // c_Erase
  154. //
  155. this.c_Erase.Location = new System.Drawing.Point(394, 155);
  156. this.c_Erase.Name = "c_Erase";
  157. this.c_Erase.Size = new System.Drawing.Size(96, 25);
  158. this.c_Erase.TabIndex = 20;
  159. this.c_Erase.Text = "Erase";
  160. this.c_Erase.Click += new System.EventHandler(this.c_Erase_Click);
  161. //
  162. // c_BurnImage
  163. //
  164. this.c_BurnImage.Location = new System.Drawing.Point(144, 155);
  165. this.c_BurnImage.Name = "c_BurnImage";
  166. this.c_BurnImage.Size = new System.Drawing.Size(96, 25);
  167. this.c_BurnImage.TabIndex = 12;
  168. this.c_BurnImage.Text = "Burn Image";
  169. this.c_BurnImage.Click += new System.EventHandler(this.c_BurnImage_Click);
  170. //
  171. // c_Exit
  172. //
  173. this.c_Exit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
  174. this.c_Exit.Location = new System.Drawing.Point(403, 17);
  175. this.c_Exit.Name = "c_Exit";
  176. this.c_Exit.Size = new System.Drawing.Size(96, 25);
  177. this.c_Exit.TabIndex = 21;
  178. this.c_Exit.Text = "Exit";
  179. this.c_Exit.Click += new System.EventHandler(this.c_Exit_Click);
  180. //
  181. // c_DriveInfo
  182. //
  183. this.c_DriveInfo.Location = new System.Drawing.Point(19, 121);
  184. this.c_DriveInfo.Name = "c_DriveInfo";
  185. this.c_DriveInfo.Size = new System.Drawing.Size(96, 24);
  186. this.c_DriveInfo.TabIndex = 7;
  187. this.c_DriveInfo.Text = "Drive Info";
  188. this.c_DriveInfo.Click += new System.EventHandler(this.c_DriveInfo_Click);
  189. //
  190. // c_Eject
  191. //
  192. this.c_Eject.Location = new System.Drawing.Point(269, 121);
  193. this.c_Eject.Name = "c_Eject";
  194. this.c_Eject.Size = new System.Drawing.Size(96, 24);
  195. this.c_Eject.TabIndex = 16;
  196. this.c_Eject.Text = "Eject";
  197. this.c_Eject.Click += new System.EventHandler(this.c_Eject_Click);
  198. //
  199. // c_Load
  200. //
  201. this.c_Load.Location = new System.Drawing.Point(269, 155);
  202. this.c_Load.Name = "c_Load";
  203. this.c_Load.Size = new System.Drawing.Size(96, 25);
  204. this.c_Load.TabIndex = 17;
  205. this.c_Load.Text = "Load";
  206. this.c_Load.Click += new System.EventHandler(this.c_Load_Click);
  207. //
  208. // c_DAE
  209. //
  210. this.c_DAE.Location = new System.Drawing.Point(394, 121);
  211. this.c_DAE.Name = "c_DAE";
  212. this.c_DAE.Size = new System.Drawing.Size(96, 24);
  213. this.c_DAE.TabIndex = 19;
  214. this.c_DAE.Text = "DAE";
  215. this.c_DAE.Click += new System.EventHandler(this.c_DAE_Click);
  216. //
  217. // label2
  218. //
  219. this.label2.Location = new System.Drawing.Point(10, 60);
  220. this.label2.Name = "label2";
  221. this.label2.Size = new System.Drawing.Size(115, 18);
  222. this.label2.TabIndex = 4;
  223. this.label2.Text = "Last drive status:";
  224. //
  225. // c_LastDriveStatus
  226. //
  227. this.c_LastDriveStatus.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
  228. this.c_LastDriveStatus.Location = new System.Drawing.Point(134, 60);
  229. this.c_LastDriveStatus.Name = "c_LastDriveStatus";
  230. this.c_LastDriveStatus.Size = new System.Drawing.Size(202, 18);
  231. this.c_LastDriveStatus.TabIndex = 5;
  232. //
  233. // c_BurnCopy
  234. //
  235. this.c_BurnCopy.Location = new System.Drawing.Point(144, 190);
  236. this.c_BurnCopy.Name = "c_BurnCopy";
  237. this.c_BurnCopy.Size = new System.Drawing.Size(96, 24);
  238. this.c_BurnCopy.TabIndex = 13;
  239. this.c_BurnCopy.Text = "Disc Copy";
  240. this.c_BurnCopy.Click += new System.EventHandler(this.c_BurnCopy_Click);
  241. //
  242. // label3
  243. //
  244. this.label3.Location = new System.Drawing.Point(250, 9);
  245. this.label3.Name = "label3";
  246. this.label3.Size = new System.Drawing.Size(105, 17);
  247. this.label3.TabIndex = 2;
  248. this.label3.Text = "API Version:";
  249. //
  250. // c_APIVersion
  251. //
  252. this.c_APIVersion.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
  253. this.c_APIVersion.Location = new System.Drawing.Point(250, 26);
  254. this.c_APIVersion.Name = "c_APIVersion";
  255. this.c_APIVersion.Size = new System.Drawing.Size(115, 17);
  256. this.c_APIVersion.TabIndex = 3;
  257. //
  258. // c_ImageInfo
  259. //
  260. this.c_ImageInfo.Location = new System.Drawing.Point(19, 190);
  261. this.c_ImageInfo.Name = "c_ImageInfo";
  262. this.c_ImageInfo.Size = new System.Drawing.Size(96, 24);
  263. this.c_ImageInfo.TabIndex = 9;
  264. this.c_ImageInfo.Text = "Image Info";
  265. this.c_ImageInfo.Click += new System.EventHandler(this.c_ImageInfo_Click);
  266. //
  267. // groupBox1
  268. //
  269. this.groupBox1.Location = new System.Drawing.Point(10, 95);
  270. this.groupBox1.Name = "groupBox1";
  271. this.groupBox1.Size = new System.Drawing.Size(115, 163);
  272. this.groupBox1.TabIndex = 6;
  273. this.groupBox1.TabStop = false;
  274. this.groupBox1.Text = "Info";
  275. //
  276. // groupBox2
  277. //
  278. this.groupBox2.Location = new System.Drawing.Point(134, 95);
  279. this.groupBox2.Name = "groupBox2";
  280. this.groupBox2.Size = new System.Drawing.Size(116, 163);
  281. this.groupBox2.TabIndex = 10;
  282. this.groupBox2.TabStop = false;
  283. this.groupBox2.Text = "Burn";
  284. //
  285. // groupBox3
  286. //
  287. this.groupBox3.Location = new System.Drawing.Point(259, 95);
  288. this.groupBox3.Name = "groupBox3";
  289. this.groupBox3.Size = new System.Drawing.Size(115, 163);
  290. this.groupBox3.TabIndex = 15;
  291. this.groupBox3.TabStop = false;
  292. this.groupBox3.Text = "Eject/Load";
  293. //
  294. // groupBox4
  295. //
  296. this.groupBox4.Location = new System.Drawing.Point(384, 95);
  297. this.groupBox4.Name = "groupBox4";
  298. this.groupBox4.Size = new System.Drawing.Size(115, 163);
  299. this.groupBox4.TabIndex = 18;
  300. this.groupBox4.TabStop = false;
  301. this.groupBox4.Text = "Misc";
  302. //
  303. // c_NVAPI
  304. //
  305. this.c_NVAPI.Location = new System.Drawing.Point(144, 224);
  306. this.c_NVAPI.Name = "c_NVAPI";
  307. this.c_NVAPI.Size = new System.Drawing.Size(96, 25);
  308. this.c_NVAPI.TabIndex = 14;
  309. this.c_NVAPI.Text = "Burn NVAPI";
  310. this.c_NVAPI.Click += new System.EventHandler(this.c_NVAPI_Click);
  311. //
  312. // MainForm
  313. //
  314. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  315. this.CancelButton = this.c_Exit;
  316. this.ClientSize = new System.Drawing.Size(531, 288);
  317. this.Controls.Add(this.c_NVAPI);
  318. this.Controls.Add(this.label2);
  319. this.Controls.Add(this.c_DriveInfo);
  320. this.Controls.Add(this.c_Exit);
  321. this.Controls.Add(this.c_Erase);
  322. this.Controls.Add(this.c_BurnIsoAudio);
  323. this.Controls.Add(this.c_Devices);
  324. this.Controls.Add(this.c_DiscInfo);
  325. this.Controls.Add(this.label1);
  326. this.Controls.Add(this.c_BurnImage);
  327. this.Controls.Add(this.c_Eject);
  328. this.Controls.Add(this.c_Load);
  329. this.Controls.Add(this.c_DAE);
  330. this.Controls.Add(this.c_LastDriveStatus);
  331. this.Controls.Add(this.c_BurnCopy);
  332. this.Controls.Add(this.label3);
  333. this.Controls.Add(this.c_APIVersion);
  334. this.Controls.Add(this.c_ImageInfo);
  335. this.Controls.Add(this.groupBox1);
  336. this.Controls.Add(this.groupBox2);
  337. this.Controls.Add(this.groupBox3);
  338. this.Controls.Add(this.groupBox4);
  339. this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
  340. this.MaximizeBox = false;
  341. this.Name = "MainForm";
  342. this.Text = "NeroFiddlesCOM.NET";
  343. this.ResumeLayout(false);
  344. }
  345. #endregion
  346. /// <summary>
  347. /// The main entry point for the application.
  348. /// </summary>
  349. [STAThread]
  350. static void Main()
  351. {
  352. Application.Run(new MainForm());
  353. }
  354. // This is a helper function to get the currently selected drive
  355. // from the combobox as NeroDrive.
  356. //
  357. private NeroDrive GetCurrentlySelectedDrive ()
  358. {
  359. return c_Devices.SelectedIndex == -1? null: (NeroDrive) m_devices.Item (c_Devices.SelectedIndex);
  360. }
  361. private void DiscInfo_Click(object sender, System.EventArgs e)
  362. {
  363. // Show the disc info form.
  364. //
  365. DiscInfoForm frm = new DiscInfoForm (GetCurrentlySelectedDrive (), m_nero);
  366. frm.ShowDialog (this);
  367. }
  368. private void c_BurnIsoAudio_Click(object sender, System.EventArgs e)
  369. {
  370. // Show the burn iso audio form.
  371. //
  372. BurnIsoAudioForm frm = new BurnIsoAudioForm (GetCurrentlySelectedDrive (), m_nero);
  373. frm.ShowDialog (this);
  374. }
  375. private void c_Erase_Click(object sender, System.EventArgs e)
  376. {
  377. // Show the erase form.
  378. //
  379. EraseForm frm = new EraseForm (GetCurrentlySelectedDrive ());
  380. frm.ShowDialog (this);
  381. }
  382. private void c_BurnImage_Click(object sender, System.EventArgs e)
  383. {
  384. // Show the burn image form.
  385. //
  386. BurnImageForm frm = new BurnImageForm (GetCurrentlySelectedDrive (), m_nero);
  387. frm.ShowDialog (this);
  388. }
  389. private void c_Exit_Click(object sender, System.EventArgs e)
  390. {
  391. this.Close ();
  392. }
  393. private void c_DriveInfo_Click(object sender, System.EventArgs e)
  394. {
  395. // Show drive info form.
  396. //
  397. DriveInfoForm frm = new DriveInfoForm (m_nero, GetCurrentlySelectedDrive ());
  398. frm.ShowDialog (this);
  399. }
  400. private void c_Eject_Click(object sender, System.EventArgs e)
  401. {
  402. // Eject the current drive.
  403. //
  404. NeroDrive drive = GetCurrentlySelectedDrive ();
  405. if (drive != null)
  406. {
  407. drive.EjectCD ();
  408. }
  409. }
  410. private void c_Load_Click(object sender, System.EventArgs e)
  411. {
  412. // Load the current drive.
  413. //
  414. NeroDrive drive = GetCurrentlySelectedDrive ();
  415. if (drive != null)
  416. {
  417. drive.LoadCD ();
  418. }
  419. }
  420. private void c_DAE_Click(object sender, System.EventArgs e)
  421. {
  422. // Show the DAE form.
  423. //
  424. DAEForm frm = new DAEForm (GetCurrentlySelectedDrive ());
  425. frm.ShowDialog (this);
  426. }
  427. private void c_Devices_SelectedIndexChanged(object sender, System.EventArgs e)
  428. {
  429. // When selected index of the drive combobox is changed, let's
  430. // disable the status callback on that drive and enable it on
  431. // the new one.
  432. //
  433. if (m_lastDrive != null)
  434. {
  435. m_lastDrive.EnableStatusCallback (NERO_DRIVESTATUS_TYPE.NDT_DISC_CHANGE, false);
  436. m_lastDrive.EnableStatusCallback (NERO_DRIVESTATUS_TYPE.NDT_IN_USE_CHANGE, false);
  437. m_lastDrive.OnDriveStatusChanged -= m_evDriveStatusChanged;
  438. }
  439. m_lastDrive = GetCurrentlySelectedDrive ();
  440. if (m_lastDrive != null)
  441. {
  442. c_LastDriveStatus.Text = "<none>";
  443. m_evDriveStatusChanged = new _INeroDriveEvents_OnDriveStatusChangedEventHandler(m_lastDrive_OnDriveStatusChanged);
  444. m_lastDrive.OnDriveStatusChanged += m_evDriveStatusChanged;
  445. m_lastDrive.EnableStatusCallback (NERO_DRIVESTATUS_TYPE.NDT_DISC_CHANGE, true);
  446. m_lastDrive.EnableStatusCallback (NERO_DRIVESTATUS_TYPE.NDT_IN_USE_CHANGE, true);
  447. }
  448. }
  449. private void m_lastDrive_OnDriveStatusChanged(NERO_DRIVESTATUS_RESULT driveStatus)
  450. {
  451. // When the status is changed on the currently selected drive,
  452. // let's display it.
  453. //
  454. string sStatus;
  455. switch (driveStatus)
  456. {
  457. case NERO_DRIVESTATUS_RESULT.NDR_DISC_INSERTED:
  458. sStatus = "Disc inserted";
  459. break;
  460. case NERO_DRIVESTATUS_RESULT.NDR_DISC_REMOVED:
  461. sStatus = "Disc removed";
  462. break;
  463. case NERO_DRIVESTATUS_RESULT.NDR_DRIVE_IN_USE:
  464. sStatus = "Drive in use";
  465. break;
  466. case NERO_DRIVESTATUS_RESULT.NDR_DRIVE_NOT_IN_USE:
  467. sStatus = "Drive not in use";
  468. break;
  469. default:
  470. sStatus = "Unknown status";
  471. break;
  472. }
  473. c_LastDriveStatus.Text = sStatus;
  474. }
  475. private void c_BurnCopy_Click(object sender, System.EventArgs e)
  476. {
  477. // Show the disc copy form.
  478. //
  479. BurnDiscCopyForm frm = new BurnDiscCopyForm (m_nero, GetCurrentlySelectedDrive ());
  480. frm.ShowDialog (this);
  481. }
  482. private void c_ImageInfo_Click(object sender, System.EventArgs e)
  483. {
  484. // Show the disc info form but initialize it with a different
  485. // constructor. But first, get the user to select an image file.
  486. //
  487. OpenFileDialog dlg = new OpenFileDialog ();
  488. dlg.CheckFileExists = true;
  489. dlg.CheckPathExists = true;
  490. dlg.DefaultExt = ".nrg";
  491. dlg.Filter = "All image files|*.nrg;*.iso|NRG files (*.nrg)|*.nrg|ISO files (*.iso)|*.iso|All files (*.*)|*.*";
  492. if (DialogResult.OK == dlg.ShowDialog (this))
  493. {
  494. DiscInfoForm frm = new DiscInfoForm (dlg.FileName, m_nero);
  495. frm.ShowDialog (this);
  496. }
  497. }
  498. private void c_NVAPI_Click(object sender, System.EventArgs e)
  499. {
  500. // Show the form that allows to burn a NeroVisionAPI XML
  501. // project.
  502. //
  503. NVAPIForm frm = new NVAPIForm (GetCurrentlySelectedDrive (), m_nero);
  504. frm.ShowDialog (this);
  505. }
  506. }
  507. }