/// <summary> /// Select and open a TWAIN driver... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_buttonOpen_Click(object sender, EventArgs e) { string szIdentity; string szDefault = ""; string szStatus; List <string> lszIdentity = new List <string>(); FormSelect formselect; DialogResult dialogresult; TWAIN.STS sts; TWAIN.TW_CAPABILITY twcapability; TWAIN.TW_IDENTITY twidentity = default(TWAIN.TW_IDENTITY); // Get the default driver... m_intptrHwnd = this.Handle; sts = m_twain.DatParent(TWAIN.DG.CONTROL, TWAIN.MSG.OPENDSM, ref m_intptrHwnd); if (sts != TWAIN.STS.SUCCESS) { MessageBox.Show("OPENDSM failed..."); return; } // Get the default driver... sts = m_twain.DatIdentity(TWAIN.DG.CONTROL, TWAIN.MSG.GETDEFAULT, ref twidentity); if (sts == TWAIN.STS.SUCCESS) { szDefault = m_twain.IdentityToCsv(twidentity); } // Enumerate the drivers... for (sts = m_twain.DatIdentity(TWAIN.DG.CONTROL, TWAIN.MSG.GETFIRST, ref twidentity); sts != TWAIN.STS.ENDOFLIST; sts = m_twain.DatIdentity(TWAIN.DG.CONTROL, TWAIN.MSG.GETNEXT, ref twidentity)) { lszIdentity.Add(m_twain.IdentityToCsv(twidentity)); } // Ruh-roh... if (lszIdentity.Count == 0) { MessageBox.Show("There are no TWAIN drivers installed on this system..."); return; } // Instantiate our form... formselect = new FormSelect(lszIdentity, szDefault); formselect.StartPosition = FormStartPosition.CenterParent; dialogresult = formselect.ShowDialog(this); if (dialogresult != System.Windows.Forms.DialogResult.OK) { m_blExit = true; return; } // Get all the identities... szIdentity = formselect.GetSelectedDriver(); if (szIdentity == null) { m_blExit = true; return; } // Get the selected identity... m_blExit = true; foreach (string sz in lszIdentity) { if (sz.Contains(szIdentity)) { m_blExit = false; szIdentity = sz; break; } } if (m_blExit) { return; } // Make it the default, we don't care if this succeeds... twidentity = default(TWAIN.TW_IDENTITY); m_twain.CsvToIdentity(ref twidentity, szIdentity); m_twain.DatIdentity(TWAIN.DG.CONTROL, TWAIN.MSG.SET, ref twidentity); // Open it... sts = m_twain.DatIdentity(TWAIN.DG.CONTROL, TWAIN.MSG.OPENDS, ref twidentity); if (sts != TWAIN.STS.SUCCESS) { MessageBox.Show("Unable to open scanner (it is turned on and plugged in?)"); m_blExit = true; return; } // Update the main form title... this.Text = "TWAIN C# Scan (" + twidentity.ProductName.Get() + ")"; // Strip off unsafe chars. Sadly, mono let's us down here... m_szProductDirectory = CSV.Parse(szIdentity)[11]; foreach (char c in new char [41] { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0A', '\x0B', '\x0C', '\x0D', '\x0E', '\x0F', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1A', '\x1B', '\x1C', '\x1D', '\x1E', '\x1F', '\x22', '\x3C', '\x3E', '\x7C', ':', '*', '?', '\\', '/' } ) { m_szProductDirectory = m_szProductDirectory.Replace(c, '_'); } // We're doing memory transfers... szStatus = ""; twcapability = default(TWAIN.TW_CAPABILITY); m_twain.CsvToCapability(ref twcapability, ref szStatus, "ICAP_XFERMECH,TWON_ONEVALUE,TWTY_UINT16,TWSX_MEMORY"); sts = m_twain.DatCapability(TWAIN.DG.CONTROL, TWAIN.MSG.SET, ref twcapability); if (sts != TWAIN.STS.SUCCESS) { m_blExit = true; return; } // Decide whether or not to show the driver's window messages... szStatus = ""; twcapability = default(TWAIN.TW_CAPABILITY); m_twain.CsvToCapability(ref twcapability, ref szStatus, "CAP_INDICATORS,TWON_ONEVALUE,TWTY_BOOL," + (m_blIndicators ? "TRUE" : "FALSE")); sts = m_twain.DatCapability(TWAIN.DG.CONTROL, TWAIN.MSG.SET, ref twcapability); if (sts != TWAIN.STS.SUCCESS) { m_blExit = true; return; } // New state... SetButtons(EBUTTONSTATE.OPEN); // Create the setup form... m_formsetup = new FormSetup(this, ref m_twain, m_szProductDirectory); }
/// <summary> /// Select and open a TWAIN driver... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_buttonOpen_Click(object sender, EventArgs e) { string szIdentity; string szCapability; string szDefault; string szStatus; string[] aszIdentity; FormSelect formselect; DialogResult dialogresult; TWAIN.STS sts; // Find out which driver we're using... szDefault = ""; aszIdentity = m_twaincstoolkit.GetDrivers(ref szDefault); if (aszIdentity == null) { MessageBox.Show("There are no TWAIN drivers installed on this system..."); return; } // Instantiate our form... formselect = new FormSelect(aszIdentity, szDefault); formselect.StartPosition = FormStartPosition.CenterParent; dialogresult = formselect.ShowDialog(this); if (dialogresult != System.Windows.Forms.DialogResult.OK) { m_blExit = true; return; } // Get all the identities... szIdentity = formselect.GetSelectedDriver(); if (szIdentity == null) { m_blExit = true; return; } // Get the selected identity... m_blExit = true; foreach (string sz in aszIdentity) { if (sz.Contains(szIdentity)) { m_blExit = false; szIdentity = sz; break; } } if (m_blExit) { return; } // Make it the default, we don't care if this succeeds... szStatus = ""; m_twaincstoolkit.Send("DG_CONTROL", "DAT_IDENTITY", "MSG_SET", ref szIdentity, ref szStatus); // Open it... szStatus = ""; sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_IDENTITY", "MSG_OPENDS", ref szIdentity, ref szStatus); if (sts != TWAIN.STS.SUCCESS) { MessageBox.Show("Unable to open scanner (it is turned on and plugged in?)"); m_blExit = true; return; } // Strip off unsafe chars. Sadly, mono let's us down here... m_szProductDirectory = TWAINCSToolkit.CsvParse(szIdentity)[11]; foreach (char c in new char [41] { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0A', '\x0B', '\x0C', '\x0D', '\x0E', '\x0F', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1A', '\x1B', '\x1C', '\x1D', '\x1E', '\x1F', '\x22', '\x3C', '\x3E', '\x7C', ':', '*', '?', '\\', '/' } ) { m_szProductDirectory = m_szProductDirectory.Replace(c, '_'); } // We're doing memory transfers (TWSX_MEMORY == 2)... szStatus = ""; szCapability = "ICAP_XFERMECH,TWON_ONEVALUE,TWTY_UINT16,2"; sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_CAPABILITY", "MSG_SET", ref szCapability, ref szStatus); if (sts != TWAIN.STS.SUCCESS) { m_blExit = true; return; } // Decide whether or not to show the driver's window messages... szStatus = ""; szCapability = "CAP_INDICATORS,TWON_ONEVALUE,TWTY_BOOL," + (m_blIndicators?"1":"0"); sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_CAPABILITY", "MSG_SET", ref szCapability, ref szStatus); if (sts != TWAIN.STS.SUCCESS) { m_blExit = true; return; } // New state... SetButtons(EBUTTONSTATE.OPEN); // Create the setup form... m_formsetup = new FormSetup(ref m_twaincstoolkit, m_szProductDirectory); }
/// <summary> /// Select and open a TWAIN driver... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_buttonOpen_Click(object sender, EventArgs e) { string szIdentity; string szCapability; string szDefault; string szStatus; string[] aszIdentity; FormSelect formselect; DialogResult dialogresult; TWAINCSToolkit.STS sts; // Find out which driver we're using... szDefault = ""; aszIdentity = m_twaincstoolkit.GetDrivers(ref szDefault); if (aszIdentity == null) { MessageBox.Show("There are no TWAIN drivers installed on this system..."); return; } // Instantiate our form... formselect = new FormSelect(aszIdentity, szDefault); formselect.StartPosition = FormStartPosition.CenterParent; dialogresult = formselect.ShowDialog(this); if (dialogresult != System.Windows.Forms.DialogResult.OK) { m_blExit = true; return; } // Get all the identities... szIdentity = formselect.GetSelectedDriver(); if (szIdentity == null) { m_blExit = true; return; } // Get the selected identity... m_blExit = true; foreach (string sz in aszIdentity) { if (sz.Contains(szIdentity)) { m_blExit = false; szIdentity = sz; break; } } if (m_blExit) { return; } // Make it the default, we don't care if this succeeds... szStatus = ""; m_twaincstoolkit.Send("DG_CONTROL", "DAT_IDENTITY", "MSG_SET", ref szIdentity, ref szStatus); // Open it... szStatus = ""; sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_IDENTITY", "MSG_OPENDS", ref szIdentity, ref szStatus); if (sts != TWAINCSToolkit.STS.SUCCESS) { MessageBox.Show("Unable to open scanner (it is turned on and plugged in?)"); m_blExit = true; return; } // Strip off unsafe chars. Sadly, mono let's us down here... m_szProductDirectory = TWAINCSToolkit.CsvParse(szIdentity)[11]; foreach (char c in new char [41] { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0A', '\x0B', '\x0C', '\x0D', '\x0E', '\x0F', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1A', '\x1B', '\x1C', '\x1D', '\x1E', '\x1F', '\x22', '\x3C', '\x3E', '\x7C', ':', '*', '?', '\\', '/' } ) { m_szProductDirectory = m_szProductDirectory.Replace(c, '_'); } // We're doing memory transfers (TWSX_MEMORY == 2)... szStatus = ""; szCapability = "ICAP_XFERMECH,TWON_ONEVALUE,TWTY_UINT16,2"; sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_CAPABILITY", "MSG_SET", ref szCapability, ref szStatus); if (sts != TWAINCSToolkit.STS.SUCCESS) { m_blExit = true; return; } // Decide whether or not to show the driver's window messages... szStatus = ""; szCapability = "CAP_INDICATORS,TWON_ONEVALUE,TWTY_BOOL," + (m_blIndicators?"1":"0"); sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_CAPABILITY", "MSG_SET", ref szCapability, ref szStatus); if (sts != TWAINCSToolkit.STS.SUCCESS) { m_blExit = true; return; } // New state... SetButtons(EBUTTONSTATE.OPEN); // Create the setup form... m_formsetup = new FormSetup(ref m_twaincstoolkit, m_szProductDirectory); }