系统信息随心变

软件世界

  这是一个追求个性的年代,玩电脑也不例外。个性的启动音乐、桌面壁纸已经不再稀奇。很多人又修改了开机LOGO,Windows开机画面和关机画面等,而《电脑报》第44期C3版曾经介绍过一款OEM-DIY的软件,能打造个性的系统属性信息(在桌面上右键点选“我的电脑”,就可看到电脑的系统属性里OEM的图标和相关信息)。这款软件不仅可以在自己的兼容机中加入品牌电脑的LOGO及相关厂商信息,而且还能打造完全属于自己的品牌──加入自己喜欢的图片和相关信息。

  我们编程爱好者看到这么好的素材自然不能放过,今天就来尝试自己制作这款软件。相关程序及代码下载地址:http://www.cpcw.com/48/game.rar。

  一、透过现象看原理

  我们先来研究一下原理:软件要修改OEM图标及相关信息,需要添加一张自选的BMP图片并填入一些信息,根据经验,各种修改LOGO的方法一般都是将一张BMP格式的图片放在相应的文件夹下,然后修改成指定的文件名,LOGO图根据配置文件就能自动加载,替换掉原来的LOGO。

  因此猜测这款软件也是采用这种方法。那么如何找到需要修改的文件及存放目录呢?其实很简单,通过Windows的搜索工具就能迅速定位需要修改的文件。具体方法是打开前言提到的搜索软件(该软件下载地址:http://www3.skycn.com/soft/18139.html)OEM-DIY,然后将机器的时间修改到第2天,再修改系统信息,然后搜索查找修改后的这天有哪些文件被修改。

  很快,发现在C:\WINDOWS\system32目录下的oemlogo.bmp和oeminfo.ini两个文件被改动。通过打开观察这两个文件,确定需要修改的OEM的图片即需要存放在这个目录下的图片,并命名为oemlogo.bmp,且用记事本打开oeminfo.ini,按照下面的格式,将需要修改的OEM信息替换掉即可。

  [General]

  Manufacturer=(制造商信息)

  Model=(电脑型号)

  [Support Information]

  Line1=(技术支持信息,如需要分行显示,则在下面加入Line2-LineN)

  Line2=

  二、编程实现

  了解原理以后,那么只需要通过编程,让用户能通过软件进行简单的几步操作,完成OEM信息的修改就可以了。

  笔者使用的开发工具是C++Builder,界面设计如图。需要加入控件OpenPictureDialog、SavePictureDialog、Image、MainMenu及两个Memo、两个Edit。

  1.修改图片

  通过OpenPictureDialog控件,实现打开查找图片的窗口。在确定选取的图片后,在Image中显示需要修改的LOGO。部分代码如下:

  if(OpenPictureDialog1->Execute())

  {

  try{

  Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);

  }

  catch(...)

  {;}

  }

  而SavePictureDialog则负责实现在确定要修改OEM时,将Image中的图片保存入相应的文件夹内:

  Image1->Picture->SaveToFile("c:\\windows\\system32\\oemlogo.bmp");

  2.修改OEM信息

  在程序中,两个Edit控件负责实现填写制造商和电脑型号的相关信息,而两个Memo控件中的一个用来填写技术支持信息,另一个通过特定的格式,将所有信息都在最后确定要修改的时候,先自动复制到它里面,然后通过Memo2->Lines->SaveToFile("c:\\windows\\system32\\oeminfo.ini");语句保存Memo2内的信息为配置文件。

  自动复制信息到Memo2的代码如下:

  Memo2->Clear();

  Memo2->Lines->Add("[General]");

  Memo2->Lines->Add("Manufacturer="+Edit1->Text);

  Memo2->Lines->Add("Model="+Edit2->Text);

  Memo2->Lines->Add("[Support Information]"); //以上都是这个oeminfo.ini配置文件的特定格式及需要加入的OEM信息

  for(int i=0;iLines->Count;i++) //通过循环,将Memo1内每行填写的技术信息都转为“Line1=”的格式

  {

  Memo2->Lines->Add("Line"+IntToStr(i+1)+"="+Memo1->Lines->Strings[i]);

  }

  3.完善我的软件

  有了上面介绍的基础,一个修改系统相关信息的软件的基本功能已经实现,不过软件是给人用的。因此,友好的界面非常重要,我们其实还有工作可做。

  例如,加入一个GroupBox控件,就可以把Image控件放到这个控件上,通过调节大小,并将GroupBox的Caption属性修改成“预览:”,这样使用时就能很清楚地看到这个边框内显示的LOGO。

酷吗?属于自己的系统信息

  另外,还可以加入PageControl控件实现对软件的进一步的改良。加入这个控件,能实现分页管理各种功能。它还能添加新的一页,加入一些预先设置好的品牌机的OEM信息及LOGO,并用ComboBox控件实现下拉菜单的选择,而具体这些品牌的OEM信息配置文件及LOGO图,可以采用第44期介绍的那款软件的方法,新建一个文件夹,将相关信息分类放好。这样,只需要调取这些文件信息,并在最后确定需要修改时再保存到“c:\\windows\\system32”下即可。这些工作就留给有兴趣的读者去做了。

  三、小结

  编程爱好者在学习中常为寻找编程素材而烦恼,其实编程也如同其他学习一样,可以先从模仿做起。在网络发达的今天,要想找到实践编程的素材并不难,有很多共享软件都是很好的模仿素材。

  一些软件的原理可能非常简单,比如这款软件的功能就完全可以通过手工进行文件或是注册表的操作来实现,但毕竟也需要记住一些相关知识。在研究别人的软件并模仿时,也可以学习到别人的思路并激发自己动手的欲望,这也不失为一种学习方法。