近期在做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 应用程序消息提示框自动消失功能的更多相关文章

  1. Android检测WIFI连接、提示框延时消失

    Android检测系统WIFI是否连接?如没有连接,显示提示框,提示进行设置,当点击设置进入系统WIFI界面后1秒钟,提示框自动消失. 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 ...

  2. 微信小程序之----消息提示框toast

    toast toast为消息提示框,无按钮,如需关闭弹框可以添加事件设置hidden为true,在弹框显示后经过duration指定的时间后触发bindchange绑定的函数. 官方文档 .wxml ...

  3. 微信小程序API交互反馈,wx.showToast显示消息提示框

    导读:wx.showToast(OBJECT) 显示消息提示框. OBJECT参数说明: 参数 类型 必填 说明 最低版本 title String 是 提示的内容 icon String 否 图标, ...

  4. Springboot+Vue实现仿百度搜索自动提示框匹配查询功能

    案例功能效果图 前端初始页面 输入搜索信息页面 点击查询结果页面 环境介绍 前端:vue 后端:springboot jdk:1.8及以上 数据库:mysql 核心代码介绍 TypeCtrler .j ...

  5. 自定义iOS 中推送消息 提示框

    看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消 ...

  6. Android:Toast简单消息提示框

    Toast是简单的消息提示框,一定时间后自动消失,没有焦点. 1.简单文本提示的方法: Toast.makeText(this, "默认的toast", Toast.LENGTH_ ...

  7. Android应用开发学习之Toast消息提示框

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看Toast消息提示框的用法.使用Toast消息提示框一般有三个步骤: 1.  创建一个Toast对象.可 ...

  8. Android消息提示框Toast

    Android消息提示框Toast Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,t ...

  9. PowerShe 消息提示框测试

    1. 使用powerShell 弹出一个简单的消息框,代码如下,创建test.ps1脚本文件. $ConfirmPreference = 'None' $ws = New-Object -ComObj ...

随机推荐

  1. VMware使用自带工具vmware-vdiskmanager精简占用磁盘空间

    https://blog.csdn.net/xcl113/article/details/50715943 vmware-vdiskmanager压缩磁盘大小,验证有效 一 .sudo apt-get ...

  2. Ubuntu Text editor文本编辑器相关设置

    刚开始不熟悉Ubuntu,设置个文本编辑界面都难找到: 打开后在顶上的导航栏,下拉框内有preferences: 里面可以设置视图.字体颜色等

  3. proxy配置

    关于config.js里面proxy的配置:                  proxy: { '/api': { target: 'http://192.168.***.**:8500', cha ...

  4. 《转》tensorflow学习笔记

    from http://m.blog.csdn.net/shengshengwang/article/details/75235860 1. RNN结构 解析: (1)one to one表示单输入单 ...

  5. Mybatis 并发执行导致cpu占满的问题

    最近线上服务经常 出现cpu达到100%的问题,发现都是执行oracle操作的方法就没有返回.经过排查,最后定位到cpu消耗在以下方法 System.Collections.Generic.Dicti ...

  6. qt学习(一)qt三个文件函数的框架

    学到点什么, 而不是复制着什么, 每天敲着别人给的代码,苦涩得改完bug, 就这样一天天的过去, 实质上并没有学到什么, 别人的思想只是拿来借鉴, 你的思想是好是坏都是你的, 不用急着抛弃自己. 从q ...

  7. 获取第几个class

    假如类名为a,如果是同级(兄弟元素)的,如:<ul><li class='a'></li><li class='a'></li></u ...

  8. [USACO19JAN]Shortcut题解

    本题算法:最短路树 这是个啥玩意呢,就是对于一个图,构造一棵树,使从源点开始的单源最短路径与原图一模一样.怎么做呢,跑一边Dijkstra,然后对于一个点u,枚举它的边,设当前的边为cur_edge, ...

  9. webpack学习笔记二

    sourceMap 源代码与打包后的代码的映射关系.例如,在某个源文件中test.js里面有个错误,如果开启状态,那么打包后运行的报错信息就会说明是错误的具体位置,如果是关闭状态,报错后,提示的报错位 ...

  10. Spring Cloud架构教程 (六)消息驱动的微服务【Dalston版】

    Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架.它可以基于Spring Boot来创建独立的.可用于生产的Spring应用程序.它通过使用Spring Integr ...