KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

伪造小程序第二弹(程序托盘)(3月7日更新)

[ 11243 查看 / 13 回复 ]

大家好,我又来发冒牌货了。

这次的目标是一个程序托盘。
就相当于一个打包的快捷方式,可以用这个小程序启动其他程序,这样我们的桌面就不用放那么多图标了。

这次的原版程序也是和chobits相关的,但是我的伪造的版本换成了AIR里的人物,功能进行了强化,和上次一样添加了自动停靠自动隐藏。

原版程序可加载56个EXE文件的链接,分7页,我改的分5页,能加载40个EXE文件的链接。

最后要说一句,我是个艺术方面的门外汉,图片处理得不好,还请见谅,如果有人帮我改一下更好。

原版的程序:上传文件3506

我改的程序:上传文件3551


这个是源代码,有兴趣的可以看看:
上传文件3552




3月7日:
修正了斥体同名冲突的大BUG,增加了程序附加参数的功能和对快捷方式的支持,可是,快捷方式无法显示图标,不知道怎么弄。
分享 转发
KCDDP KR/KAG区值班室常驻义务值班员

现在在KCDDP的论坛也已经开始潜水了Orz
但是QQ群还是长期在线的
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

怎么编译啊成EXE啊?
We are the Borg.You will be http://tinypic.com/xylfl.Resistance is futile
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

建议楼上的找本VC的书来看看.
支持冒牌货 XD
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

介绍一本好吗?
We are the Borg.You will be http://tinypic.com/xylfl.Resistance is futile
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

源程序先收下了……可是没时间看…… T_T
现在发现大学真忙……学习的时间都不够……
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

终于有人问出如何编译这种问题了……
相比我那个问根目录的还是差点。。。。。XD。。。
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

看了楼主的程序,还有代码,支持一下.
想了解楼主是怎样的一个人.

最后,我刚加入,希望能够在某些方面向大家学习.以后有不懂的请指教了.
恩,现在研究楼主的代码,如果有什么好的想法和建议,我会和楼主联系的.
(不过对于这种win下编程不是很熟悉,平时一般在UNIX下写,所以不懂的地方,还请各位指教)
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

船长:把斥体的名字改一下啊~~
不然的话此程序不能与以前第一个程序同时运行的
斥体名好像是Day_Running吧
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

//对楼主的程序做了改动,不过不知道这个修改是否造成程序上的漏洞
//而且不知道怎么联系楼主,所以就贴在这里了.

//如果我理解没有错误的话,.inf文件中,前面是CONTROLDATA数据,后面是40个
//EXEPATH数据(我是按照我这个理解来写的)


//将原来的ControlData 和 EXEPath更改到FileInfo 中来,然后设立一个全局的FileInfo指针.
//air.h
struct    FileInfo
{
    CONTROLDATA ControlData_;
    EXEPATH EXEPath_[5][8];
};
FileInfo* fileInfo;

//air.cpp
//添加2个宏,来防止对原程序作出改动:
#define        EXEPath (fileInfo->EXEPath_)
#define        ControlData (fileInfo->ControlData_)


//然后将原NoteRW进行修改.(需要C++编译器的支持)
//利用内存文件映射
//这样,就不需要单独的从文件中读取和写入操作,直接在内存中完成.
//看看,是不是少了好多行代码啊.
void NoteRW(HWND hWnd, int Mode)
{
    class NoteRM_C
    {
    public:
        NoteRM_C(void)
        {
            static char ConfigFileName[] = "AIR_Launcher_config.ini";
            int ConfigFilePathLength = 2000;
            char *ConfigFileNamePart;
            GetFullPathName(ConfigFileName,
                            ConfigFilePathLength,
                            ControlData1.ConfigFilePath,
                            &ConfigFileNamePart);
            HANDLE hFile =
                CreateFile(ConfigFileName,
                            GENERIC_READ | GENERIC_WRITE,
                            0, 0,
                            OPEN_ALWAYS,
                            FILE_FLAG_RANDOM_ACCESS,0);

            size_t fsize = sizeof(FileInfo);
            fileMap_s_ =
                CreateFileMapping(hFile,
                                0,
                                PAGE_READWRITE,
                                0,
                                fsize,
                                0);
            CloseHandle(hFile);
            fileInfo = (FileInfo*)MapViewOfFile(fileMap_s_,FILE_MAP_ALL_ACCESS,0,0,fsize);
        }
        ~NoteRM_C(void)
        {
            UnmapViewOfFile(fileInfo);
            CloseHandle(fileMap_s_);
        }
    private:
        HANDLE fileMap_s_;
    };

    static NoteRM_C file;
}

//air.cpp文件末尾
#undef    EXEPath
#undef    ControlData

//有其它意见我也会继续提出的.呵呵
TOP

回复:伪造小程序第二弹(程序托盘)(3月7日更新)

楼上的说得没错,这样该会使文件读写的效率提高很多。
只不过,EXEPath这个结构体里有几个很大的字符串数组,如果整体写入的话,那最后的文件会变得很大,估计有30多K,而单独写入的话,就可以按字符串的有效长度来写了,如果字符串是空的,就只写一个\0。
现在我也不知道哪种方法好,我再想想吧,同时再改改其他地方。
补一句,这个程序只在打开和关闭时读写文件。

还有,谢谢fish提醒我,没想到我留下了那么大的BUG,现在改了,顶楼的上传文件也换了。
KCDDP KR/KAG区值班室常驻义务值班员

现在在KCDDP的论坛也已经开始潜水了Orz
但是QQ群还是长期在线的
TOP