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 ...
随机推荐
- spring boot filter -Autowired
需求:在SpringBoot实现拦截器,并且需要自定义的filter类型自动装配一些对象 自定义的过滤器类 public class SessionExpireFilter implements Fi ...
- thinkphp5.0.19 表单令牌
助手函数token() [F:\phpStudy\WWW\csweb\thinkphp\helper.php] request类token()方法 [F:\phpStudy\WWW\csweb\thi ...
- hadoop本机运行 解决winutils.exe的问题
如何解决winutils.exe的问题什么原因导致的???windows是客户端,读取linux的文件.客户端没有hadoop的环境重新在windows上面编译hadoop,编译出来window版本的 ...
- 接触oracle的第二天
1.2 Sqlplus 这是一个轻量级的功能强大的客户端, 是 dba 必须掌握的工具. 我们可以配置 sqlplus 的一些行为,两个命令: show. 用来显示配置参数 set. 用来设置配置参数 ...
- 【BZOJ1488】[HNOI2009]图的同构计数
题目链接 题意 求 n 个点的同构意义下不同的图的数量.\((n\leq 60)\) Sol \(Polya\) 定理的练手题. 我们这里先把边的存在与否变成对边进行黑白染色,白色代表不存在,这样就变 ...
- 在mac上安装rabbitmq
在 OS X 上安装 RabbitMQ¶ 在 Snow Leopard 上安装 RabbitMQ 最简单的方式就是 Homebrew ——OS X 上的一款新颖别致,光彩动人的包管理系统. 在本例中, ...
- 51nod1790 输出二进制数
题目描述 题解 过于真实 LJ卡常题 一个显然的dp: 设f[i][j]表示做完前i个,最后一段为j+1~i的方案(最小值同理) 那么f[i][j]=min(f[i-j-1][k]),其中k~j-1要 ...
- linux运维、架构之路-Kubernetes离线、二进制部署集群
一.Kubernetes对应Docker的版本支持列表 Kubernetes 1.9 <--Docker 1.11.2 to 1.13.1 and 17.03.x Kubernetes 1.8 ...
- ckeditor直接粘贴图片实现
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- 模拟vue实现简单的webpack打包
一.安装nodejs,查看是否安装成功 二.package.json项目初始化 npm init 电脑有node环境,在根目录下运行命令npm init初始化项目,根据提示输入项目相关信息,然后运行. ...