Ejemplo n.º 1
0
        public TwCapability(TwCap cap, short sval)
        {
            Cap     = (short)cap;
            ConType = (short)TwOn.One;
            Handle  = Twain.GlobalAlloc(0x42, 6);
            IntPtr pv = Twain.GlobalLock(Handle);

            Marshal.WriteInt16(pv, 0, (short)TwType.Int16);
            Marshal.WriteInt32(pv, 2, sval);
            Twain.GlobalUnlock(Handle);
        }
Ejemplo n.º 2
0
        bool IMessageFilter.PreFilterMessage(ref Message m)
        {
            if (m.HWnd != this.Handle)
            {
                return(false);
            }
            TwainCommand cmd = tw.PassMessage(ref m);

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

            switch (cmd)
            {
            case TwainCommand.Failure:
            case TwainCommand.CloseRequest:
            case TwainCommand.CloseOk:
            {
                EndingScan();
                tw.CloseSrc();
                OnDialogClose(currentScanType, callback);
                break;
            }

            case TwainCommand.DeviceEvent:
            {
                break;
            }

            case TwainCommand.TransferReady:
            {
                ArrayList pics = tw.TransferPictures();
                EndingScan();
                tw.CloseSrc();
                if (pics != null)
                {
                    List <Bitmap> bitmaps = new List <Bitmap>();
                    for (int n = 0; n < pics.Count; n++)
                    {
                        IntPtr img = (IntPtr)pics[n];
                        try
                        {
                            IntPtr bmpptr = Twain.GlobalLock(img);
                            Bitmap b      = null;
                            try
                            {
                                b = DibToImage.WithScan0(bmpptr);
                            }
                            catch { }
                            if (b != null)
                            {
                                bitmaps.Add(b);
                            }
                        }
                        catch (Exception ex)
                        {
                            Tiff.LibTiffHelper.WriteToLog(ex);
                        }
                        finally
                        {
                            Twain.GlobalFree(img);
                        }
                        pics[n] = null;
                    }
                    if (bitmaps.Count > 0)
                    {
                        OnImagesReceived(bitmaps, currentScanType, callback);
                    }
                }
                break;
            }
            }
            return(true);
        }