zoukankan      html  css  js  c++  java
  • 今日份灵感开发

    前段时间领导安排了个小任务,就是用c#开发个快捷键程序,按一下快捷键将某设备的数据采集出来,打印在例如excel表等等的界面上,共有两个数据先将第一个数据打印在第一个单元格里,再将第二个数据打印在第二个单元格里。

    由于最近在搞另一个项目的联调工作,搁置了那么几天,今天拿起来又搞了搞,有一说一,c#这东西我是真的不熟,压根没正经学过,前段时间从网上找了几段代码,实现了一些快捷键触发函数、开机自启动等功能,但是,打印数据这一块一直不太理想。

    上网查了查很多资料都是一些老文章,偶然间发现了两个比较简单的办法。一个就是将数据放入剪切板,再模拟ctrl + v粘出去,另外一个是我自己研究的时候偶然发现直接SendKeys.Send也可以打印文字。

    经过实践发现效果并不好,出现了一些诡异的状况,例如只打印出了第二个字符串、科学计数法表示的数据打印出来与原始数据不一样... ...头大... ...

    忽然灵光一现,看了一下SendKeys中还有哪些方法,然后发现了Flush方法,用于处理消息队列中当前所有windows消息。

    虽然不懂原理,但是冷静分析一波,这说明存在一个队列,存放的是windows消息,那啥是windows消息呢?莫非就是用SendKeys发送的那些模拟快捷键的指令?

                Clipboard.SetDataObject("数据");
                SendKeys.Send("^v");
                SendKeys.Flush();
                Thread.Sleep(10);
                SendKeys.Send("{TAB}");
                SendKeys.Flush();
                Thread.Sleep(10);
                Clipboard.SetDataObject("另一个数据");
                SendKeys.Send("^v");
                SendKeys.Flush();        

    最终改为这个鬼样子,将一个windows消息存入队列后,立即处理掉,测试了一下发现还是会出现问题。思考了一下,猜测是由于执行太快引起的,有可能是处理不过来那么多消息吧?然后加了休眠,最终效果还算理想吧。

     感觉自己在乱搞... ...

  • 相关阅读:
    mobile app 的总结
    ie和火狐javascript区别
    zepto源码注释
    ie6bug
    html5游戏网站
    jquery作者封装函数
    vue element 动态表格
    uniapp 对 系统的控制,全屏,系统虚拟键盘,手机导航,强制横屏
    环形图表记录
    清除所有的滚动条
  • 原文地址:https://www.cnblogs.com/wxdmw/p/14117021.html
Copyright © 2011-2022 走看看