希德船长 - 2005/3/5 11:58:00
大家好,我又来发冒牌货了。
这次的目标是一个程序托盘。
就相当于一个打包的快捷方式,可以用这个小程序启动其他程序,这样我们的桌面就不用放那么多图标了。
这次的原版程序也是和chobits相关的,但是我的伪造的版本换成了AIR里的人物,功能进行了强化,和上次一样添加了自动停靠自动隐藏。
原版程序可加载56个EXE文件的链接,分7页,我改的分5页,能加载40个EXE文件的链接。
最后要说一句,我是个艺术方面的门外汉,图片处理得不好,还请见谅,如果有人帮我改一下更好。
原版的程序:[URL=upload/KFCFile3506_note.zip]上传文件3506[/URL]
我改的程序:[URL=upload/KFCFile3551_AIR_Launcher.zip]上传文件3551[/URL]
这个是源代码,有兴趣的可以看看:
[URL=upload/KFCFile3552_AIR_Launcher源代码.zip]上传文件3552[/URL]
3月7日:
修正了斥体同名冲突的大BUG,增加了程序附加参数的功能和对快捷方式的支持,可是,快捷方式无法显示图标,不知道怎么弄。
hisuiIBMPower4 - 2005/3/5 18:34:00
怎么编译啊成EXE啊?
hisuiIBMPower4 - 2005/3/6 6:56:00
介绍一本好吗?
Fantastical - 2005/3/6 14:24:00
源程序先收下了……可是没时间看…… T_T
现在发现大学真忙……学习的时间都不够……
windendless - 2005/3/7 3:59:00
终于有人问出如何编译这种问题了……
相比我那个问根目录的还是差点。。。。。XD。。。
封月翔天 - 2005/3/7 4:58:00
看了楼主的程序,还有代码,支持一下.
想了解楼主是怎样的一个人.
最后,我刚加入,希望能够在某些方面向大家学习.以后有不懂的请指教了.
恩,现在研究楼主的代码,如果有什么好的想法和建议,我会和楼主联系的.
(不过对于这种win下编程不是很熟悉,平时一般在UNIX下写,所以不懂的地方,还请各位指教)
fish - 2005/3/7 11:31:00
船长:把斥体的名字改一下啊~~
不然的话此程序不能与以前第一个程序同时运行的
斥体名好像是Day_Running吧
封月翔天 - 2005/3/7 13:22:00
//对楼主的程序做了改动,不过不知道这个修改是否造成程序上的漏洞
//而且不知道怎么联系楼主,所以就贴在这里了.
//如果我理解没有错误的话,.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
//有其它意见我也会继续提出的.呵呵
希德船长 - 2005/3/7 14:13:00
楼上的说得没错,这样该会使文件读写的效率提高很多。
只不过,EXEPath这个结构体里有几个很大的字符串数组,如果整体写入的话,那最后的文件会变得很大,估计有30多K,而单独写入的话,就可以按字符串的有效长度来写了,如果字符串是空的,就只写一个\0。
现在我也不知道哪种方法好,我再想想吧,同时再改改其他地方。
补一句,这个程序只在打开和关闭时读写文件。
还有,谢谢fish提醒我,没想到我留下了那么大的BUG,现在改了,顶楼的上传文件也换了。
封月翔天 - 2005/3/7 14:44:00
看到楼主的更改了,8 错的说,ini体积变小了,看来更改了文件结构。
还增加了末尾参数。有时间研究了。
不过还有建议,
1:不一定非要使用第一个图标,最好可以自己选择第几个图标。
2:打开非.exe文件...至于图标,可以使用注册表中的注册类型中的程序的图标来做。
而且同时增加前缀参数。比如 g++ -ofile.exe source.cpp之类的,
打开文件名: source.cpp 前缀参数 g++ -ofile.exe 启动程序:空
这样有些程序比较方便。
3:另外也是最次要的问题,弹出对话框的样子还真是不起眼,呵呵...
上面的我也只能提出意见了,对于win窗口,我是一窍不通了。
放飞心灵 - 2005/3/8 19:35:00
问一个小问题,程序启动后鼠标拖动程序窗口可以完成自动隐藏,光标靠近弹出程序窗口后,好象就不会自动隐藏了,这是为什么?和上次的日历一样的效果...要让它再次隐藏,只有再拖动一下程序窗口.
好象摸出点门道儿了,在程序窗口上点一下鼠标,它就钻到屏幕外面去了.
修拉雅 - 2005/3/8 19:55:00
满有意思的说。。。。先收下了恩~~
支持伪造物~~~呵呵