欢迎访问smilecn的博客
DELPHI中MessageBox的用法
MessageBox对话框 输入控件的 ImeName属性把输入法去掉就默认为英文输入了
MessageBox对话框是比较常用的一个信息对话框,其不仅能够定义显示的信息内容、信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对话框信息提示图标,而且可以定义按钮组合及对话框的标题,是一个功能齐全的信息对框。
1、函数原型及参数
function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
Text:欲显示的信息字符串。
Caption:对话框标题字符串。
Type:对话框类型常量。
该函数的返回值为整数,用于对话框按钮的识别。
2、类型常量
对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。
(1)按钮组合常量
MB_OK = $00000000; //一个确定按钮
MB_OKCANCEL = $00000001; //一个确定按钮,一个取消按钮
MB_ABORTRETRYIGNORE = $00000002; //一个异常终止按钮,一个重试按钮,一个忽略按钮
MB_YESNOCANCEL = $00000003; //一个是按钮,一个否按钮,一个取消按钮
MB_YESNO = $00000004; //一个是按钮,一个否按钮
MB_RETRYCANCEL = $00000005; //一个重试按钮,一个取消按钮
(2)缺省按钮常量
MB_DEFBUTTON1 = $00000000; //第一个按钮为缺省按钮
MB_DEFBUTTON2 = $00000100; //第二个按钮为缺省按钮
MB_DEFBUTTON3 = $00000200; //第三个按钮为缺省按钮
MB_DEFBUTTON4 = $00000300; //第四个按钮为缺省按钮
(3)图标常量
MB_ICONHAND = $00000010; //“×”号图标
MB_ICONQUESTION = $00000020; //“?”号图标
MB_ICONEXCLAMATION = $00000030; //“!”号图标
MB_ICONASTERISK = $00000040; //“i”图标
MB_USERICON = $00000080; //用户图标
MB_ICONWARNING = MB_ICONEXCLAMATION; //“!”号图标
MB_IConERROR = MB_ICONHAND; //“×”号图标
MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
MB_ICONSTOP = MB_ICONHAND; //“×”号图标
(4)运行模式常量
MB_APPLMODAL = $00000000; //应用程序模式,在未结束对话框前也能切换到另一应用程序
MB_SYSTEMMODAL = $00001000; //系统模式,必须结束对话框后,才能做其他操作
MB_TASKMODAL = $00002000; //任务模式,在未结束对话框前也能切换到另一应用程序
MB_HELP = $00004000; //Help Button
3、函数返回值
0 //对话框建立失败
idOk = 1 //按确定按钮
idCancel = 2 //按取消按钮
idAbout = 3 //按异常终止按钮
idRetry = 4 //按重试按钮
idIgnore = 5 //按忽略按钮
idYes = 6 //按是按钮
idNo = 7 //按否按钮
QQ堂机械绝招
十招保护Linux系统安全
嘿!奔奔!
小时候看的动画片《嘿!奔奔》
一直不能忘记,今天在网上看到了《奔奔》的歌词,贴过来,一起回忆一下幼年看的动画片:)
《嘿!奔奔》
剧集总数:130集 每集只有10分钟
一个从蛋里出来的小汽车,会说话,会肚子饿,会吃饭,闻了花香就特别有劲儿。
奔奔遇到了一个小男孩,好像叫做阿健吧,还有一条小狗,他们一起结伴去找奔奔的妈妈。
但是,大鼻头的坏博士总是想抓住奔奔去进行研究,于是,奔奔他们就在找妈妈的路上,一边跟坏博士斗智斗勇,一边助人为乐。
当然,奔奔和阿健这对好伙伴也产生过矛盾,但是他们最终都是理解彼此,互相谅解,友情也越来越深了。
这部动画片,除了卡通造型可爱,而且还富有教育意义,实在是不可多得的一部好片子。在我看来,比《圣斗士》一类的更有益于少年儿童的成长吧。
还有主题曲:P
奔…奔,奔奔奔奔奔奔奔奔奔,我名叫奔奔,奔奔。
圆圆的轮子,凹凸的山路也不怕,我也不怕,凹凸的山路也不怕。
我要到哪就到哪,就到哪。
奔…奔,奔奔奔奔奔奔奔奔奔,我会跑又会游泳又会飞翔,一张大嘴巴还会说话。
奔…奔,奔奔奔奔奔奔奔奔奔,我会跑又会游泳又会飞翔,踏遍天涯海角找妈妈。
片尾曲:P
晴空万里晴空万里微风荡漾
朵朵白云朵朵白云阳光灿烂
只要我跃上你的你的背梁
这就是啊四海
来吧快出发
奔奔奔奔奔奔奔
管它是天涯海角
奔奔奔奔奔奔奔
管它是天涯海角
天涯海角
没有道路问问小鸟就知道
踏遍五洲也要找到梦中的乐园
交叉编译场景分析(arm-linux)(一)--基本知识
转载时请注明出处:http://blog.csdn.net/absurd
1.基本知识
在linux下,绝大部分的软件包都是用autoconf配置的。除此之外,比较有名的就是X11的imake配置方式,imake实际上有点过时了,用起来很不方便,所以xfree86已经计划向autoconf移植了。还有极少的直接使用Makefile编译,通过环境变量或者不同的Makefile配置,当然这只适用于简单的软件包。
Autoconf是一个非常有用的配置工具,原理有点复杂,全面了解它要花不少时间,但使用很方便。这里简单介绍一下autoconf交叉编译的基本知识。
下载软件包无非两种方式,一种是直接从cvs里取最新版本,另一种是取发布的稳定版本。除非你想测试最新版本,否则后者是比较安全的方式。但有的软件包不提供发布的版本,这时就只能退而求其次了-使用cvs版本了。
编译cvs版本有一点不同,cvs版本通常不带configure脚本的,自己要重新产生configure脚本。当然这并不困难,多数开发人员都会在自己的软件包里,放上一个autogen.sh或者bootstartup之类的脚本。利用这个脚本可以自动产生configure脚本。下面是一个autogen.sh脚本示例,若软件包里没有提供这样的文件,可以仿照写一个:
#!/bin/sh
# $Id: autogen.sh,v 1.3 2005/02/26 01:47:22 kergoth Exp $
autoreconf -f -i -I `pwd`/m4
exit $?
echo -n "Libtoolize..."
libtoolize --force --copy
echo "Done."
echo -n "Aclocal..."
aclocal
echo "Done."
echo -n "Autoheader..."
autoheader
echo "Done."
echo -n "Automake..."
automake --add-missing --copy
echo "Done."
echo -n "Autoconf..."
autoconf
echo "Done."
#./configure $*
echo "Now you can do ./configure, make, make install."
正式发布的软件包里,已经有做好的configure脚本了。接下来我们要做的就是利用configure进行配置。对于交叉编译来说,最重要的配置选项有以下几个:
--host:指定目标机的平台类型。一般格式为CPU类型-操作系统名称。比如,目标机的CPU为arm,操作系统为linux,可以这样写--host=arm-linux。
--prefix:这是安装路径的前缀,即编译结果放置的位置。默认值是/usr或者/usr/local,交叉编译时不能使用默认值,否则它会覆盖你本机的文件,所以要指定一个路径。比如,可以指定为--prefix=/work/cross/rootfs/usr。
配置完成后,运行make编译,运行make install安装。
(pkg-config也是一个非常重要的工具,关于pkg-config的使用,可以参考笔者另外一篇文章,这里不再多说。)
2. 文档惯例及隐含前提:
交叉编译器名称:arm-linux-gcc
交叉编译器版本:3.4.3
目标操作系统版本:2.6.9
默认依赖关系:依赖glibc
隐含环境变量:
WORK_DIR:工作目录,设置为/work/cross
ROOTFS_DIR:编译结果根目录,设置为$WORK_DIR/rootfs
ARCH:目标平台的体系架构,设置为arm
建立一个脚本用于设置变量和建立必要的目录,在编译前,先运行. corss.env。 其内容如下:
cross.env
export WORK_DIR=/work/cross
export ROOTFS_DIR=$WORK_DIR/rootfs
export ARCH=arm
export PKG_CONFIG_PATH=$ROOTFS_DIR/usr/local/lib/pkgconfig:$ROOTFS_DIR/usr/lib/pkgconfig:$ROOTFS_DIR/usr/X11R6/lib/pkgconfig
if [ ! -e "$ROOTFS_DIR/usr/local/include" ]; then mkdir -p $ROOTFS_DIR/usr/local/include;fi;
if [ ! -e "$ROOTFS_DIR/usr/local/lib" ]; then mkdir -p $ROOTFS_DIR/usr/local/lib; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/etc" ]; then mkdir -p $ROOTFS_DIR/usr/local/etc; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/bin" ]; then mkdir -p $ROOTFS_DIR/usr/local/bin; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/share" ]; then mkdir -p $ROOTFS_DIR/usr/local/share; fi;
if [ ! -e "$ROOTFS_DIR/usr/local/man" ]; then mkdir -p $ROOTFS_DIR/usr/local/man; fi;
if [ ! -e "$ROOTFS_DIR/usr/include" ]; then mkdir -p $ROOTFS_DIR/usr/include; fi;
if [ ! -e "$ROOTFS_DIR/usr/lib" ]; then mkdir -p $ROOTFS_DIR/usr/lib; fi;
if [ ! -e "$ROOTFS_DIR/usr/etc" ]; then mkdir -p $ROOTFS_DIR/usr/etc; fi;
if [ ! -e "$ROOTFS_DIR/usr/bin" ]; then mkdir -p $ROOTFS_DIR/usr/bin; fi;
if [ ! -e "$ROOTFS_DIR/usr/share" ]; then mkdir -p $ROOTFS_DIR/usr/share; fi;
if [ ! -e "$ROOTFS_DIR/usr/man" ]; then mkdir -p $ROOTFS_DIR/usr/man; fi;
颜色字体含义
红颜色字体 表示错误信息。
蓝颜色字体 表示命令行脚本。
黄颜色字体 表示文件内容。
文档格局:
1. 基本信息:
软件名称
功能简述
下载地址
软件版本
依赖关系
前置条件
2.过程分析
构建过程中遇到的问题分析。
3.构建处方
通常是一个可用的Makefile,用它可以编译这个模块。或者一些patch文件。
Bash readline 使用技巧
很多人会用 Bash,但是很少有人知道 readline 是怎么回事。readline 是一个强大的库,只要使用了它的程序,都可以用同一个配置文件配置,而且用同样的方法操作命令行,让你可以方便的编辑命令行。 Readline 软件包是一个提供命令行编辑和历史纪录功能的库集合。
使用 readline 的程序现在主要有 Bash, GDB,ftp 等。readline 付予这些程序强大的 Emacs 似的命令行编辑方式,你可以随意绑定你的键盘。
在下文中,我们经常提到 "C-x r" 这类键操作。"C-x r" 其实就是按Ctrl-x,然后按 r。同理 "C-M-@" 就是按 ctrl-alt-@(M表示meta, 在 PC 上就是 Alt 键),但是其实 @ 是shift-2 (看看你的键盘)。所以 "C-M-@" 实际上要你按 ctrl-alt-shift-2。
但是在配置文件里的键序列中,我们把 "C-x r" 表示为 "\C-xr", 把 "C-M-@" 表示为 "\C-\M-@",你自己看看就知道怎么回事了。同理 "Esc a" 别表示成 "\ea"。
这就是 Emacs 里的按键的通常标记方法。EMACS = Esc Meta Alt Ctrl Shift :)
在自己配置命令行之前,我们先来看看利用缺省的键绑定能够进行的一些巧妙的用法:
你是否经常出现这种情况?你想把 ~/text-browser/ 目录下的3个.tar.gz文件搬到/sr3/software/,于是你输入:
$mv ~/text-browser/*.tar.gz /usr3/software/
我想你一定已经知道,打入 ~/text 之后按 TAB 就可以补全text-browser这个长文件名吧?这是Bash 的基本功能。我废话?好了,就当你知道吧。不过今天我要讲的东西比这个复杂一些。
Go on! 刚刚输入到这里,你突然想起,应该在 /usr3/software/ 下先建立一个目录叫browsers,这样放进去的文件比较好管理。
于是你 Ctrl-u,删掉了这行命令。唉呀,这么长的命令一下就没了。是不是有点可惜?这还不算麻烦。然后你
mkdir /usr3/software/browser mv ~/text-browser/*.tar.gz /usr3/software/browser嗯。TAB 是帮了你不少忙。可是你实际上有更好的办法来完成这项工作。好吧,看看 readline 怎样神奇的完成你的任务:
我们回到这种情况:
$mv ~/text-browser/*.tar.gz /usr3/software/你刚才是按了 Ctrl-u 删除了所有输入的东西。可惜啊!你要是按 M-#(也就是按住 PC 机的 Alt 键,再按 #,实际上就是 Alt-Shift-3),那么 Bash 就会在这样最开头插入一个 "#",然后输入这行。这样命令就被作为一行注释载入了历史。
这有什么好处?这样你的这行命令里的内容就可以被再次利用。看着:你接着输入:
mkdir ...等等,你是不是想输入 /usr3/software/?你不用再敲一遍了!直接按 M-.(Alt 加句号),看看, /usr3/software/ 是不是出现在命令行上了?M-. 就是调用了 yank-last-arg 函数,把上一条命令的最后一个参数放在命令行上。好了,回车吧!
你接着输入:
mv ...等等,这下是该输入 ~/text-browser/*.tar.gz 了。烦不烦啊?换一种方式吧。请按:"M-1 M-."(把上一条命令的第一个参数放在命令行上)。这样命令行成为了:
mv /usr3/software/browser怎么成这样了?看看你的“上一条命令”是什么吧?是……你自己看。所以这个参数不是你想要的。那么继续再按一次 "M-."。看到了吧?你的命令行已经成为:
mv ~/text-browser/*.tar.gz好。打一个空格。再按一下 "M-."。命令行变成了:
mv ~/text-browser/*.tar.gz /usr3/software/browser这就是你想要的!
是不是看起来你还是花了不少工夫?但是想一想,如果你是要执行这样一个命令呢?
mv /data/ftp/pub/TUG/texmf/tex/latex/CJK/GB/GB.cap \ /usr/local/texlive/texmf-local/tex/latex/CJK/GB/嗯。记住这个有用命令:M-. , 它的前面可以用 M-0, ... 作为数字参数。
你知道 TAB 可以补全命令行上很多东西。可是你遇到这种情况的时候怎么办?
man a-very-very-long-command-name你输入了 man a-ver... 之后,按 TAB,什么反应也没有。因为 TAB 执行的是 “按情况补全”(complete),它看到 man,知道这应该是一个命令,那么它认为: “后面应该是一个文件名参数。” 但是你想要的是命令的名字怎么办?答案:按 "M-!".
再来看:你需要设置 XMODIFIERS="@im=fcitx"。你输入了
export XM...按 TAB? 没有反应。为什么呢?因为 TAB 的补全想要一个文件名,而当前目录没有开头是 "XM..." 的文件。那么你怎么补全?答案:"M-$"。
其实 readline 的补全方式被 Bash 扩充了很多。看看有多少吧!
"TAB": complete "\M-!": complete-command "\M-/": complete-filename "\M-@": complete-hostname "\M-~": complete-username "\M-$": complete-variable自己试试吧!
你的一个目录里有很多类似的文件,名字叫 T12.txt, T12.log, T23.txt, T23.log, T13.txt, T13.log…… 有后缀 txt 的,也有后缀 log 的。... 你想把其中的某些 T*.txt 都移动到另外一个目录,而T*.log都不动。但是T*.txt 也不是全部都要移动。所以你想把T*.txt 都放在命令行上,然后选择其中一些。你输入:
mv T...接着按 "M-*"(insert-completions)。结果 T 开头的文件都被放到命令行上了。嗯。这在某些时候是有用的,可是现在它把 T*.log 的文件也放上去了。不行。我们于是继续输入:
mv T*.txt好了,现在我们可以使用 "C-x*"(先按ctrl-x,然后按*)。结果所有名字T*.txt 的文件都被放到了命令行上面。"C-x*" 执行的函数叫做 glob-expand-word.
你是不是觉得那些命令很难记住?不顺手?别怕!它们都是可以改变的,就像Emacs的键绑定那样,可以被任意的改变!
所有使用readline的程序,都使用一个配置文件来决定它的行为和键绑定。这个文件一般是 INPUTRC 环境变量确定的。如果这个环境变量没有值,那么缺省使用 ~/.inputrc。
~/.inputrc 文件很简单,只有4种语句:
你现在就可以动手设置你喜欢的控制方式。比如,我发现有些时候我需要在命令行上做上 mark(Emacs 术语),然后把mark 和光标之间的 region(Emacs术语) 删掉,这个操作在 Emacs 里叫做kill-region. 但是我们发现这个函数在 Bash 里缺省是没有绑定的。如果我希望得到跟 Emacs 一样的绑定 C-w 的话,就把这行插入到 ~/.inputrc:
"\C-w":kill-region
不过你怎么知道那些函数可以被绑定呢?readline 的 info 页列出了很多函数,可是你不会每次都去info里查询吧,很麻烦啊。其实你可以使用bash的 bind 命令来得到所有的键绑定:
$bind -p可以显示所有现有的已经绑定和没有绑定的函数。没有被绑定的函数被显示为 "(not bound)",并被加上了注释。就像这样:
"\C-g": abort "\C-x\C-g": abort "\M-\C-g": abort "\C-j": accept-line "\C-m": accept-line # alias-expand-line (not bound) # arrow-key-prefix (not bound) # backward-byte (not bound) "\C-b": backward-char "\M-OD": backward-char "\C-h": backward-delete-char "\C-?": backward-delete-char你可以把这个命令的输出作为一个模板,嵌入到 ~/.inputrc 文件。把你喜欢的函数绑定到方便的按键。
其实 readline 有三个函数可以让你方便的查询函数,变量和宏的绑定情况,它们是:
dump-functions dump-variables dump-macros可是它们缺省都没有被绑定到任何按键。你可以为它们分别设置类似 "C-xf", "C-xv", "C-xm" 这样容易记忆的绑定。
这样你就可以设置你需要的绑定啦!但是你还是有可能在需要的时候突然记不起哪些键绑定可以补全。这时候你输入:
$bind -p | grep compl得到结果:
"\C-i": complete
"\M-\e": complete
"TAB": complete
"\M-!": complete-command
"\M-/": complete-filename
"\M-@": complete-hostname
"\M-{": complete-into-braces
"\M-~": complete-username
"\M-$": complete-variable
"\M-\C-i": dynamic-complete-history
"\M-g": glob-complete-word
"\M-*": insert-completions
.......
这样你记不住一个键的时候就可以方便的查询,这样几次之后,你就会把自己需要的按键都记住了。 Bash 的 readline 有一些变量可以控制它的行为。比如:
bell-style 可以控制出错时是 audible(发出响声),visible(闪动屏幕),还是none(什么都不做);editing-mode 可以控制你是用 Emacs 的输入方式还是用 vi 的;
completion-query-times 的值控制在补全的个数超过多少N时,bash 提示: “Display all N possibilities? (y or n)”;
如果我设置 expand-tilde 为 on,当输入“ls ~/doc”,按 TAB 时,命令行会自动变成 "ls /home/wy/doc".
如果把 visible-stats 设置为 on,那么列出补全的时候,目录,可执行文件,符号连接,会被分别使用 /, *, @ 来标记,就像 ls -F 的到的结果。
设置的方法极其简单,就在 ~/.inputrc 文件里写入类似语句:
set visible-stats on然后 "C-x C-r" 使设置生效。
可以设置的参数是很多的。使用命令
$bind -v就可以得到所有这些可以设置的变量和它们的值了。
《悟空的回信》
亲爱的师父:因为我们那里在搞拆迁,所以我现在不住花果山了。但是,因为没有门牌号,我也不知道我住在哪,感谢中国邮政,我收到了你的邮件,那件外套,因为我不会缝扣子,所以我把他改成背心了,好暖和。师傅,我现在过得很好,经常去肯德基里吃吃麦当劳。师傅,我很想你,等中国移动降了漫游费,我会给你打电话。嫦娥姐姐生小孩的事情先不要跟八戒说,他感情比较脆弱。 悟空
《悟空的回信》
师傅:
您好!
上次的信收到了,寄来的东西也收到了。这次我给您寄去了一个摄像头和一副耳麦,以后咱们视频吧。我写字还是不行,每次还得总麻烦人家代笔。qq号我也给你申请了12315密码是你的生日。要是八戒和沙师弟也一起的话就更好了,八戒自从回了高老庄就再也没有和我联系过,这个呆子,大概还在生我的气,沙师弟去年带着他的小儿子来过一次,这家伙快要做爷爷了。
前一阵我去看玉帝了,他很烦,现在到处都在全球化,他手底下的那些公务员不是跟不上形势,就是被形势腐化,弄得他很无奈。
杨二郎您知道吧,因为嫖娼,刚被放出来,一只天眼也瞎了,据说是警察冲进来时他逃跑结果眼睛正好撞到一枝树杈上。被拘了15天。本来找找人罚款就没事的,可他的狼狗咬坏了一个警察的下半身,人家家属不干,媒体也跟着推波助澜,这次我看他非倾家荡产不可。玉帝想保也没法保,刚出来时想让他去做个弼马温,但纪检部门始终不下结论,他也不好轻易安排。
还有托塔天王李静,因涉嫌侵吞国有资产,买官卖官,接受巨额贿赂,结果被审计署的李金华大哥曝了光,中纪委接着就成立了专案组,和反贪部门一起联手调查,不久就把他双规了。还带出了一大堆买官者,可笑的是买官的里面竟然还有太白金星,文武两个曲星,媒体把这事热炒了好一阵。
此事把他3个儿子都给气坏了,尤其哪吒,本来他们父子感情就不好,这次他索性直接从家里搬了出来,他昨天给我打电话特别想到我这里来喝酒,可警察限制他们家人离境,转移财产。连他的工作都受到了影响,他现在是高新技术开发区的主任,和我是很要好的朋友。自从他父亲出事以后好多投资意向都取消或延后了。他父亲的二奶整天带个孩子来找他哭哭啼啼的,弄得他一点招没有,因为家产被封,他的那个小弟弟连学费都交不起了,他只好背着老婆从家里拿了2万块给他们,还不敢让老娘知道。
牛郎和织女也离婚了,长期两地分居,听说男的在外面包了二奶,七月七那天耽搁了见面。女的去找结果人家一家还在睡大觉。女方看事已至此,也只好认了。没想这事被月老知道了,跑来非要和我撮合,被我给挡了。因为我.....,还是留在最后说吧 。
现在最烦的可能是东海龙王,他现在和环保局一起和沿海几省打官司,他的海全被污染了,鱼虾也快死光了,报纸说,他不久就快成一条死龙了。他的3个儿子也因为98年那场大水现在还在被公安部通缉,因为他们涉嫌酒后纵水为患,给人民造成了天文数字的损失。那天我见到他时他的须发全白了,完全不像个水利部长的模样。
这次去看玉帝,他很高兴,他说他没想到我会去看他,说我自从入了党以后比以前可进步多了。他让我好好把握这次保持党员先进性教育的机会。看得出来他有点感动,还问我想不想回去任职,他那儿正好有个机会,他想换掉足协的谢亚龙,说他和阎世铎一样,一点创意没有,想让我去接这个掌门的位置。原本是让赵本山的,可这家伙招呼也不打就跑到辽足当了董事长,为此惹得国家体育总局那边好多人对他有意见。如果换了我相信会赢得好多人的支持,毕竟我跟师傅西天取过经。我婉言谢绝了,我哪懂什么足球啊,尤其这么敏感的位置,干不好还会连累了师傅您的名声,我干不了。
对了,师傅,您应该去看看太上老君,他快不行了,是铅中毒,医生说他的仙丹里含铅量1000倍超标。现在医生每天给他排铅,但没人时他还是总偷着吃仙丹,他家人说他现在是得了仙丹妄想症。医生也说在这样下去估计熬不过今夏。为这事我专门跑去问过如来,因为当年我也......,呵呵。如来说我没有事的,当年我偷吃的那些仙丹全是假的,当时他根本就没有练出什么仙丹,全是骗人的。临走时还说我的筋斗云不如以前了让我抓紧时间练习。
最后我要告诉师傅一件喜事,我想要结婚了,女的你认识的,白骨精。我们是从网上认识的,起初只是聊得很投缘。原来她身世很惨,出生时因为是女孩,就被父母抛弃了,被一个拾荒的老太好心收养可十岁时,老太得病死去,她从此无依无靠,先后几次被人贩子拐卖,长大后嫁了一户人家,没想这人吸毒,还强迫她去卖淫供他吸毒,她不肯就被毒打,她性子烈,就跳楼了。我还记得我们第一次见面时的情景,他看到我就跑,我使劲追才拦住了她。她看着我,我看着她。当时我们就认定了对方就是我们彼此一直要找的人,因为已聊得太久太熟悉了,所以我们以前的那段经历就成了一段不打不相识的爱恋。
师傅,现在就等着您来给我们主持婚礼了,我的把兄弟牛魔王还提前送了一辆奥迪A8给我。他现在是牛魔王奶业的董事局主席,就在花果山的山下,我们常在一起。他建议让我再办个旅游公司,名字都想好了叫唐僧佛旅公司,旅游线路就叫西天取经缅怀之旅。我也做过调查,到时一定很火爆。我已给白龙马师弟打过电话了,让他继续给您开车,您做董事长,A8做您的专车。不过这事还得等您来了我们再细商量。
另外,您来时千万不要走海上,因为中俄两国马上要在海上进行联合军演了,我怕您过不来。
此致
敬礼!
想念您的悟空
2月15日姜太公代笔
《唐僧的家书》
《唐僧的家书》
亲爱的悟空:
我这封信写的很慢,因为知道你看字不快。我们已经搬家了,不过地址没改,因为搬家的时候把门牌带来了。这礼拜下两次雨,第一次下3天,第二次下4天。昨天我们去买比撒,店员我要切成8片还是12片,我说8片就成了,12片吃不完。我给你寄去件外套,怕邮寄时超重,把扣子剪下来放口袋里了。嫦娥生了,因为不知道是男是女,所以不知道你是该当舅舅还是阿姨。最后告诉你本来想给你寄钱。可是信封已经封上了~~
元旦快到了,别忘了给孩子们讲讲很久很久很久以前我们过年的事情(祝:圣诞开心 元旦快乐
修改/清除Administrator帐户的密码
修改:控制面板中的“用户帐户”,可以修改用户帐户的密码,但是不能修改Administrator帐户的密码,假如你要把Administrator的密码改为abc,可以这样:进入MS-DOS模式,键入命令net user Administrator abc回车即可。
清除:要清除Administrator帐户密码,你可以进入系统所在盘,删除系统安装目录(Windows\system32\config)下的SAM文件;重启电脑后,Administrator帐户就没有密码了,如果此时你用Administrator帐户登陆系统,无需输入任何密码即可进入系统。
注意:只对2000有用,XP上删除SAM后,系统再无法进入,总是提示:安全账户初始化失败.....
RUNDLL32.EXE 是什么程序
Rundll32.exe是什么?顾名思意,“执行32位的DLL文件”。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。如果看到系统中有多个Rundll32.exe,不必惊慌,这证明用Rundll32.exe启动了多少个的DLL文件。当然,这些Rundll32.exe执行的DLL文件是什么,我们都可以从系统自动加载的地方找到。
现在,我来介绍一下Rundll32.exe这个文件,意思上边已经说过,功能就是以命令行的方式调用动态链接程序库。系统中还有一个Rundll.exe文件,他的意思是“执行16位的DLL文件”,这里要注意一下。在来看看Rundll32.exe使用的函数原型:
Void CALLBACK FunctionName (
HWND hwnd,
HINSTANCE hinst,
LPTSTR lpCmdLine,
Int nCmdShow
);
其命令行下的使用方法为:Rundll32.exe DLLname,Functionname [Arguments]
DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。
略谈Rundll32.exe的作用
常用Windows9x的朋友一定对Rundll32.exe和Rundll.exe这两个档案不会陌生吧,不过,由於这两个程式的功能原先只限於在微软内部使用,因而真正知道如何使用它们的朋友想必不多。那么好,如果你还不清楚的话,那么就让我来告诉你吧。
首先,请你做个小实验(请事先保存好你正在执行的程式的结果,否则...):点击“开始-程式-Ms-Dos方式”,进入Dos视窗,然後键入rundll32.exe user.exe,restartwindows,再按下回车键,这时你将看到,机器被重启了!怎么样,是不是很有趣?
当然,Rundll的功能绝不仅仅是重启你的机器。其实,Rundll者,顾名思义,执行Dll也,它的功能就是以命令列的方式呼叫Windows的动态链结库,Rundll32.exe与Rundll.exe的区别就在於前者是呼叫32位的链结库,而後者是运用於16位的链结库,它们的命令格式是: RUNDLL.EXE ,,
这里要注意三点:1.Dll档案名中不能含有空格,比如该档案位於c:\ProgramFiles\目录,你要把这个路径改成c:\Progra~1\;2.Dll档案名与Dll入口点间的逗号不能少,否则程式将出错并且不会给出任何资讯!3.这是最重要的一点:Rundll不能用来呼叫含返回值参数的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在Visual Basic中,提供了一条执行外部程式的指令Shell,格式为:Shell “命令列”
如果能配合Rundll32.exe用好Shell指令,会使您的VB程式拥有用其他方法难以甚至无法实现的效果:仍以重启为例,传统的方法需要你在VB工程中先建立一个模组,然後写入WinAPI的声明,最後才能在程式中呼叫。而现在只需一句: Shell “rundll32.exe user.exe,restartwindows”就搞定了!是不是方便多了?
实际上,Rundll32.exe在呼叫各种Windows控制面板和系统选项方面有著独特的优势。下面,我就将本人在因特网上收集的有关Rundll的指令列举如下(很有用的,能省去你很多呼叫Windows API的时间!!),供大家在程式设计中引用:
命令列: rundll32.exe shell32.dll,Control_RunDLL
功能: 显示控制面板
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 显示“控制面板-辅助选项-键盘”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 显示“控制面板-辅助选项-声音”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 显示“控制面板-辅助选项-显示”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL accesscpl,,4
功能: 显示“控制面板-辅助选项-滑鼠”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 显示“控制面板-辅助选项-传统”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 执行“控制面板-添加新硬体”向导。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 执行“控制面板-添加新印表机”向导。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 显示 “控制面板-添加/删除程式-安装/卸载” 面板。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。
命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。
命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一个新的“我的公文包”。
命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 显示复制软碟视窗
命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 显示“日期与时间”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 显示“时区”选项视窗。
命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。
命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 显示“新建拨号连接”向导的视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 显示“显示属性-背景”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 显示“显示属性-萤屏保护”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 显示“显示属性-外观”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 显示显示“显示属性-属性”选项视窗。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 显示Windows的“字体”档案夹。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同样是显示Windows的“字体”档案夹。
命令列: rundll32.exe shell32.dll,SHformatDrive
功能: 显示格式化软碟对话框。
命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 显示“控制面板-游戏控制器-一般”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 显示“控制面板-游戏控制器-进阶”选项视窗。
命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
功能: 列印HTML文档。
命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 显示Microsoft Exchange一般选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 显示“控制面板-滑鼠” 选项 。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 显示 “控制面板-键盘属性-速度”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 显示 “控制面板-键盘属性-语言”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 显示Windows“印表机”档案夹。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 显示Windows“字体”档案夹。
命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 显示“控制面板-输入法属性-输入法”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 执行“添加新调制解调器”向导。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
功能: 显示“控制面板-多媒体属性-音频”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
功能: 显示“控制面板-多媒体属性-视频”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
功能: 显示“控制面板-多媒体属性-MIDI”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
功能: 显示“控制面板-多媒体属性-CD音乐”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
功能: 显示“控制面板-多媒体属性-设备”属性页。
命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 显示“控制面板-声音”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 显示“控制面板-网路”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
功能: 显示ODBC32资料管理选项视窗。
命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:\path\filename}
功能: 显示指定档案(drive:\path\filename)的“打开方式”对话框。
命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 显示“控制面板-密码”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 显示“控制面板-电源管理属性”选项视窗。
命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 显示“控制面板-区域设置属性-数字”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 显示“控制面板-区域设置属性-货币”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 显示“控制面板-区域设置属性-时间”选项视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 显示“控制面板-区域设置属性-日期”选项视窗。
命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]
功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 显示“控制面板-系统属性-传统”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能: 显示“控制面板-系统属性-设备管理器”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
功能: 显示“控制面板-系统属性-硬体配置档案”属性视窗。
命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 显示“控制面板-系统属性-性能”属性视窗。
命令列: rundll32.exe user.exe,restartwindows
功能: 强行关闭所有程式并重启机器。
命令列: rundll32.exe user.exe,exitwindows
功能: 强行关闭所有程式并关机。
命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 显示“拨号属性”选项视窗
命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 显示“桌面主旨”选项面板
当然,不止是VisualBasic,象Delphi.VisualC++等其他程式设计语言也可以通过呼叫外部命令的方法来使用Rundll的这些功能,具体方法这里就不再详细叙述了。灵活的使用Rundll,一定会使你的程式设计轻轻松松,达到事半功倍的效果!