一个小小的自启动程序,编译环境VS2010
来源:互联网 发布:app和服务器数据同步 编辑:程序博客网 时间:2024/05/03 02:23
程序流程:
前言:
有时我们产品需要做一个启动程序,比如插入一个设备就自动打开你需要的软件,这样用户会有更好的体验,下面的代码可能会对你有帮助。
1.得到程序的地址
我这里是把程序的地址保存在一个文件里。被启动的程序第一次打开时就会,把自己的地址更新到文件中。
也可以采样读环境变量或者注册表信息,采样这种方法就需要在安装程序时把程序的地址写入注册表或环境变量中。
2.查看需要打开的程序是否已经在运行了
因为很多时候,我们需要判断程序是否打开,没有打开则启动他,打开了则关闭自启动程序。
我在这一步使用的是Window下的一个API函数,FindWindow();具体用法可以自己去搜索一下,只需参考我代码中必须添加的头文件和lib库就可以了。
3.启动程序
使用ShellExecute()函数打开程序,注意头文件即可。具体使用方法网上有。
4.若不存在需要启动的程序则跳到指定的下载页
使用ShellExecute()函数;
5.我的源代码
//-----------------------//自启动代码//------------------------#include "stdafx.h"#include "string.h"//函数ShellExecute()需要的头文件#include <windows.h>#include <shellapi.h>//函数FindWindow()需要的头文件#include "winuser.h"#pragma comment(lib,"user32.lib") //函数FindWindow()需要的lib库#pragma comment(lib,"shell32.lib") //函数ShellExecute()需要的lib库//隐藏窗口#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )int _tmain(int argc, _TCHAR* argv[]){ //读取文件位置 FILE *fp; //打开程序保存文件信息 fp=fopen("D:\\autorun.dat","r"); HINSTANCE hInstance=0; if(fp!=NULL) { int i=0; //程序运行的地址 char pramageaddress[100]; //程序运行需要的库文件的地址 char runaddress[100]; memset(pramageaddress,'\0',100); memset(runaddress,'\0',100); while(!feof(fp)) { fscanf(fp,"%c",pramageaddress+i); if(pramageaddress[i]=='/') { pramageaddress[i]='\\'; } i++; } //关闭文件 fclose(fp); strcpy(runaddress,pramageaddress); strcat(pramageaddress,"\\HealthCoaster.exe"); //判断程序是否在运行 HWND h = FindWindow( NULL, "HealthCoaster"); if(h!=NULL) return 0; //启动程序 hInstance=ShellExecute(NULL,"open",pramageaddress,NULL,runaddress,SW_SHOWNORMAL); } //如果不存在需要启动的程序则打开指定的下载页 if((DWORD)hInstance<=32) { //下载地址 char updataddress[]="http://172.14.1.118:10000/HealthCoaster.rar"; //如果启动失败,则打开下载页 ShellExecute(NULL,"open",updataddress,NULL,NULL,SW_SHOWNORMAL); } return 0;}
参考网址:http://blog.sina.com.cn/s/blog_49ce238c010007aq.html
http://www.vckbase.com/index.php/wv/11.html
http://zhangyonggameres.blog.163.com/blog/static/1347349032010104104023579/
- 一个小小的自启动程序,编译环境VS2010
- 一个小小的杀毒程序
- 一个小小的vb程序
- vs2010 opencv下编译一个小程序出现 应用程序无法启动0xc000007d
- 一个小小的消息发布程序
- 一个小小的文本行信息管理程序
- java 写的一个关机小小程序
- 一个小小的操作空调程序
- 一个关于生命游戏的小小程序
- selenium2java写一个小小的爬虫程序
- 一个小小小 程序!
- VS2010 + .net4.0 一个小程序锁屏软件 支持开机自启动 源码 免积分下载
- linux 下交叉编译环境的小小说法
- 项目从vs2005升级到vs2010,新编译的64位程序启动时找不到K32EnumProcesses
- 程序自启动的方式
- 程序自启动的问题
- Windows的自启动程序
- 程序自启动的方式
- 比首席执行薪酬还高的高级工程师
- 基本类型转换(无符号数转换成浮点需关注)
- JQ获取动态加载的图片大小的正确方法分享
- FFmpeg解码流程
- 【Chapter 2】基于Chp1的实例详解
- 一个小小的自启动程序,编译环境VS2010
- MFC中单文档程序框架
- NLP(二)--编辑距离
- #pragma comment(lib, "Ws2_32.lib")
- Android 开发中的线程编程技术
- 在Keil4中建立基于固件库的STM32工程
- 歌词
- Goolg Maps android API V2版详解(一)配置eclipse得到map包
- OSPF路由协议中的邻居与邻接的区别