一个拍照更上镜的9个方法法

8063人阅读
C++ Win32(93)
源代码下载:
综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果有说明已经有一个实例在运行了,则当前程序通知用户怎样怎样,然后程序退出,当然方法有这么多,各自也就有自己的优缺点了。&注意下面的程序都是分块拷贝的&
方法一:我用得做多的方法是创建互斥体Mutex,使用Mutex代码比较简洁,但是此时不能取得已经启动的实例窗口局柄,因此无法激活已经启动的实例窗口,代码如下:// -------------------------------------------------------------------------// 函数&&: CreateSendingWNDList// 功能&&: 创建互斥量,用于保证只启动一个进程// 返回值&: int //&&&&&&&&&&& 成功&&&0//&&&& 失败&&&-1//&&&& 存在进程实例&1// 附注&&: // -------------------------------------------------------------------------int CreateSendingWNDList(const TCHAR *pstrKSCoreAppName){&//-------防止多次起动----------& &HANDLE hMutex = ::CreateMutex(0, true, pstrKSCoreAppName);&int nRet = 0;&if (hMutex)&{&&&if(GetLastError() == ERROR_ALREADY_EXISTS) &&{&&&nRet = 1;&&}&&else&&{&&&nRet = 0;&&}&}&else&{&&nRet = -1;&}
&return nR}
// 在创建窗口前调用下面代码switch(CreateSendingWNDList(g_strKSCoreAppName)){case 0:&&// 正常启动&// TODO……
&&&case 1:&&&// 已存在进程,退出&{&&::MessageBox(NULL, TEXT("已经有一个实例在运行了。"), TEXT("注意"), MB_OK);&}
case -1:// 无法创建,退出default:&&return FALSE;}
方法二:一般来说,使程序只运行一个实例的最简单的方法当然是使用FindWindow()查找主窗口,如果主窗口已经存在了,当然说明已经有一个实例运行了。代码如下:// 这种方法有缺陷,窗口名字改变之后就再也找不到了,FindWindow()的参数ClassName和Caption比较难取得。HWND hWnd = FindWindow(NULL, TEXT("SingleInstanceFW"));if(IsWindow(hWnd)){&::MessageBox(NULL, TEXT("已经有一个实例在运行了。"), TEXT("注意"), MB_OK);&::ShowWindow(hWnd, SW_NORMAL);&&&& // 显示&::SetForegroundWindow(hWnd);&&&&&& // 激活&return FALSE;}
这种方法相比上面两种方法,避免上面两种方法的缺点,通过SetProp()为程序主窗口设置一个特殊的Property,然后在启动时遍历所有的窗口,找出包含着个Property的窗口局柄
。【这个附加的窗口属性在窗口销毁时也应该销毁】这个方法的缺点就是代码比较多一点,如下:
// 声明全局的 属性 名和 属性值TCHAR&g_strKSCoreAppName[] = _T("AFX_KSInstall_CPP__01_46e2_ADC5_A14A44A85877__");HANDLE&g_hValue = (HANDLE)1022;
// 定义枚举窗口回调函数BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lParam){&//TCHAR str[200] = {0};&//::GetWindowText(hwnd, str, 200);&HANDLE h = GetProp(hwnd, g_strKSCoreAppName);&if(h == g_hValue)&{&&*(HWND*)lParam =&&return FALSE;&}&return TRUE;}
// 主窗口创建前判断HWND oldHWnd = NULL;::EnumWindows(EnumWndProc,(LPARAM)&oldHWnd);&&& //枚举所有运行的窗口if (oldHWnd != NULL){&::MessageBox(NULL, TEXT("已经有一个实例在运行了。"), TEXT("注意"), MB_OK);
&::ShowWindow(oldHWnd, SW_NORMAL);&&&& // 显示&::SetForegroundWindow(oldHWnd);&&&&&& // 激活&return FALSE;}
// 主窗口创建后设置,为窗口附加一个属性::SetProp(m_hWnd, g_strKSCoreAppName, g_hValue);
// 主窗口退出时移除该附加属性::RemoveProp(m_hWnd, g_strKSCoreAppName);
上面的方法二和方法三都有一个弊病,不知道大家发现没,那就是依赖于窗口的存在,没有窗口的程序怎么办了,用方法一是可以的,不过方法一不太适合即时修改状态,譬如我想提供选项给用户,可以即时修改是否允许多实例,像KMP就提供了即时修改是否允许多实例,使用全局变量是一个比较好的解决方案,使用全局共享变量的方法则主要是在VC框架程序中通过编译器来实现的。通过#pragma data_seg预编译指令创建一个新节,在此节中可用volatile关键字定义一个变量,而且必须对其进行初始化。Volatile关键字指定了变量可以为外部进程访问。最后,为了使该变量能够在进程互斥过程中发挥作用,还要将其设置为共享变量,同时允许具有读、写访问权限。这可以通过#pragma comment预编译指令来通知编译器。下面给出使用了全局变量的进程互斥代码清单:
#pragma data_seg("Shared") int volatile g_lAppInstance = 0; #pragma data_seg() #pragma comment(linker,"/section:Shared,RWS")
if (0 == g_lAppInstance){&g_lAppInstance = 1;}else if (1 == g_lAppInstance){&::MessageBox(NULL, TEXT("已经有一个实例在运行了。"), TEXT("注意"), MB_OK);&return FALSE;}else{&// 直接启动}
【注意,代码应该放在程序的入口处】
其实上面的方法可以两种进行组合来实现一些比较特殊的需求,具体怎样就自己去想了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:957378次
积分:9247
积分:9247
排名:第1115名
原创:139篇
转载:19篇
评论:348条
文章:14篇
阅读:56586
(1)(2)(1)(1)(2)(1)(2)(2)(2)(2)(1)(1)(3)(1)(1)(4)(2)(2)(3)(2)(4)(3)(1)(2)(2)(2)(5)(3)(2)(1)(2)(4)(2)(2)(1)(4)(1)(2)(2)(1)(3)(4)(2)(3)(1)(4)(3)(7)(9)(1)(7)(7)(1)(5)(3)(8)(5)(4)(3)(1)(4)一个规定 一个办法 一套制度
□ 本报记者霍一夫
积极构建“放、管、治、育”四位一体的质量提升格局,主动适应经济发展新常态,围绕提质增效,突出创新驱动,加强民生保障,这是近年来上海市长宁区市场监管局在质量工作中的新作为。
为加强质量安全工作组织领导,着力抓市场监管队伍建设和基层建设,长宁区市场监管局从坚持改革创新、服务转型发展、着力改善民生、筑牢安全底线4个方面着手,先后出台了《基层建设规定》和基层所《职能履行绩效评价管理办法》,组织编写了《基层建设》和《制度汇编》两本手册,形成了“一个规定、一个办法、一套制度”的基层建设框架,不断提升一线监管队伍的业务能力,形成了“一体两翼”的基层评价模式。
坚持改革创新,推广自贸区制度创新,不断提升区域经济竞争力。长宁区先后复制推广服务自贸区试点经验的实施方案,推行“单一窗口”运作模式。区行政服务中心通过再造内部流程,审批时间缩短30%。同时,海关“分送集报”、食品与化妆品现场检验、“先出货、后报关”等贸易便利“一站式”服务,在该区先行先试。
不断落实简政放权,行政审批实行标准化管理。统一审批原工商分局、区质监局、食药监分局各类行政许可备案项目,着力推进行政登记许可事项“一体化”办理,许可事项申请材料减少20%,行政审批时间缩短30%以上。
推动监管方式创新。长宁区积极鼓励和引导社区居民参与质量监督活动,21个社区产品伤害和缺陷信息监测试点工作初现成效。同时,制定了市场监管部门基层建设和制度汇编,将原工商、质监、食药监、价格检查的制度细化为易于执行的具体措施,保证监管工作的规范化。
不断完善社会信用制度建设。在区门户网站开设公共信用信息发布专栏,不定期发布可公开的信用数据。2015年共发布红黑榜数据34批次,发布数据941条,涉及事项8类,包括环境违法、食品药品处罚等失信记录和全国守合同重信用企业、上海市名牌企业等守信记录。
促进产业结构调整。对企业自主研发、有市级以上资质的第三方机构认证、具有明显节能效果和推广价值的产品和技术给予补贴。成立了上海虹桥航空服务业创新试验区,推进以航空服务业为重点的现代服务业发展,着力打造虹桥互联网金融财富天地。积极打造众创空间,14个基地被认定为市级科技企业孵化器和新型孵化器。2015年,新设现代服务业企业和注册资本额所占比重分别达到97.08%和97.42%。
服务科创中心建设。深化“数字长宁”、“智慧高地”优势,加强与高校及科研院所在技术研发、成果孵化、质量提升等方面的合作。大力实施标准引领战略,对制修订标准、标准化试点等项目予以资金支持。建立街镇质量考核机制,指导街镇从产品质量、工程质量、服务质量、人居环境质量等方面,更好地服务区域经济社会发展。目前,全区部分街镇已经形成各具特色的质量工作模式,如华阳社区服务管理综合标准化试点项目,成为全国首批上海唯一的社会管理和公共服务综合标准化试点等。
近年来,长宁区在培育质量品牌标杆,鼓励引导企业注重质量提升、品牌发展上,也出台了一系列措施,如在5个园区建立了名牌和商标工作站,出台了《鼓励科技创新实施意见》、《科技型中小企业技术创新资金试行办法》等,资助获得上海名牌、科技小巨人、高新技术等称号和标准化工作突出的企业和机构。目前,长宁区共有29个上海名牌,专利申请量达1884件,其中,临空园区通过了上海市知名品牌示范区创建验收,并获批“国家电子商务示范基地”,德必园区、工技大科技园获批上海市知名品牌创建示范区。
良好的服务质量,让长宁区百姓享受到了“智慧社区”的成果。目前,全区 22 个文化产业园中有13个被认定为市级文化创意园区。旅游服务业质量状况保持稳定,宾馆复查合格率和旅游合同合格率均达到100%,春秋国旅连续获评全国旅游服务质量标杆单位。
免责声明:本文仅代表作者个人观点,与环球网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
环球时报系产品
扫描关注环球网官方微信
扫描关注 这里是美国微信公众号
扫描关注更多环球微信公众号多个方法 怎么合并成一个方法赋值多个模版哪
- ThinkPHP框架
怎么把两个方法里面相同的地方放到一个方法里面 同时在几个不同的模版上显示呢,现在一个方法一个模版
怎么实现一个方法赋值多个模版
看云--打造开发者专属的文档创作和阅读平台
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。c#怎么锁住一个方法
[问题点数:80分,结帖人threadroc]
c#怎么锁住一个方法
[问题点数:80分,结帖人threadroc]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
2016年2月 .NET技术大版内专家分月排行榜第三2015年10月 .NET技术大版内专家分月排行榜第三2015年9月 .NET技术大版内专家分月排行榜第三2015年7月 .NET技术大版内专家分月排行榜第三2015年6月 .NET技术大版内专家分月排行榜第三2015年5月 .NET技术大版内专家分月排行榜第三2015年4月 .NET技术大版内专家分月排行榜第三2014年12月 .NET技术大版内专家分月排行榜第三2014年10月 .NET技术大版内专家分月排行榜第三2014年9月 .NET技术大版内专家分月排行榜第三2014年1月 .NET技术大版内专家分月排行榜第三2013年12月 .NET技术大版内专家分月排行榜第三2013年10月 .NET技术大版内专家分月排行榜第三2013年5月 .NET技术大版内专家分月排行榜第三2011年9月 .NET技术大版内专家分月排行榜第三2011年2月 .NET技术大版内专家分月排行榜第三2010年2月 .NET技术大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。分享给站外好友
页面地址:
FLASH地址:
HTML代码:
通用代码:
可以让视频在手机、平板电脑上播放!
举报此视频包含不当内容:
请填写你要举报的内容,标明举报内容所在地时段,将有助于我们更及时的处理举报内容。感谢您对PPS的支持!
广告和欺诈
触犯我的版权
你可以把视频下载到不同的设备
使用电脑飞速下载轻易收藏喜欢的视频
使用苹果设备支持iPhone、iPad高清视频亦可离线观看
使用Android设备支持手机、平板高清视频亦可离线观看
拍下二维码,视频随身看
用PPS影音IOS/Android版扫描二维码,在您的移动设备上继续观看视频,也可以分享给您的好友。
教你一个叠袜子不占空间的方法
手机没装PPS影音?
注:数据来自爱奇艺、PPS全平台
上传时间:20个月前
分&&&&&&类:
暂无相关内容
视频简介:教你一个叠袜子不占空间的方法,教你一个叠袜子不占空间的方法
现在可以用QQ账号直接发表评论,分享给我的好友
大家都在看
互联网药品信息服务许可证:
互联网医疗保健信息服务许可证:
Copyright&2005 - 2014 PPStream, Inc. All Rights Reserved

我要回帖

更多关于 长个子的最快方法 的文章

 

随机推荐