战无2 发表于 2008-2-22 16:10:55

问个不解之迷的问题(对我来说)

#include <windows.h>   /   * 这句懂点档不是很明白 *       /
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)    /* 这句不明白*         /
{
int I=1,sum=0;/ *这句知道*/
    while(I<=10)/    *   知道 *      /
    {SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, 2);/      不知/
    Sleep(5000);         /   不知/
    SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, -1);/   不知   /
      sum+=1;
      I++;}
      return 0;
}
这代码是什么意思帮小弟解答下 最好旁边加注什么意思

Zelsazgh 发表于 2008-2-22 21:16:46

总体来说,这个程式是用于使屏幕忽闪忽灭的恶意小玩意...其它的...嗯...当我不存在吧

shawind 发表于 2008-2-23 10:06:32

这是Windows编程,从表面上看,是和纯C有点不一样。
可以去看那本有名的侯捷翻译的《Programming Windows》也就是《Windows 程式开发设计指南》。

lw 发表于 2008-2-23 11:02:11

同意,从课堂的C转换到实用需要一些时间的……
#include <windows.h>
首先你看那个文件在vc98(或者.NET自己找不行对目录找这个名字的文件,里面其实嵌入了所有的.H以及定义了所有的类型,保持文件打开:)

WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)    /* 这句不明白*      /
(在那个文件里面查找WINAPI,应该是指示__stdcall这个是调用约定,不理解就GOOGLE去,WinMain是WINI32的程序的启动项目,你就想为什么C下面能够用main作为‘启动项目’呢?怎么启动需要自己查GOOGLE了,WINMAIN就这么开始HINSTANCE LPSTR 都是void*和char*的别名,不考虑UNICODE,什么是UNICODE自己去查,为什么这么写,那就先解释为什么main的参数通常是int argc char* argv[]就可以了)
{
int I=1,sum=0;/ *这句知道*/
    while(I<=10)/    *知道 *      /
    {SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, 2);/      不知/
(SendMessage是一个API,反正WINDOWS.H或者里面的包含文件中可以找到函数的原型,可以当作就是一个硬记忆的过程,这个函数是MS帮你写了内部的实现,使用所谓的API就是别人帮你写了整个东西,你调用,而不是全部自己去写……也没有时间)
    Sleep(5000);          /不知/
(同上)
    SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, -1);/    不知/
(同上)
      sum+=1;
      I++;}
      return 0;
}

刚开始就这样子,偶还记得很清楚照着书本写一个窗口时候的兴奋感-v-+
之后就是希望LZ加油了- -
页: [1]
查看完整版本: 问个不解之迷的问题(对我来说)