去掉第三方弹框

去掉弹框第二种方式

 

有这样一个需求,老板他不会在乎你的软件是怎么产生的,他只在乎,你给客户就必须交付一套好点的可操作性行的操作客户端

来需要打印机打印一个套表数据,简单嘛,网上随便找个套表工具或者插件就行了咩。

你不知道我就要告诉你知道,人家开发好的软件凭什么免费给你使用,尤其是这种带有些许商业性质的功能,比如报表,套表,可以给你免费,加个弹框Log没什么问题吧。

所以你就开始对比各种软件,总能找到一款你想要的,然后也总能遇到各种问题。

好吧我比较懒对比了十几二十套插件只有找到了一款还算不错的

ReportMachine就是它了。我不清楚别人免费东西有多好,反正我觉得它就是我的真名天子就是了。

然后就算找了官方想要和作者也没找到一个最新免费又不带免费提示的。总是会弹出 【正在准备报表】的按钮,需要手工点击才可打印。

本着懒人的目标,不让客户去手工点击,我就想那就模拟点击吧

于是就随便找了几句代码扔了进去,然后就那个不为人知的界面给去掉了。

当然你得操作一个线程,不停的再后台处理

      #region DllImport
        /// <summary>
        /// 找到窗口
        /// </summary>
        /// <param name="lpClassName">窗口类名(例:Button)</param>
        /// <param name="lpWindowName">窗口标题</param>
        /// <returns></returns>
        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        /// <summary>
        /// 找到窗口
        /// </summary>
        /// <param name="hwndParent">父窗口句柄(如果为空,则为桌面窗口)</param>
        /// <param name="hwndChildAfter">子窗口句柄(从该子窗口之后查找)</param>
        /// <param name="lpszClass">窗口类名(例:Button</param>
        /// <param name="lpszWindow">窗口标题</param>
        /// <returns></returns>
        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        private extern static IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="hwnd">消息接受窗口句柄</param>
        /// <param name="wMsg">消息</param>
        /// <param name="wParam">指定附加的消息特定信息</param>
        /// <param name="lParam">指定附加的消息特定信息</param>
        /// <returns></returns>
        [DllImport("user32.dll", EntryPoint = "SendMessageA")]
        private static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam);

        //窗口发送给按钮控件的消息,让按钮执行点击操作,可以模拟按钮点击
        private const int BM_CLICK = 0xF5;
       #endregion


        /// <summary>
        /// 模拟关闭弹框提示
        /// </summary>
       void CloseFree()
        {
            IntPtr hWnd = FindWindow(null, "免费版本");
            IntPtr SWnd = FindWindow(null, "正在准备报表");
            if (hWnd != IntPtr.Zero && SWnd != IntPtr.Zero)
            {
                IntPtr childHwnd = FindWindowEx(hWnd, IntPtr.Zero, null, "OK");//按钮控件标题
                if (childHwnd != IntPtr.Zero)
                {
                    SendMessage(childHwnd, BM_CLICK, 0, 0);
                }

            }

        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值