显示标签为“windows”的博文。显示所有博文
显示标签为“windows”的博文。显示所有博文

2009年6月9日星期二

Windows下编译pychm模块

环境: Windows XP SP2, Python 2.5, Visual C++ Toolkit 2003, Platform SDK (2005.04)

1. 编译chmlib
源代码带了Visual Studio的工程文件,直接编译,可得到静态库libchm.lib
将libchm.lib改名为chm.lib

2. 编译pychm
1) 执行python-build-env.bat (具体说明见上次blog文章),其内容如下@echo off 
set VC_TOOLKIT_DIR=d:\Program Files\Microsoft Visual C++ Toolkit 2003\ 
call "%VC_TOOLKIT_DIR%\vcvars32.bat" 

set DISTUTILS_USE_SDK=1 

set MSSDK=d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\ 
rem set MSSDK=e:\msys\1.0.11\mingw\ 

set include=%MSSDK%include;%include% 
set lib=%MSSDK%lib;%lib% 

echo "Now you can continue with 'python setup.py build/install'" 

2) 将chmlib的目录加入include和lib环境变量
set include=e:\python\pychm-0.8.4\chmlib\src;%include%  
set lib=e:\python\pychm-0.8.4\chmlib\src\release;%lib% 

2) VC没有inttypes.h和strings.h,我也没有找到其它定义了uint8_t等类型和strcasecmp等函数的头文件,所以修改extra.c的如下两行
#include   
#include  
修改为:

#if !defined(_MSC_VER)
#include
#include
#else
    /* MSVC's C compiler doesn't support `inline' */
#define inline
typedef unsigned char   uint8_t;
typedef unsigned short  uint16_t;
typedef unsigned   uint32_t;
typedef unsigned long long   uint64_t;
#define strcasecmp  stricmp
#define strncasecmp strnicmp
#endif
3) 修改distutils\msvccompiler.py中MSVCCompiler.initialize()函数
 
self.ldflags_shared = ['/DLL''/nologo''/INCREMENTAL:NO']  
改为
self.ldflags_shared = ['/DLL''/nologo''/INCREMENTAL:NO''/NODEFAULTLIB:libc'


否则libc和msvcrt里面的一些函数会打架

4) python setup.py install

搞定

2008年11月23日星期日

Weekly Twitter 2008 #47

  • locate32不错,从界面来看正是我一直在找的代替Windows搜索的工具,我对TC的搜索结果界面不太满意

2008年2月9日星期六

wxWidgets和MFC混合编程

很多文章都讲到了将MFC程序迁移到wxWidgets上(首先要读的也许是IBM developerWorks上这篇 将MFC应用程序移植到Linux),但对于一个比较大的程序,要一下子完成移植也显得有些艰巨。所以我在琢磨有没有可能在一个程序中同时使用这两种技术(同时我看中了wxWidgets上使用wxPython时给应用程序带来的可扩展性,有兴趣的可以查看wxPython中的这个embed示例)。

wxWidgets的代码库中倒是有一个wx和MFC混合的例子(发布出来的2.6的代码包里面好像没有,2.8才有),它演示了如何在一个程序中分别有wx和MFC的窗口(分属于wxFrame和CFrameWnd类)。

但它没有解答的问题是:怎样将一个wx的控件放到MFC上面去,或者反过来

在这个例子中,如果你想将wx的窗口作为应用程序开始时显示的窗口,就需要这个:
   m_pMainWnd = new CDummyWindow((HWND) wxTheApp->GetTopWindow()->GetHWND());
如果你了解MFC对窗口的封装,就知道它基本没有自己的东西,CWnd这些类基本上没有自己的数据成员,基本上都是调用Windows API(只是把那些API中的HWND参数给省略了。所以任何一个Windows桌面上的窗口,要体现为一个CWnd类对象是很容易的,只需要调用CWnd::FromHwnd()或者CWnd::Attach()就可以了,示例中的CDummyWindow就是这样做的。基于这样的思路,我们很容易把其它的wx控件通过CDummyWindow放到MFC控件中去。
wxTreeCtrl * wxtree = new wxTreeCtrl(.....)
CDummyWindow *dummy = new CDummyWindow((HWND)wxtree->GetHWND());
dummy->SetParent(this);

我们需要其实不要CDummyWindow也没有问题,只要这样:
wxTreeCtrl * wxtree = new wxTreeCtrl(....)
::SetParent(HWND)wxtree->GetHWND(), m_hWnd);
但这里有另外一个问题: 创建一个wxWindow对象时是必须给出一个parent的,而这个parent又必
必须是wxWindow类型(除非为NULL)。

反过来要将MFC的东西放到wx上面就可以那么好运了,虽然也可以用上面这一招将MFC的控件显示出来,
但这些控件低于wx来说是透明的,你没法利用到wxSplitterWindow的分割功能,没法利用上各种layout manager/sizer。

wxWidgets For MFC Programmers(from wxWidgets Wiki)中讲述了如何将一个CWnd转换为wxWindow对象:

wxWindow * win = new wxWindow();
win->SetHWND((WXHWND)hWnd);
win->AdoptAttributesFromHWND();
win->Reparent(wxGetApp().GetTopWindow());

2007年8月26日星期日

Windows上几个免费反病毒工具

在Windows上如果不安装反病毒/反木马工具而上网冲浪(我们俗称“裸奔”),那是相当危险的。俺家另外一台电脑就因为反病毒程序过期了,昨晚就蓝屏一次,两次系统重启。
  • Avast! 它的Home Edition是免费的,只需要用e-mail登记一下,就可以免费使用一年,到期后再重新登记就可以。功能很全,有文件监控、网络监控、邮件监控等,可自动升级。俺目前在用这个
  • AVG Anti-Virus,它也提供了免费版本,另外还有AVG Anti-Spyware, AVG Anti-Rootkit这两个工具
  • Avira AntiVir,大家俗称“小红伞”,其Personal Edition Classic是免费的,口碑也很不错
  • Clam AntiVirus, 这个是完全GPL的,所以也有各种UNIX版本(不过似乎UNIX病毒比较少,不装问题也不大)。据说查杀病毒的能力相当强,不过没有实时监控能力。另外有一个完全针对Windows的变种ClamWin

2007年7月12日星期四

采用Total Commander打开目录

虽然有些新手觉得Total Commander跟Windows Explorer风格差异太大而不容易上手,但这对我并不是一个问题,因为我用它已经有七八年了。我现在基本不用Explorer。加上最近不知道为啥我的Explorer打开特别慢,就更不爱用它。

机器上装了Google Desktop,对于找到的文件,它提供了一个"打开文件夹"的功能,但很不爽的是,它总用Explorer打开。忍受不下去了,我开始想在它在Total Commander中打开。

到Google Desktop的安装目录和它的注册表中看了一下,没什么可以配置的。
然后上Google Desktop网站,想找一个可以设置这个的插件什么的,也没有。

猜想它是调用ShellExecute来打开的,接着就试图修改注册表中"目录(Directory)"和"文件夹(Folder)"的关联: HKCR\Directory\shell\下并没有open动作, 我添加了并设置命令为C:\Totalcmd\totalcmd.exe /O "%1"之后,ShellExecute(...,"open", ...)没有什么变化,会返回5(ERROR_ACCESS_DENIED),恢复原来的就可以正常打开,奇怪; 修改HKCR\Folder\shell\open\command的值再试却没反应。

某天发现Directory Opus这个软件可以跟Windows系统集成,接管文件夹的打开操作,就安装了一个试用版本,发现它是这样的:
1. 先给HKCR\Directory\shell\下添加一个动作dopus(再下面command键值设置为dopus的命令行)
2. 将HKCR\Directory\shell的缺省值由none改为dopus,这样它的缺省动作就是dopus了
(对于Folder也同样设置。Folder是文件夹,包含Directory和其它一些不跟实际文件系统目录对应的)

俺照猫画虎,添加了一个wincmd动作,将Directory的缺省动作设置为wincmd,再试,搞定!

转成注册表操作就是如下:
[HKEY_CLASSES_ROOT\Directory\shell]
@="wincmd"
[HKEY_CLASSES_ROOT\Directory\shell\wincmd]
@="Open in Total Commander"
[HKEY_CLASSES_ROOT\Directory\shell\wincmd\command] @="C:\\Totalcmd\\totalcmd.exe /O \"%1\""

补充说明:
1. 这只对ShellExecute时没有指定第二个参数(动作)时是可行的,而Google Desktop恰恰是这样,"运行"对话框也是。但如果它指定了动作是"open",那就只会走open动作了
2. HKCR\Folder\shell\command的值是REG_EXPAND_SZ格式而不是通常的REG_SZ(字符串)格式,奇怪

2006年11月17日星期五

Joel: UNIX与Windows二元文化

买了一本《Joel谈软件》在看,里面有一篇《二元文化》讲到了Windows与UNIX在文化上的差别。

搜了一下,找到了原文Biculturalism 和繁体翻译《双元文化主义》。

这是篇老文章了,说UNIX倡导的是对其他程序员有用的输出,而Windows倡导的是让你的姨妈能够用软件做点事情。倒无所谓谁对谁好,只是出发点不一样。有一腚道理哈。

2006年11月2日星期四

Total Commander 7.0 beta现身

Finally Total Commander 7 public beta is available!
Please report bugs here in the beta bugs forum, ONE BUG PER MESSAGE!
There is also a general discussions forum.

我比较喜欢的几个功能:

Compare by content now allows to edit files, and to re-synchronize manually.
本来一般都用Beyond Compare或者WinMerge,但同步目录的时候会自动使用这个内置的比较器,所以能编辑真是太好了,不过作者说过TC7允许使用第三方工具的,不 知道实现了没有。
Separate tree panel: Either one for both file panels, or one for each.
总算有个独立的树了。
Exclude directories in "Show"-"Custom...", e.g. with *.* | .cvs.
这个功能俺想了很久了,尤其是在wine里面用的时候,HOME目录下一堆的.*文件很是扎眼(为什么wine不将它们解释成隐藏文件?)
Alias commands for the command line for internal commands or external programs.
快捷键定义多了也记不住(而且大部分Ctrl+?快捷键已经用光了),所以在命令行上敲一个"//syncchangedir"或者 "//toggletree"也不错,呵呵
Internal command selection dialog.
这条没有在帮助文件的What's New总列出,但这个版本对于TC的内部命令增强了不少,除了在配置工具条或者快捷键时按分类和关键字查找(比原来那个长长的下拉框强几百倍啊),还可在 命令行上直接使用cm_mkdir, cm_switchhidsys这些内部命令(如果怕记不住,也可以用cm_CommandBrowser打开上面说的这个对话框去找:-)
total commander 7.0 beta

2006年5月26日星期五

Joel: UNIX与Windows二元文化

买了一本《Joel谈软件》在看,里面有一篇《二元文化》讲到了Windows与UNIX在文化上的差别。

搜了一下,找到了原文Biculturalism 和繁体翻译《双元文化主义》。

这是篇老文章了,说UNIX倡导的是对其他程序员有用的输出,而Windows倡导的是让你的姨妈能够用软件做点事情。倒无所谓谁对谁好,只是出发点不一样。有一腚道理哈。

2006年5月7日星期日

用coLinux玩虚拟Linux

开始看见这个东西还是在kde-cygwin的新闻栏,该项目负责人在解释为什么停止kde-cygwin时提及了两个外部因素,一个是X.org的Windows版本Xming,另一个就是允许在Windows上运行Linux的coLinux

但因为原来比较熟悉VMWare,所以也没有去试这个coLinux。节前工作略有点闲,于是玩了一下这个Cooperative Linux




1. 安装

安装比较简单。安装程序一步步走下来,再安装说明文件配置一下就可以了。

coLinux的运行有两种方式,一种是普通程序方式,另一种是服务方式,建议先用普通方式,系统基本配置完成后再安装为服务。

2. Linux系统

coLinux预备了几个磁盘镜像可供下载,可免去自己配置cofs等设备驱动的麻烦。俺用了Debian 3.0r0的那个,解压后是1G。

另外需要自己做一个swap device,如果有cygwin就比较简单:

dd if=/dev/zero of=swap bs=1024k count=512

然后修改一下配置文件里面的设置就可以了。

coLinux目前带的Debian磁盘镜像是3.0r0的,俺开始就想用apt直接升级为testing,没想到因为包依赖关系会造成严重问题,只得重来。这次先升级到最新的stable(3.1r2),然后在升级到testing。

3. 网络

用coLinux比较复杂的一步是配置网络,同VMWare一样,它也提供了NAT和Bridged两种方式,只是配置起来比较麻烦,关键是要搞明白自己的网络环境适合用那种方式。所以一定要看wiki上的配置说明

我用的是NAT方式,采用TAP驱动(另一个选择是winpcap),倒也简单,在“网络邻居”里面将“真实”网络设备共享出来就可以了(在网络设置的“属性- 高级”里设置)。

4. 运行X程序

coLinux并没有象vmware那样也虚拟一个显卡设备出来,所以要运行X程序有两种方式,一种是其他地方的X server(比如cygwin的X或者Xming)来显示,另一种就是用vncserver。

考虑到虚拟世界还是有点慢,俺没有安装GNOME或KDE,只装了一个xfce4,浏览器用opera(还兼有邮件客户端)。

2006年3月20日星期一

OpenQ的群补丁(附win32版本)

网友mars_engle再次给出了openq的补丁,修正了使用的问题。

俺马上编译了win32版本,可从这里下载: http://bamanzi.inlsd.org/win32/openq

似 乎目前还不能自动读取群列表,也不能新加入群。打开群的方法是: 工具->帐户操作->QQ->Qun:Search a permanent Qun,然后输入在打开“房间列表”窗口中选择QQ帐号,点击"获取列表",输入群号,获取成功的话则会添加一个图标到主界面。

2006年2月11日星期六

pythonwin debugger menu

我很不习惯pythonwin将运行和调试菜单项目放在"File"菜单下,觉得放在主菜单上比较合适一点,而且可以少点一级。

于是拿出reshacker, 打开win32gui.pyd,将菜单资源修改了一下。

11128 MENU

POPUP "&Run"
{
MENUITEM "&Run...\tCtrl+R", 36864
}

11130 MENU

POPUP "&Run"
{
MENUITEM "Chec&k\tCtrl+Shift+C", 36881
MENUITEM "&Run...\tCtrl+R", 36864
MENUITEM "&Import..\tCtrl+I", 36867
MENUITEM SEPARATOR
MENUITEM "&Go\tF5", 15022
MENUITEM "Step &in\tF11", 16013
MENUITEM "Step &out\tF10", 15020
MENUITEM "&Stop\tShift+F5", 16010
MENUITEM "Toggle Breakpoint\tF9", 16004
MENUITEM "Stop Debugging", 16010
MENUITEM SEPARATOR
MENUITEM "Watch List", 40002
MENUITEM "Stack View", 36888
MENUITEM "Breakpoint List", 36889
}


2006年1月26日星期四

SmoothGNOME for Windows XP

呵呵。



User Comments
世界變了
semson | 30 一月, 2006 15:15
向來只有人在gnome上套用xp them, 現在居然有人 "亦" 向行事 ;)
and clearlooks
bamanzi | 30 四月, 2006 21:06
http://www.deviantart.com/view/17870413/ http://www.deviantart.com/deviation/18777943/

2006年1月2日星期一

闲话UI: 选择目录对话框

很多时候我们都会要求让用户选择一个文件夹。在很多论坛上都会有朋友问到这个问题:怎么能够显示如下一个对话框?

这用ShBrowserForFolder这个Windows API可以实现。
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
LPBROWSEINFO lpbi
);

在Delphi中有下面这个函数可以使用:
function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload; (1)

但我更喜欢用这个(在一些简单的场合):
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload; (2)


但很多朋友不愿意,认为后面这个太难看。但在我看来,第一个对话框在可用性上是存在很大问题的:
* 不能设置(并展开到)缺省的选择
* 不能手工输入,这使得要进入一个层次深一点的目录非常麻烦
* 不能新建目录

其 实就ShBrowserForFolder这个API而言,第一个问题是很容易解决的,不过M$提供的是一种挺麻烦的方式: 你必须得编写回调函数(BrowseCallbackProc),在BFFM_INITIALIZED消息里面发送BFFM_SETSELECTION消 息。(我觉得Delphi在提供SelectDirectory(1)这个函数时就应该包装这个功能。)

对于第二个问题, 如果你的shell32.dll版本大于或等于4.71, 就可以有个手工输入路径的编辑框了, 只要在flags中包含BIF_EDITBOX;

对 于第三个问题, 如果你的shell32.dll版本大于或等于5.0, 就可以有个"新建文件夹"按钮了, 只要在flags中包含BIF_NEWDIALOGSTYLE (而且这个版本有其他一些特性: 对话框大小可调, 目录可拖动, 目录有context menu(这可以带来其他一些功能)。

BTW:
1. lazarus中有TSelectDirectoryDialog控件,功能上等于Delphi的SelectDirectory(1)函数加上设置缺省目录功能。
2. DFS套件(Torry.Net上的信息)里面有一个dfsBrowseDirectoryDlg控件,支持shell32 5.0的NewDialogStyle,对这个功能包装得比较完整(其实上面的第三个图用得就是这个控件),要添加新版本的特性(比如6.0的BIF_NOTRANSLATETARGETS等)也很容易。

2005年10月28日星期五

xp? sawfish?

这个窗口边框的装饰是不是有点象sawfish?



来自deviantART的winxp theme: Opus,至少可以让你的Windows XP的窗口边框小很多,节省不少空间(反正这之前我的xp都是设置为传统样式,而不用XP的缺省风格――我就不明白,M$新增了theme功能,怎么就不能提供一个好一点的缺省theme?)

2005年9月23日星期五

Windows也可用gaim同时登录MSN, QQ和Gtalk

下载了最新的GaimOpenQ的Windows版本, 安装很顺利, OpenQ跟gaim之间也没有版本兼容性问题。跑起来gtk也不象原来那么容易崩溃了(至少dia的windows版本很是让人不爽)。这下Windows也可以顺当地同时使用MSN, QQ和Gtalk了。

2005年6月22日星期三

神奇的format.com!

有奖竞猜:
启动到DOS,执行format /q E:,会发生什么结果?

我不知道在别人那里是不是这样,反正在我的机器上是: 用dir可以看出,E盘被格式化了,但C盘也被格式化了。然后重启,发现原来E盘没有被格式化,C盘倒是确实被格式化了。

今天在公司重装机器时就这样被M$捅了一刀,C盘的东西都没有来得及备份,本来是想把E盘格了将C盘ghost过去的,结果... 试了MS-DOS 6.22和Norton 8.0的unformat,都无力回天,只好看着它们离我远去...

然 后format /?看见它说它的命令格式是format drive: [/Q]...还怀疑是应该将选项/q放在最后面才行,它没有在/q前看见盘符就以为是格式化C盘了(以M$软件一向羸弱的命令行支持,我相信这也是有可 能的)。没想到实验换过来还是不对,还是开始好像两个盘都被格式化了,重启后发现要格式化的盘完好,C盘确被搞定了。

我用的是Windows 98的启动盘里面的format.com。

2005年4月8日星期五

Win2000如何设置应用程序兼容模式

How to Enable Application Compatibility-Mode Technology in Windows 2000?

TIM3(The Incredible Machine 3)好像是在windows 3.1时代写的,在win2000和winxp上都不能直接跑不起来(在win98上面倒是没有问题),但winxp上可以设置兼容模式,设置到 win95兼容模式就可以跑了。但win2000上怎么设置兼容模式呢?

在google上搜了一下,得到如下结果
1. 前提是必须有SP2以上的补丁
regsvr32 %systemroot%\apppatch\slayerui.dll
然后对要在兼容模式下运行的程序创建快捷方式,在快捷方式的属性中可以见到新的一页“兼容性”,选择一个即可
2. 在win2000的安装盘上有一个apcompat.exe,运行它,它可以允许你选择兼容模式,还有几个选项

不过都没用,这个游戏还是不能跑起来(Damned M$!),我只能玩TIM-Toon或者玩DOS版本的v1, v2了 :-(

链接:
Description of the Application Compatibility Tool
http://support.microsoft.com/?kbid=251062

How To Enable Application Compatibility-Mode Technology in Windows 2000 SP2 and SP3
http://support.microsoft.com/default.aspx?scid=kb;en-us;279792

Windows 2000 Compatibility Mode
http://www.windowsitpro.com/Windows/Article/ArticleID/43388/43388.html

How to Enable Application Compatibility-Mode Technology in Windows 2000 Service Pack 2
http://activewin.com/tips/win2000/1/2000_tips_43.shtml

2005年3月30日星期三

foobar2k/winamp + cdplayer.ini

我比较喜欢用cdplayer.ini来作为存放CD曲目名称的地方。但现在更多地是在用foobar2000和winamp在播放音乐,在网上搜索了一阵,找到了相应的插件

foobar2000:
http://www.digitalblues.org/fb2k/
http://www.hydrogenaudio.org/forums/index.php?showtopic=9840&hl=cdplayer.ini


winamp:
http://www.url.ru/~copah/CDReader.htm
http://www.mpex.net/software/download/cdreader.html


[@more@]

先后用过好多种CD播放软件,常常在里面输入CD和曲目的名称,但换个工具后又要重新输入,麻烦的紧。
解决这个问题的一个方法是采用支持CDDB的播放器,将曲目名称上载到一个服务器上。
但并不总是在线上,于是开始寻找一个可以交换数据的方式。

我还是比较喜欢win98下的CD播放器,它将数据保存在cdplayer.ini,文本文件,很直观的一种方式。
但win2000里面的CD播放器是另外一个样子,win98的cdplayer.exe拿过来又不能用。
所以后来我将一个用作Delphi示例的CD播放器修改了一下,添加了cdplayer.ini支持,

但其实现在更多地是在用foobar2000和winamp在播放音乐,所以想找相应的插件。

2005年3月15日星期二

TaR_nircmd: nircmd -> TypeAndRun connector

TypeAndRun 是一个微型的控制台, nircmd是个多功能的命令行小程序。

因为nircmd的功能太多,记不住参数,所以给TypeAndRun写了一个插件( typeandrun connector">tar_nircmd.dpr), 将nircmd的命令转换为内部命令,同时具有参数提示功能。

[@more@]

TypeAndRun 这个东西开始是在totalcmd.net上看见的(链接),

This program is a hot-key enabled console which allows you to start any applications, open any documents, URLs, mail addresses and folders. Forget shortcuts and various fast start panels. This program will suit those who love *nix systems, who are used to run applications through the command line, who type fast and who like hot keys.

想来是因为我用UNIX比较多,对这个东西的确比较有兴趣。



东西是在Snoopy汉化的xplorer2里面看到的,当时是因为它有一个nircmd cdrom open/close的功能
但这个小玩意的功能相当多,修改ini、注册表、文件属性,重启动,创建快捷方式,等等

我已经用来它来记录我常用的totalcmd设置和快捷键,这样我就不用每次安装了totalcmd后都麻烦地修改设置,
只需要执行如下的nircmd脚本文件(nircmd script mytc.ncl)就可以了:
inisetval .wincmd.ini Configuration StartupScreen 0
inisetval .wincmd.ini Configuration ShowHiddenSystem 1
inisetval .wincmd.ini Configuration "Aligned extension" 0
inisetval .wincmd.ini Configuration UseRightButton 1
inisetval .wincmd.ini Configuration MarkDirectories 1
inisetval .wincmd.ini Configuration AltSearch 1
inisetval .wincmd.ini Configuration Win95Delete 1
inisetval .wincmd.ini Configuration IconsOnNet 0

inisetval .wincmd.ini ShortCuts F2 cm_RenameOnly
inisetval .wincmd.ini ShortCuts C+A cm_SelectAll
inisetval .wincmd.ini ShortCuts C+Z cm_ClearAll
inisetval .wincmd.ini ShortCuts C+S cm_SearchFor
inisetval .wincmd.ini ShortCuts C+INS cm_CopyFullNamesToClip
inisetval .wincmd.ini ShortCuts A+INS cm_CopyNamesToClip
inisetval .wincmd.ini ShortCuts C+G cm_CompareFilesByContent
inisetval .wincmd.ini ShortCuts C+H cm_FileSync
inisetval .wincmd.ini ShortCuts C+M cm_EditComment
inisetval .wincmd.ini ShortCuts CA+T cm_MultiRenameFiles
inisetval .wincmd.ini ShortCuts A+PGDN cm_SrcOpenDrivesh_profile


插 件本身没有什么可以多说的。感觉对于subcmds处理不太好,目前键入~cdrom只能出现~cdrom [open|close], 用alt+down可以下拉出~cdrom open {drive}和~cdrom close {drive}两项。我不想每次都alt+down才出现可用的subcmds,所以做成了这样。其实要是能像Delphi的code completion那样自动出现下拉框就好了。

2005年3月13日星期日

转: 如何优化WINDOWS XP操作系统?

老有人问,贴在这里让他们来找吧。破XP,烦死了
  • 关闭报告错误
  • 关闭系统还原及休眠支持
  • 删除Windows XP 中不需要的组件
  • 如何提高Windows XP 的运行速度?
  • 禁用Dr. Watson 调试程序
[@more@]
此案例仅供参考,(适合对系统比较了解,对系统要求比较高的用户可以参考。)

关闭报告错误
-------
点开始-〉运行-〉敲入msconfig-〉服务-〉把Error Reporting Service 单选框的勾点掉,再点确定就
OK 了。以后再也没有程序因错误或兼容性不好被强行关闭后弹出的讨厌的报告错误对话框了

关闭系统还原及休眠支持
---------------
虽然这两项功能也并非完全没有任何作用,但考虑到需要需要占用很大的硬盘空间,所以最好把它们
关闭;首先鼠标右健单击桌面上的"我的电脑",选择"属性",找到"系统还原(System Restore)",在"Turn off
System Restore on all drives"前打上勾就可以了。
休眠支持只需要通过控制面板-> 电源选项-> 休眠(Hibernate),把"Enable Hibernate"前面的勾去掉就可
以了,这样一来可以空出512MB 的硬盘空间。

删除Windows XP 中不需要的组件
---------------------
1)、删除系统文件备份,执行sfc.exe /purgecache
2)、删除驱动备份,删除WINDOWS(XP 安装目录)driver cachei386 目录下的Driver.cab 文件
3)、删除DLL 备份文件,目录为WINDOWS(XP 安装目录)system32dllcache,
4)、删除WINDOWS(XP 安装目录)ime 下不用的输入法

如何提高Windows XP 的运行速度?
-----------------------
Windows XP 虽然提供了一个非常好的界面外观,但是不可否认这样的设置也在极大程度上影响了系统
的运行速度。如果你的机器运行起来速度不是很快,建议将所有的附加桌面设置取消,也就是将Windows
XP 的桌面恢复到Windows 2000 样式。设置的方法非常简单,在"我的电脑"上单击鼠标右键,选择"属性",
在"高级"选项卡中单击"性能"项中的"设置"按钮,在关联界面中选择"调整为最佳性能"复选框即可。此外,
一个对Windows XP 影响重大的硬件就是内存。使用256MB 内存运行Windows XP 会比较流畅,512MB 的
内存可以让系统运行得很好。

禁用Dr. Watson 调试程序
-----------------
在运行中输入"drwtsn32",然后把除了"(Dump All Thread Contexts)转储全部线程上下文"之外的全都
去掉,否则一旦有程序出错,硬盘会响很久,而且会占用很多硬盘空间。