winCE/Windows 应用程序消息提示框自动消失功能
近期在做winCE系统的扫描枪应用程序,遇到了一些问题,其中包括消失提示框在手持终端显示过小,
用户要求提示框提示几秒后自动关闭,Windows平台可以通过调用系统API以定时器的方式进行自动销毁。
不过在winCE上存在不同,由于winCE系统属于精简版的windows系统,所以在API上也是属于精简后的,
Windows平台销毁消息框用user32.dll中的FindWindow和PostMessage完成,而winCE平台并没有
user32.dll,不过对应的API在coredll.dll中。
windows平台示例代码:
[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
internal static extern IntPtr FindWindow(string className,string windowName);
[DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
internal static extern int PostMessage(IntPtr hWnd,int msg,IntPtr wParam,IntPtr lParam);
internal const int WM_CLOSE = 0x10;
Timer timer = new Timer();
private void btnAutoCloseMesaage_Click(object sender, EventArgs e)
{
runKillTimer();
MessageBox.Show("操作已完成,可以关闭!","Message");
}
/// <summary>
/// 运行timer
/// </summary>
internal void runKillTimer()
{
timer.Interval = ;
timer.Tick+=timer_Tick;
timer.Start();
}
/// <summary>
/// timer触发关闭消息框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer_Tick(object sender, EventArgs e)
{
KillMessageBox();
timer.Stop();
}
/// <summary>
/// 调用API查找窗体并关闭
/// </summary>
internal void KillMessageBox()
{
IntPtr msgPtr = FindWindow(null, "Message");
if (msgPtr != IntPtr.Zero)
{
PostMessage(msgPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
}
winCE平台示例代码:
[DllImport("coredll.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
internal static extern IntPtr FindWindow(string className,string windowName);
[DllImport("coredll.dll", EntryPoint = "PostMessage", CharSet = CharSet.Auto)]
internal static extern int PostMessage(IntPtr hWnd,int msg,IntPtr wParam,IntPtr lParam);
internal const int WM_CLOSE = 0x10;
Timer timer = new Timer();
private void btnAutoCloseMesaage_Click(object sender, EventArgs e)
{
runKillTimer();
MessageBox.Show("操作已完成,可以关闭!","Message");
}
/// <summary>
/// 运行timer
/// </summary>
internal void runKillTimer()
{
timer.Interval = ;
timer.Tick+=new EventHandler(timer_Tick);
timer.Enabled = true;
}
/// <summary>
/// timer触发关闭消息框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer_Tick(object sender, EventArgs e)
{
KillMessageBox();
timer.Enabled = false;
}
/// <summary>
/// 调用API查找窗体并关闭
/// </summary>
internal void KillMessageBox()
{
IntPtr msgPtr = FindWindow(null, "Message");
if (msgPtr != IntPtr.Zero)
{
PostMessage(msgPtr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
}
ps:大家有其他好的意见或建议也可以多多交流。
winCE/Windows 应用程序消息提示框自动消失功能的更多相关文章
- Android检测WIFI连接、提示框延时消失
Android检测系统WIFI是否连接?如没有连接,显示提示框,提示进行设置,当点击设置进入系统WIFI界面后1秒钟,提示框自动消失. 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 ...
- 微信小程序之----消息提示框toast
toast toast为消息提示框,无按钮,如需关闭弹框可以添加事件设置hidden为true,在弹框显示后经过duration指定的时间后触发bindchange绑定的函数. 官方文档 .wxml ...
- 微信小程序API交互反馈,wx.showToast显示消息提示框
导读:wx.showToast(OBJECT) 显示消息提示框. OBJECT参数说明: 参数 类型 必填 说明 最低版本 title String 是 提示的内容 icon String 否 图标, ...
- Springboot+Vue实现仿百度搜索自动提示框匹配查询功能
案例功能效果图 前端初始页面 输入搜索信息页面 点击查询结果页面 环境介绍 前端:vue 后端:springboot jdk:1.8及以上 数据库:mysql 核心代码介绍 TypeCtrler .j ...
- 自定义iOS 中推送消息 提示框
看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消 ...
- Android:Toast简单消息提示框
Toast是简单的消息提示框,一定时间后自动消失,没有焦点. 1.简单文本提示的方法: Toast.makeText(this, "默认的toast", Toast.LENGTH_ ...
- Android应用开发学习之Toast消息提示框
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看Toast消息提示框的用法.使用Toast消息提示框一般有三个步骤: 1. 创建一个Toast对象.可 ...
- Android消息提示框Toast
Android消息提示框Toast Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,t ...
- PowerShe 消息提示框测试
1. 使用powerShell 弹出一个简单的消息框,代码如下,创建test.ps1脚本文件. $ConfirmPreference = 'None' $ws = New-Object -ComObj ...
随机推荐
- python:实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...
- 排序二叉树、平衡二叉树、红黑树、B+树
一.排序二叉树(Binary Sort Tree,BST树) 二叉排序树,又叫二叉搜索树.有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree). 1 ...
- HTML加载过程
在地址栏输入url,返回html后,浏览器开始顺序加载并渲染DOM Body标签 当浏览器遇到body标签才算真正开始加载并渲染DOM,此时会有以下几种情况: DOM元素 浏览器遇到dom元素时,正常 ...
- quartz 时间配置
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...
- 如何将上个SQL的结果作为参数传递给下个SQL
如何将上个SQL的结果作为参数传递给下个SQL: ##source认证 kinit认证 source /home/omm/ficlient/bigdata_env kinit -k -t /ETL/c ...
- CodeForces 1197D Yet Another Subarray Problem
Time limit 2000 ms Memory limit 262144 kB Source Educational Codeforces Round 69 (Rated for Div. 2) ...
- hdu_1231(最大连续子序列)
http://acm.hdu.edu.cn/showproblem.php?pid=1231 最长公共子序列: 方法1:暴力枚举所有区间的连续和,维护最大和 复杂度O(n^3)-->因为求区间和 ...
- 【PowerOJ1746&网络流24题】航空路线问题(费用流)
题意: 思路: [问题分析] 求最长两条不相交路径,用最大费用最大流解决. [建模方法] 把第i个城市拆分成两个顶点<i.a>,<i.b>. 1.对于每个城市i,连接(< ...
- 安卓手机和ios手机上图片未设置宽度可能导致ios上图片贼小
处理方法: 设置固定宽度,高度自适应
- Zookeeper w3cschool教程
1.简介 ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理服务是一个复杂的过程.ZooKeeper通过其简单的架构和API解决了这个问题. ZooKeeper允许开发 ...