近期在做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. [易学易懂系列|golang语言|零基础|快速入门|(三)]

    接下来,我们主要讲讲package. 先列举下go的package的一些核心特性: 1.go的package不局限于一个文件,组成一个package的多个文件,编译后实际上和一个文件类似,组成包的不同 ...

  2. Flater-Provide狀態管理

    參考來源:http://www.jspang.com/posts/2019/03/01/flutter-shop.html#%E7%AC%AC24%E8%8A%82%EF%BC%9Aprovide%E ...

  3. 《扩展和嵌入python解释器》1.4 模块方法表和初始化函数

    <扩展和嵌入python解释器>1.4 模块方法表和初始化函数   1.4 模块方法表和初始化函数 下面,我演示如何从Python程序调用spam_system().首先,我们需要在’方法 ...

  4. Arduino-数学函数

  5. Spring Batch Hello World

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11995146.html Project Directory Maven Dependency < ...

  6. 《SaltStack技术入门与实践》—— Mine

    Mine 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Mine是SaltStack收集Minion数据存储到Master的一个组件,它的功能与Gr ...

  7. 【leetcode】523. Continuous Subarray Sum

    题目如下: 解题思路:本题需要用到这么一个数学定理.对于任意三个整数a,b,k(k !=0),如果 a%k = b%k,那么(a-b)%k = 0.利用这个定理,我们可以对数组从头开始进行求和,同时利 ...

  8. 2,ActiveMQ-入门

    ActiveMQ是Apache出品的,非常流行的消息中间件,可以说要掌握消息中间件,需要从ActiveMQ开始.首先去官网下载:ActiveMQ官网 一,ActiveMQ目录配置文件 1.1,Acti ...

  9. 【bzoj4551】[Tjoi2016&Heoi2016]树

    *题目描述: 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结 ...

  10. BP神经网络设计

    1.网络层数 大部分单个隐藏层即可 2.输入层神经元个数 输入变量的个数通常都是由问题的外部描述所确定的.例如,如果有4个外部变量作为网络的输入,那么网络就有4个输入.但是,这是不是意味着输入层的神经 ...