public FormSetup(ref TWAINCSToolkit a_twaincstoolkit, string a_szProductDirectory) { TWAIN.STS sts; string szStatus; string szCapability; string szUsrUiSettings; // Init stuff... InitializeComponent(); // More init stuff... this.FormClosing += new FormClosingEventHandler(FormSetup_FormClosing); // Init more stuff (the order matters). ApplicationData means the following: // Windows: C:\Users\USERNAME\AppData\Roaming (or C:\Documents and Settings\USERNAME\Application Data on XP) // Linux: /home/USERNAME/.config (or /root/.config for superuser) // Mac OS X: /Users/USERNAME/.config (or /var/root/.config for superuser) m_twaincstoolkit = a_twaincstoolkit; m_szTwainscanFolder = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "twain"), "twaincsscan"); m_szSettingsFolder = Path.Combine(m_szTwainscanFolder, "settings"); m_szSettingsFolder = Path.Combine(m_szSettingsFolder, a_szProductDirectory); if (!Directory.Exists(m_szTwainscanFolder)) { try { Directory.CreateDirectory(m_szTwainscanFolder); } catch (Exception exception) { TWAINWorkingGroup.Log.Error("exception - " + exception.Message); m_szTwainscanFolder = Directory.GetCurrentDirectory(); } } // Restore values... m_textboxFolder.Text = RestoreFolder(); m_textboxUseUiSettings.Text = ""; // Make sure we prime the value... m_twaincstoolkit.SetImagePath(m_textboxFolder.Text, 0); // Check for support of Custom DS Data... szStatus = ""; szCapability = "CAP_CUSTOMDSDATA"; sts = m_twaincstoolkit.Send("DG_CONTROL", "DAT_CAPABILITY", "MSG_GETCURRENT", ref szCapability, ref szStatus); if ((sts != TWAIN.STS.SUCCESS) || !szCapability.EndsWith(",1")) { m_labelUseUiSettings.Enabled = false; m_textboxUseUiSettings.Enabled = false; m_buttonSaveUiSettings.Enabled = false; m_buttonUseUiSettings.Enabled = false; } // Restore the last saved snapshot... else { m_textboxUseUiSettings.Text = RestoreSetting(); if (m_textboxUseUiSettings.Text != "") { szUsrUiSettings = Path.Combine(m_szSettingsFolder, m_textboxUseUiSettings.Text); if (File.Exists(szUsrUiSettings)) { m_twaincstoolkit.RestoreSnapshot(szUsrUiSettings); } else { m_textboxUseUiSettings.Text = ""; } } } }