首页
社区
课程
招聘
[旧帖] [原创]VC++6.0中调用API实例初探 0.00雪花
发表于: 2014-1-22 21:57 2032

[旧帖] [原创]VC++6.0中调用API实例初探 0.00雪花

2014-1-22 21:57
2032
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直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是你转的吗?
2014-1-23 00:14
0
雪    币: 226
活跃值: (215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我的 原先在空间里写的 现在想要邀请码 所以就贴过来了。转谁的啊。。
2014-1-23 08:39
0
雪    币: 8
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我一直想找找这方面的资料。。。。。。。。。。。。
2014-1-26 01:59
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主文笔不错,写的很好.
2014-1-26 12:00
0
雪    币: 97
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
话说 初学者都要用 VC++6.0么 还是说一些老手也还在用这个呢...
想学编程 都不知道用啥 编程环境 = =
2014-1-26 12:05
0
雪    币: 226
活跃值: (215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
VC6.0插件多 上手快 就它了~
2014-1-26 21:35
0
游客
登录 | 注册 方可回帖
返回
//