DIY一个万能小程序

前言

不知道你是否和我一样曾有个这样的想法:自己写一个程序,让其它程序为我所控.有问题敢于提出的孩子就是好孩子.
为了不让它过于复杂,我们限定一下自己程序的功能:

  • 它能够帮助我们打开一个程序,比如浏览器中蘑菇街的网页.
  • 它可以帮助我们定时关机.比如开机60分钟后自动关机.
  • 它可以帮助我们开机播放一个电影.

请饶了我吧,其实我当年认为的万能小程序是:

  • 打开一个没有扩展名的程序,分析它的格式并为它修正扩展名.如果你曾经修复过磁盘,你或许见过你的文件被变成.bak.真是太纠结了.
  • 它可以拍照或者录像并能转换成我们希望的格式.
  • U盘保护程序,能清除简单的病毒.

当年我希望这些程序能出现并解决我遇到的种种问题,随着学习的深入,现在已经深谙其原理并可以完成了.但是这些对于一个新手也就是刚刚学完”从零学编程“的童鞋来说太难.另一方面那会耗费相当多的时间用于文章和调试环境的处理.所以我就不在这里再次重复当年我自己的梦想了.

如果你有一些计算机程序新的想法,请相信它们绝大多数是可以实现或者已经被人实现了.请保持你的好奇心吧,你的世界会更美好.

这里写图片描述

对于0基础童鞋,前置知识要求已经阅读以下两篇文章:
从零学编程写一份情书
从零学编程做个工资计算器

本文使用Dev C++来开发我们的程序.并且在非必要的情况下不会涉及”从零学编程”两篇文章提到的操作内容.

阅读本文,你将学到:

  1. 用编程方式打开一个程序的大概方法.
  2. 控制延时关机的方法.
  3. 改变图标的工具.

按照本文步骤,实际操作,你将得到:

  1. 一个能打开其它程序的程序.
  2. 更进一步,双击我们自己写的程序,可以打开浏览器并使其第一个页面是蘑菇街.
  3. 让我们自己的程序变得漂亮.改变程序的图标,一个拥有自己心爱图标(不一定是爱心)的程序.就像下面那样:

女神
或者这样的程序:
新的图标

开始探索之旅

编程使我们的程序打开另一个程序

首先我们先用Dev C++建立一个console项目,如图:

建立项目

点绿色√确定,就会建立一个默认的项目:

点绿色√确定

我们的绝大多数代码都会写入到白色{}里面.什么?你说你的{}不是白色?那只是因为我把选中了而已.

我们要开始我们的工作了,首先老规矩包括本次程序编写会用到的库.今天的用到的是Windows.h
增加如图的一行代码:

开始包括库

主角登场.我们打开一个新的程序或者专业点叫创建一个进程,需要用到一个系统函数,它叫CreateProcess().

主角登场

执行完这个函数也就是打开一个新的程序,怎么知道它是否执行成功呢?除了用肉眼去看,微软还为我们提供了一种简洁的方法.即程序运行结束,它会返回一个值来表示成功与否,我们这里用Bool类型的一个叫bRet的值用来接住这个返回的值.
通常这是很有必要的.因为老话讲得好”一步错没发现,则步步错“.
我可以用下面代码判断这个程序是否创建了一个新的程序:

BOOL bRet =CreateProcess();
if(0==bRet)
{
//不成功
}

注意:上面的if判断不需要增加.除非你已经了解它对程序的影响.

好了少年少女们,别以为这就结束了.我们还没有告诉程序它要创建的倒是哪个新的程序呢?比如你想让它打开一个记事本,你就得把记事本在哪里告诉它.

现在在你工程里输入图中的内容:

参数

第10-19行是它的参数.你可以把它堆在一行上,但是或许一个参数适合一行更适合些.
只有第10行会变化.就像图中那样我们指定了一个我们想打开程序的路径.它是:”C:/1.exe”.

请注意:/在C和C++中有特殊含义,所以你需要总是把单斜写成//以保证程序的正确性.

当然我们只是举个栗子,因为C盘下并不一定有个1.exe,那么我们找个有实际意义的路径:

IE

这里填入你想打开程序的路径:

    BOOL bRet = CreateProcess (   
        TEXT("c://program files//internet explorer//iexplore.exe"),
        NULL,    
        NULL,   
        NULL,   
        FALSE,   
        CREATE_NEW_CONSOLE,   
        NULL,   
        NULL,   
        &si,   
        &pi); 

你是否注意到这一堆参数中最后的那俩?它们似乎与众不同,为此我们需要在main前面做一些操作.

这还不算完

你需要加入如下图的代码在main函数的前面:

增加的内容

    STARTUPINFO si = { sizeof(si) };   
    PROCESS_INFORMATION pi;   

    si.dwFlags = STARTF_USESHOWWINDOW;   
    si.wShowWindow = TRUE;

我们的程序基本完成了.接下来编译运行看看效果:

按按钮

IE浏览器被我们的程序打开了.

IE浏览器出现了

如果运行没有效果:

  1. 如果有错误提示,根据提示和前面的代码对比着看哪里出了错.
  2. 如果没有任何错误提示,检查你的路径是否输入错误,大小写拼写是否错误.

有童鞋问:我想打开浏览器第一个页面就显示蘑菇街,可不可以嘛.虽然此次蘑菇街没有对本文进行赞助,但是蘑菇还是很好吃的嘛,我喜欢吃平菇炒肉(~ o ~)~

运行我们的程序打开一个指定的网页

你或许常常在安装完一个程序或者卸载一个程序后,就会弹出一个浏览器网页,让你填写用户调查你为什么卸载我“.那这个打开浏览器的同时打开指定网页的操作是如何实现的呢?

答案在我们的CreateProcess的参数里.我们刚刚写了好几行参数,其中第二个参数具有传递命令的作用,在打开浏览器的过程中,只需要传入我们想要打开的网页地址,就能实现在打开浏览器的同时打开指定网页.

在CreateProcess函数上面写一行代码,指定我们要访问的网址(注意http的前面要加一个空格),然后修改CreateProcess的第二个参数,如图所标记.这里我们给它起的名字叫:cmdline

修改

再次编译运行:

编译运行

效果如图:
蘑菇街

嗯?蘑菇街竟然没有蘑菇!差评×

关机时间到啦,洗洗睡吧.

电脑是通过自动化设备的巅峰.连关机的事都让人手动去干,也未免有点太不给力了吧!比如我们的好友约我们去逛街,游玩而此时你的电脑正干着一些很紧要的事.或者你时常用手机在被窝里上网上到睡着,而忘了关闭笔记本电脑,这简直是太糟糕了!
这时我们就需要自动关机的功能.下载别人的程序总觉得不太靠谱,不是改我们的主页,就是乱安装没用的东东,甚至是个病毒也说不定.

用别人的程序太纠结?那么就让我们自己写一个自动关机脚本吧.

新建一个文本文件.输入以下内容并保存:

关机

-s表示时间到了关机.如果想改成重启,就把-s 改成 -r
1000表示1000秒后执行操作.

重点来了:请观察图上左上角记事本几个字的左边:关机.bat
对,必须将.txt改成.bat之后我们的脚本才有效.如果你在新建文本文件的地方发现没有.txt的字样:

只有

那么说明你的电脑没有打开“显示扩展名”设置.
win7下修改方法为:

win7

xp下修改方法为:

xp下修改方法

最后将我们的关机.txt改为关机.bat
如图效果:

关机吧

双击它就可以运行开始延时关机或者延时重启任务了.

换个漂亮的图标

根据这些基础的知识的组合,你是否已经有了一些更好的创意呢?

看着你这么努力的样子,偶就再帮你一把咯.

在把自己写的程序发给自己的朋友前,先换个漂亮的图标,使自己程序的颜值爆表很重要.
比如我隔壁的女工程师就经常这么干的:
这里写图片描述

首先你需要一款名叫Resource Hacker的工具,为了童鞋们能快速安全滴得到它,我上传了这款工具,点击这里下载:Resource Hacker.
注意:不能给我们的刚才写的程序换图标.因为我们的程序是控制台程序.不能显示图标.
安装这个程序:

安装

安装完成,从桌面快捷方式进入,界面如下:

安装好后

开始工作,首先打开一个程序:

icon

如果左边一栏有内容,说明这个程序不是控制台程序,可以进行修改.找到Icon文件夹,找到程序图标.在这里是一个黑白地球.右键:”改变资源”:

改变资源

你需要一个图标文件,它的后缀是.ico如果你没有准备好的文件,可以到这个网站下载:http://www.easyicon.net/

我们准备一款这样的小图标:
萌萌哒的图标

进行如下操作:

图标

点击Replace.接下来是见证奇迹的时刻:
文件

文件->另存为.File->Save As…

扩展名

输出名字和扩展名.注意这里是小数点+exe.而不是中文里的句号.

效果:

礼物

赶快用喜欢的图标试一试吧.(~ o ~)~

鸣谢

首先感谢我亲人,没有他们的资助,我连午餐都没得吃.
感谢Kiya工程师为提供的ico网站网址.
感谢腾讯微软和Moziila以及Dev C++的贡献者们,我使用它们辛勤劳动制作的工具来完成这篇文章.

感谢阅读本文的你.让我觉得写文章分享知识是一件快乐的事.

后语

在你看到这篇文章的时候我可能在忙于实现自己的程序保护壳也可能已经完成了这个项目.这将是个非常耗费精力的项目.所以我得赶在开工前,写出本文.

如果你觉得本文有趣请点赞:
欢迎交流留言:
统计
顶

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值