机房合作——新的功能

开机自启动

    像咱们使用的软件都是可以实现开机自启动的,在咱们机房合作中也会有应用,不管你弄的是机房还是网吧,客户端和服务器端中的某一方必然是需要开机自启动的(要不然去上网还要打开软件再上,那网吧就赔死了),所以咱们只需要在自己的程序中添加几句代码就可以实现了。
将启动路径写入注册表

using System.Windows.Forms;
using Microsoft.Win32;
using System.IO;
 
 public static void SetAutoStart()
        {
            try
            {
                string regPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
                string path = Application.ExecutablePath;   //将当前程序起动路径
                string name = Path.GetFileName(path);  //获得应用程序名称
                var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regPath, true);
                if (regKey == null) regKey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(regPath);
                regKey.SetValue(name, path);
            }
            catch
            {
            }
        }

    写入注册表是需要系统管理员权限的,如果上面的方法不能使用,那么可以进行下面的操作:
1.在程序中添加程序清单文件:新建项->应用程序清单文件在这里插入图片描述

2、打开刚刚新建的清单文件,按照下图修改UAC选项:
在这里插入图片描述
    修改之后如果报错,那么就继续下面的操作:
3.在【解决方案资源管理器】中右键你的项目—>打开“属性”—>左边选择“安全性”—>把【启用ClickOnce安全设置】的对勾去掉:
在这里插入图片描述
    之后就可以使用了

截图并分享

    再说一个非常不错的功能,比如玩游戏啊什么的赢了,五杀了,超神了,我想截个图分享到qq空间啊,微信朋友圈啊,这个该怎么弄?一种是你需要去微信 公众号设置js借口安全域名,之后引入js文件。(如果页面启动的是http:那么要引用http://res.wx.qq.com/open/js/jweixin-1.0.0.js ,如果页面启用了https,务必要引入https://res.wx.qq.com/open/js/jweixin-1.0.0.js )

之后通过config接口注入权限验证配置:

wx.config({  
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  
    appId: '', // 必填,公众号的唯一标识  
    timestamp: , // 必填,生成签名的时间戳  
    nonceStr: '', // 必填,生成签名的随机串  
    signature: '',// 必填,签名,见附录1  
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2  
});  

然后通过ready接口处理成功验证,通过error接口处理失败:

wx.ready(function(){  
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。  
});

wx.error(function(res){  
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。  
});  

分享接口:

wx.onMenuShareTimeline({  
    title: '', // 分享标题  
    link: '', // 分享链接  
    imgUrl: '', // 分享图标  
    success: function () {   
        // 用户确认分享后执行的回调函数  
    },  
    cancel: function () {   
        // 用户取消分享后执行的回调函数  
    }  
});  

wx.onMenuShareAppMessage({  
    title: '', // 分享标题  
    desc: '', // 分享描述  
    link: '', // 分享链接  
    imgUrl: '', // 分享图标  
    type: '', // 分享类型,music、video或link,不填默认为link  
    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空  
    success: function () {   
        // 用户确认分享后执行的回调函数  
    },  
    cancel: function () {   
        // 用户取消分享后执行的回调函数  
    }  
});  

页面源码:

<%--引入js文件--%>  
 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>  
<%--通过config接口注入权限验证配置--%>  
     <script>  
        wx.config({  
            debug: false,  
            appId: '${shakeMap.appId}',  
            timestamp: '${shakeMap.timestamp}',  
            nonceStr: '${shakeMap.nonceStr}',  
            signature: '${shakeMap.signature}',  
            jsApiList: [  
                'checkJsApi',  
                'onMenuShareTimeline',  
                'onMenuShareAppMessage'  
            ]  
        });  
        wx.ready(function () {  
                <%--公共方法--%>  
            var shareData = {  
                title: '${title}',  
                desc: '${description}',  
                link: '${url}',  
                imgUrl: '${headImgUrl}',  
                success: function (res) {  
                    //alert('已分享');  
                },  
                cancel: function (res) {  
                }  
            };  
                <%--分享给朋友接口--%>  
            wx.onMenuShareAppMessage({  
                title: '${title}',  
                desc: '${description}',  
                link: '${url}',  
                imgUrl: '${headImgUrl}',  
                trigger: function (res) {  
                          //  alert('用户点击发送给朋友');  
                },  
                success: function (res) {  
                    //alert('已分享');  
                },  
                cancel: function (res) {  
                    //alert('已取消');  
                },  
                fail: function (res) {  
                    alert(JSON.stringify(res));  
                }  
            });  
                <%--分享到朋友圈接口--%>  
            wx.onMenuShareTimeline(shareData);  
        });  
          <%--处理失败验证--%>  
        wx.error(function (res) {  
            alert("error: " + res.errMsg);  
        });  
    </script>  

    之后就可以实现分享到朋友圈了。这个还需要注册,稍微有些麻烦,那么我们可以使用第二种方法:引用一个插件:公子之物,这是b/s的插件,其中有一个html文件,这个就是我们需要的东西。但是怎么在c/s界面引用这个html文件呢?一开始我想的是创建一个webform窗体,让winform窗体引用webform窗体后将这个webform窗体show出来,但是这个方法不可行,后来又用了webBrowser控件(实现winform与webform交互的控件),但是还是不行,最后呢用了一句代码来解决了这个问题:

 System.Diagnostics.Process.Start("explorer.exe", "http://localhost:49600/share.html")  

    这句话前一个参数是你默认的浏览器,后一个是你需要打开的网页(把文件夹中的html打开后会有一个网址,复制过来添加到这),之后就可以打开了。

    那么怎么在winform中截屏呢?

//获得当前屏幕的大小   
               Rectangle rect = new Rectangle();
               rect = Screen.GetWorkingArea(this);
               //创建一个以当前屏幕为模板的图象   
               Graphics g1 = this.CreateGraphics();
               //创建以屏幕大小为标准的位图     
               Image MyImage = new Bitmap(rect.Width, rect.Height, g1);
               Graphics g2 = Graphics.FromImage(MyImage);
               //得到屏幕的DC   
               IntPtr dc1 = g1.GetHdc();
               //得到Bitmap的DC     
               IntPtr dc2 = g2.GetHdc();
            //调用此API函数,实现屏幕捕获   
               BitBlt(dc2, 0, 0, rect.Width, rect.Height, dc1, 0, 0, 13369376);
               //释放掉屏幕的DC   
               g1.ReleaseHdc(dc1);
              //释放掉Bitmap的DC     
               g2.ReleaseHdc(dc2);
              //以JPG文件格式来保存   
               MyImage.Save(@"Capture.jpg", ImageFormat.Jpeg);//写上自己存放的地方
               MessageBox.Show("已经截屏!");

    这个是截全屏,如果想按照自己想要的部分截屏,那么自己去找找代码,应该是不难写的,这里就不再写了。

    那么怎么把图片放到浏览器中呢?我的想法是把图片先放到程序的某个文件夹中,每次分享之前先去判断文件夹中有没有图片,如果有就加载到html中,之后就可以将图片加载到浏览器中,之后就可以分享了。

还有其他一些功能:比如可以弄一个网吧/机房的全景图给顾客看(由于时间仓促,没有弄公子之物)这个只需要用几张图片就可以生成一个全景的图,不过唯一的缺点是有水印(因为没付费)。还有可以用gmap生成一个离线地图公子之物,这个本来是想弄一个定位并一键报警/警告 什么的,但是觉得作用也不大,而且也不是太好弄,就没弄,有兴趣的可以自己试着弄弄更好玩的功能。

    机房合作的东西到此就介绍完了,通过三篇博客将机房合作创新点都写上了,希望这些能在机房合作中帮到你。

    如果有用,请点个赞,不胜感激!

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值