bool IMessageFilter.PreFilterMessage(ref Message m)
        {
            TwainCommand cmd = tw.PassMessage(ref m);

            if (cmd == TwainCommand.Not)
            {
                return(false);
            }

            switch (cmd)
            {
            case TwainCommand.CloseRequest:
            {
                EndingScan();
                tw.CloseSrc();
                break;
            }

            case TwainCommand.CloseOk:
            {
                EndingScan();
                tw.CloseSrc();
                break;
            }

            case TwainCommand.DeviceEvent:
            {
                break;
            }

            case TwainCommand.TransferReady:
            {
                int ImgNumber = 0;

                ArrayList pics = tw.TransferPictures();
                EndingScan();
                tw.CloseSrc();
                picnumber++;

                if (!this.mnShowImages.Checked)
                {
                    if (oBatch.Find(_CompanyID, _CustomerID, _Teacher))
                    {
                        ImgNumber = oBatch._ImageFinal;
                    }

                    oBatch._ImageInitial = 1;
                    oBatch.CompanyID     = _CompanyID;
                    oBatch.CustomerID    = _CustomerID;
                }



                int i;
                for (i = 0; i < pics.Count; i++)
                {
                    IntPtr img = (IntPtr)pics[i];

                    if (this.mnShowImages.Checked)
                    {
                        PicForm newpic = new PicForm(img);
                        newpic.MdiParent = this;
                        //Panel.Controls.Add((Control)newpic);

                        int picnum = ImgNumber + i + 1;
                        //newpic.Text = "ScanPass" + picnumber.ToString() + "_Pic" + picnum.ToString();
                        newpic.Text = "Order" + picnumber.ToString() + "_Pic" + picnum.ToString();
                        newpic.Show();
                    }
                    else
                    {
                        bmprect = new Rectangle(0, 0, 0, 0);
                        bmpptr  = GlobalLock(img);
                        pixptr  = GetPixelInfo(bmpptr);
                        int picnum = ImgNumber + i + 1;

                        //Gdip.SavePicToFile("ScanPass" + picnum.ToString() + ".tiff", bmpptr, pixptr);
                        Gdip.SavePicToFile("Images/Order-" + _CompanyID.PadLeft(2, '0') + _CustomerID.PadLeft(4, '0') + _Batch.PadLeft(3, '0') + picnum.ToString().PadLeft(4, '0') + ".tif", bmpptr, pixptr);
                    }
                }
                if (!this.mnShowImages.Checked)
                {
                    //Save Batch Here

                    oBatch._ImageFinal    = ImgNumber + i;
                    oBatch._NumberImages += i;
                    oBatch.Teacher        = _Teacher;
                    oBatch.Save();
                }

                break;
            }

            default:
            {
                return(false);
            }
            }

            return(true);
        }
Beispiel #2
0
        bool IMessageFilter.PreFilterMessage(ref Message m)
        {
            string       sFileImage = "";
            TwainCommand cmd        = tw.PassMessage(ref m);

            if (cmd == TwainCommand.Null)
            {
                //EndingScan();
                return(false);
            }
            if (cmd == TwainCommand.Not)
            {
                return(false);
            }

            switch (cmd)
            {
            case TwainCommand.CloseRequest:
                EndingScan();
                tw.CloseSrc();
                break;

            case TwainCommand.CloseOk:
                EndingScan();
                tw.CloseSrc();
                break;

            case TwainCommand.DeviceEvent:
                break;

            case TwainCommand.TransferReady:
                IntPtr    img;
                ArrayList pics = tw.TransferPictures();
                EndingScan();
                tw.CloseSrc();
                for (int i = 0; i < pics.Count; i++)
                {
                    img = (IntPtr)pics[i];
                    PicForm newpic = new PicForm(img);
                    int     picnum = i + 1;
                }
                if (pics.Count > 0)
                {
                    sFileImage = getFileImage().Trim();

                    try
                    {
                        if (!Directory.Exists(ImagePath))
                        {
                            DirectoryInfo di = Directory.CreateDirectory(ImagePath);
                        }

                        string filepath = ImagePath + @"\" + sFileImage.Trim();

                        Gdip.SaveDIBAsFile(filepath, PicForm.bmpptr, PicForm.pixptr);

                        Image picForCheck = Image.FromFile(filepath);

                        if (picForCheck != null)
                        {
                            System.IO.FileInfo file = new System.IO.FileInfo(filepath);
                            CheckAndSaveImage(picForCheck, file);
                        }
                    }
                    catch { }
                }
                else
                {
                    MessageBox.Show("Ошибка сканирования!");
                }
                break;
            }

            return(true);
        }