Skip to main content
Kofax

Sample C# Custom Panel

3023142

Question / Problem: 

Is there a sample Custom Panel written in C# available?

Answer / Solution: 

Here is a C# Custom Panel that runs in Scan. This Panel traps both the BatchClosing and ContentChanged events and performs some basic functions for each case. You will need to add references for: Kofax.Capture.CaptureModule.dll and Kofax.SDK.CaptureInfo.dll. Also note that the CScanPanel class inherits from UserControl.

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Kofax.Capture.CaptureModule.InteropServices;
using Kofax.Capture.CaptureModule;
using Kofax.SDK;
using System.Runtime.InteropServices;
using System.IO;

namespace CScanPanel
{
    [Guid("F4497A34-3DC3-4C2D-8DF7-869D3D3DA669")]
    [ProgId("CScanPanel.Panel")]
    public class CScanPanel : UserControl
    {
        private Kofax.Capture.CaptureModule.InteropServices.Application m_oApp;

        public Kofax.Capture.CaptureModule.InteropServices.Application Application 
        { 
            set
            {
                m_oApp = value;               
            }
        }

        public void ActionEvent(int EventNumber, object Argument, out int Cancel)
        {
            try
            {
                switch ((KfxOcxEvent)EventNumber)
                {
                                      
                    case KfxOcxEvent.KfxOcxEventBatchClosing:
                        using (StreamWriter sw = new StreamWriter(@"C:\000_LogTest\scanLog.txt", true))
                        {
                            foreach (Document oDoc in m_oApp.ActiveBatch.Documents)
                            {
                                int ctr = 0;
                                for (ctr = 1; ctr <= oDoc.Pages.Count; ctr++)
                                {
                                    sw.WriteLine("Page Coll Subscript: " + ctr.ToString());
                                    sw.WriteLine("ImportOrderNumber:   " + oDoc.Pages[ctr].ImportOrderNumber.ToString());
                                    sw.WriteLine("OrderNumber:         " + oDoc.Pages[ctr].OrderNumber.ToString());
                                    sw.WriteLine("-------------------------------------------------");                                    
                                }
                                ctr = 1;
                                sw.WriteLine("************************************************");
                                foreach (Page oPage in oDoc.Pages)
                                {
                                    sw.WriteLine("Page Coll Subscript: " + ctr.ToString());
                                    sw.WriteLine("ImportOrderNumber:   " + oPage.ImportOrderNumber.ToString());
                                    sw.WriteLine("OrderNumber:         " + oPage.OrderNumber.ToString());
                                    sw.WriteLine("-------------------------------------------------");
                                    ctr++;
                                }
                            }
                        }
                        break;

                    case ((KfxOcxEvent)KfxOcxEvent.KfxOcxEventContentChanged):
                        BatchChanges oChanges = (BatchChanges)Argument;
                        if (oChanges.PagesDeleted.Count > 0)
                        {
                            foreach (Page pg in oChanges.PagesDeleted)
                            {
                                string docID = "{Document ID}";
                                m_oApp.TranslateAscentCaptureValues(ref docID);
                                MessageBox.Show("docID = " + docID);
                            }
                            foreach (Document doc in oChanges.DocumentsDeleted)
                            {
                                MessageBox.Show("Document ID = " + doc.ID.ToString());
                            }
                        }                       
                        break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            Cancel = 0;
        }
    }
}

 

Applies to:  

Product Version
Kofax Capture ALL

 

 

  • Was this article helpful?