定时拍照功能-阿里云开发者社区

开发者社区> 技术小胖子> 正文

定时拍照功能

简介:
+关注继续查看

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 去抓

使用Remote Spy的方法可参考:

http://hi.baidu.com/%D0%CF%BD%F2%C8%F0/blog/item/33f8c9170bea01064a90a712.html

 

参考:

http://hi.baidu.com/%D0%CF%BD%F2%C8%F0/blog/item/793132ddef3f28e876c6385f.html/cmtid/6b2f0307824e84c17b8947a2

 

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




     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/818933,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
异构数据半小时实现搜索功能,一个系统搞定
没空陪老婆看电影?这个系统解放你!
4773 0
IOS开发---菜鸟学习之路--(十五)-如何实现拍照功能
本章将来讲解下如何实现拍照的功能 我们需要的实现的效果是       好了 直接开始内容吧 首先我们需要新建一个ViewController 就叫AddPictureViewController 然后选择.
636 0
阿里云IoT Studio服务开发定时关灯功能示例Demo
IoT Studio服务开发是一个物联网业务逻辑的开发工具,通过编排服务节点的方式快速完成简单的物联网业务逻辑的设计。本文主要使用:定时触发、设备和钉钉机器人节点实现对灯泡的定时控制,并将控制后的结果发送给钉钉机器人。本文以官方文档:定时关灯为基础,针对文档中缺少设备属性上报,钉钉机器人配置参考较老等问题,逐一介绍整个链路的完整实现。
343 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4430 0
稳定易用的 Django 分页库,完善分页功能
在 通过 Django Pagination 实现简单分页 中,我们实现了一个简单的分页导航。但效果有点差强人意,我们只能点上一页和下一页的按钮进行翻页。比较完善的分页效果应该像下面这样,但想实现这样一种效果,Django Pagination 内置的 API 已无能为力。接下来我们将通过拓展 Django Pagination 来实现下图这样比较完善的分页效果。 分页效果概述 一个比较完善的分页效果应该具有以下特性,很多网站都采用了类似这种的分页导航方式。 始终显示第一页和最后一页。 当前页码高亮显示。 显示当前页码前后几个连续的页码。 如果两个页码号间还有其它页码,中间显示省略号以提
15 0
玩 High API 系列之:实现钉钉Ding功能
钉钉是企业IM市场上的领先者,深受中小企业客户的喜欢,就再几天前刚刚宣布用户数超过1亿!在钉钉里面有个特别实用的功能,那就是Ding一下,如果你发的消息特别紧急,可以直接通过短信、电话等方式直接通知到接收人的手机上。
3864 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
3202 0
13262
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载