zoukankan      html  css  js  c++  java
  • wince定时拍照功能(转)

    转自:http://blog.csdn.net/xyz_lmn/archive/2010/02/26/5329308.aspx 

      CameraCaptureDialog 后必须手动按“确定”然后“退出”,才能拍照, 怎样使用 CameraCaptureDialog 实现自动、定时拍照呢?可以使用System.Windows.Forms.Timer 、SendMessage方法实现,Timer方法必须在主线程中。

    实现代码:

     public partial class Form1 : Form
        {
            /*
            [DllImport("CoreDll")]
            public static extern IntPtr FindWindow(
                              string lpClassName,  // class name
                              string lpWindowName  // window name
                              );
            */
            [DllImport("CoreDll")]
            public static extern IntPtr SendMessage(
                  IntPtr hWnd,      // handle to destination window
                  uint Msg,     // message
                  uint wParam,  // first message parameter
                  uint lParam   // second message parameter
                  );

            [DllImport("CoreDll")]
            public static extern IntPtr GetForegroundWindow();

            System.Threading.Timer tmr;

            public Form1()
            {
                InitializeComponent();

            }

            private void menuItem2_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }

            private void menuItem1_Click(object sender, EventArgs e)
            {

                CameraCaptureDialog ccd = new CameraCaptureDialog();
                ccd.Mode = CameraCaptureMode.Still;

                object someState = new object();
                TimerCallback tmrClbck = new TimerCallback(this.atTimer1);
                tmr = new System.Threading.Timer(tmrClbck, someState, 10* 1000, -1);
                
                if (ccd.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = new Bitmap(ccd.FileName);
                    //MessageBox.Show("OK");
                }
            }


            private void atTimer1(object state)
            {
                Debug.WriteLine("Timer 1 On");
                IntPtr hwnd = GetForegroundWindow();
                SendMessage(hwnd, 0x100, 0x0d, 0xf20001);

                object someState = new object();
                TimerCallback tmrClbck = new TimerCallback(this.atTimer2);
                tmr = new System.Threading.Timer(tmrClbck, someState, 2 * 1000, -1);
                //tmr.Dispose();
            }

            private void atTimer2(object state)
            {
                Debug.WriteLine("Timer 2 On");
                IntPtr hwnd = GetForegroundWindow();
                SendMessage(hwnd, 0x101, 0x1b, 0xc0310001);
                tmr.Dispose();
            }
        }

    程序中发送的 message,不同的 device 不同,需要用 Remote Spy 去抓

    http://www.christec.co.nz/blog/archives/208 

  • 相关阅读:
    字符串_操作
    Error: Cannot find module 'webpack-cli/bin/config-yargs'
    ElementUI-Table 表头无法编辑问题
    ElementUI-Cascader组件同时支持懒加载和选择任意一级 问题踩坑
    vue强制刷新子组件
    footer部分,当页面主题内容不满一屏时,始终位于页面底部
    未知宽高的元素水平垂直居中方法总结
    fix元素居中
    link和@import引入css的区别
    Jquery拓展方法
  • 原文地址:https://www.cnblogs.com/zhuzhu_/p/2049611.html
Copyright © 2011-2022 走看看