/////////////////////////////////////////////////////////////////////////////// // Public Methods... /////////////////////////////////////////////////////////////////////////////// #region Public Methods... /// <summary> /// Initialize interesting stuff... /// </summary> /// <param name="a_displaycallback">display callback function or null</param> /// <param name="a_stopnotification">notification that we've stopped monitoring</param> /// <param name="m_confirmscan">confirmation function or null</param> /// <param name="a_blNoDevices">true if we have no devices</param> public Scanner ( ResourceManager a_resourcemanager, TwainLocalScannerDevice.DisplayCallback a_displaycallback, TwainLocalScannerDevice.ConfirmScan a_confirmscan, float a_fConfirmScanScale, out bool a_blNoDevices ) { bool blUseSane; string szExecutablePath = null; string szReadFolder = null; string szWriteFolder = null; // Init stuff... a_blNoDevices = true; m_resourcemanager = a_resourcemanager; m_displaycallback = a_displaycallback; m_confirmscan = a_confirmscan; // Get the config and command line argument values... szExecutablePath = Config.Get("executablePath", ""); szReadFolder = Config.Get("readFolder", ""); szWriteFolder = Config.Get("writeFolder", ""); blUseSane = (Config.Get("usesane", null) != null); // Sanity check... if (!FindTwainDirectOnTwain(szExecutablePath, blUseSane)) { if (blUseSane) { Log.Error("Unable to locate TwainDirect.OnSane.exe"); throw new Exception("Unable to locate TwainDirect.OnSane.exe"); } else { Log.Error("Unable to locate TwainDirect.OnTwain.exe"); throw new Exception("Unable to locate TwainDirect.OnTwain.exe"); } } // Get our TWAIN Local interface... m_twainlocalscannerdevice = new TwainLocalScannerDevice(a_confirmscan, a_fConfirmScanScale, Display, true); if (m_twainlocalscannerdevice == null) { Log.Error("Failed to create TwainLocalScanner"); throw new Exception("Failed to create TwainLocalScanner"); } // Do we have any devices? a_blNoDevices = RefreshDeviceList(); }
/////////////////////////////////////////////////////////////////////////////// // Public Methods... /////////////////////////////////////////////////////////////////////////////// #region Public Methods... /// <summary> /// Init stuff... /// </summary> /// <param name="a_resourcemanager"></param> public FormSetup ( FormMain a_formmain, ResourceManager a_resourcemanager, Scanner a_scanner, TwainLocalScannerDevice.DisplayCallback a_displaycallback, bool a_blConfirmScan ) { // Init the component... InitializeComponent(); this.MinimizeBox = false; this.MaximizeBox = false; Config.ElevateButton(m_buttonManageTwainLocal.Handle); m_checkboxStartNpm.Checked = (Config.Get("startNpm", "true") == "true"); this.FormClosing += new FormClosingEventHandler(FormSetup_FormClosing); m_displaycallback = a_displaycallback; // Populate the cloud api root combobox... int ii = 0; CloudManager.CloudInfo cloudinfo; m_comboboxCloudApiRoot.Items.Clear(); for (cloudinfo = CloudManager.GetCloudInfo(ii); cloudinfo != null; cloudinfo = CloudManager.GetCloudInfo(++ii)) { m_comboboxCloudApiRoot.Items.Add(cloudinfo.szName); } if (m_comboboxCloudApiRoot.Items.Count > 0) { m_comboboxCloudApiRoot.Text = (string)m_comboboxCloudApiRoot.Items[0]; } // Remember stuff... m_formmain = a_formmain; m_resourcemanager = a_resourcemanager; m_scanner = a_scanner; m_checkboxConfirmation.Checked = a_blConfirmScan; // Localize... this.Text = Config.GetResource(m_resourcemanager, "strFormMainTitle"); // TWAIN Direct: TWAIN Bridge m_buttonManageTwainLocal.Text = Config.GetResource(m_resourcemanager, "strButtonTwainLocalManagerEllipsis"); // Manage Local... m_buttonCloudRegister.Text = Config.GetResource(m_resourcemanager, "strButtonCloudRegisterEllipsis"); // Register Cloud... m_buttonManageCloud.Text = Config.GetResource(m_resourcemanager, "strButtonManageCloudEllipsis"); // Manage Cloud... m_buttonRegister.Text = Config.GetResource(m_resourcemanager, "strButtonRegisterEllipsis"); // Register... m_checkboxRunOnLogin.Text = Config.GetResource(m_resourcemanager, "strCheckboxRunOnLogin"); // Run on login m_labelCurrentDriver.Text = Config.GetResource(m_resourcemanager, "strLabelCurrentDriver"); // Current Driver: m_labelCurrentNote.Text = Config.GetResource(m_resourcemanager, "strLabelCurrentNote"); // Current Note: // Set stuff... m_textboxCurrentDriver.Text = m_formmain.GetTwainLocalTy(); m_textboxCurrentNote.Text = m_formmain.GetTwainLocalNote(); LoadRegisteredCloudDevices(); // Are we registered for autorun? string szValueName = null; string szCommand = ""; RegistryKey registrykeyRun; // Check the local machine (needed for legacy)... registrykeyRun = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); foreach (string sz in registrykeyRun.GetValueNames()) { string szValue = Convert.ToString(registrykeyRun.GetValue(sz)); if (szValue.ToLowerInvariant().Contains("twaindirect.scanner.exe")) { szValueName = sz; szCommand = szValue; break; } } // Check the local user... if (string.IsNullOrEmpty(szValueName)) { registrykeyRun = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); foreach (string sz in registrykeyRun.GetValueNames()) { string szValue = Convert.ToString(registrykeyRun.GetValue(sz)); if (szValue.ToLowerInvariant().Contains("twaindirect.scanner.exe")) { szValueName = sz; szCommand = szValue; break; } } } // Looks like we're set... if (!string.IsNullOrEmpty(szCommand)) { m_checkboxRunOnLogin.Checked = true; if (szCommand.Contains("startmonitoring=true")) { m_checkboxAdvertise.Checked = true; } if (szCommand.Contains("confirmscan=true")) { m_checkboxConfirmation.Checked = true; } } // Okay, we can let this happen now... m_blSkipUpdatingTheRegistry = false; }