科学网

 找回密码
  注册

tag 标签: 菜单

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

昨天去了家素菜馆
热度 6 outcrop 2012-10-28 23:38
味道还不错,嘿嘿,和蒋叔分享下。点击小图可看大图: 沈阳宽巷子素菜馆听说有两家,我去的这一家在和平区,店面装修的比较深色低调,白天看起来不够显眼;但晚上因为店面灯光效果不错,就很容易找到了。 进去后,环境给人素雅的感觉,装修的也比较中国风;店里轻柔的音乐让人有一种宁静、肃然的感觉;虽然有好几桌食客,但很安静,只有偶尔低语。 餐桌的桌面有特色,给人比较强的传统文化感;比如我这张桌的纸餐桌垫上印的是24孝,还有一本线状《诗经》。 木头封面的菜单给我第一印象是环保,还是线装的。。。菜单的内容,则是和一般菜单差不多的双面彩页。 上菜前开胃小吃盘很好玩,装的火龙果、桔子瓣之类的水果,但刚上的时候烟雾缭绕,果盘看起来如同在仙境。很好奇观察了一会儿,然后吹开雾面,总算找到了玄机——原来果盘下的水中,有几粒干冰在升华,合着水汽,就成了这种烟雾缭绕的景象——好吧,我这工科生的好奇心很残忍的破坏了这份美好的想象…… 两个人总共点了三道菜,第一道“粒粒金沙”是宽巷子的招牌菜,就我感觉,可能是一种秘制土豆泥,模拟的是蟹黄的味道——看容器也能猜出来。到了宽巷子,不吃这道菜一定会后悔,吃了应该不后悔 东北饺子好吃,所以特意点了一份素饺子。由于吃的太快,没仔细琢磨里面到底什么馅的~~只是感觉清香而且充实。 素全聚德是另外一个比较有特色的菜,看这名字,就知道口味,嘿嘿~~全聚德部分,可能是豆油皮做的,味道比较淡,合着配酱吃口味鲜,有嚼头。 还有一份素串烧,没拍照,因为刚上就被吃掉了~哈哈! 这家素菜馆应该感谢下蒋劲松老师 ;在蒋叔的影响下,特意选定了这家素食馆;不过能刚好发现并找到,也是缘分——这家店并不在繁华的主干道上。 =============================关于博主============================= 博主的主要兴趣是:知识管理;相关兴趣有:语义网、机电及DIY、哲学与心理、信息安全、科幻等。 我的常用博客在科学网 (访问可点链接,下同); 新浪微博是@outcrop ,欢迎互粉;建了一个超级QQ群:17662971,希望能闲聊无白丁,欢迎加入;自己打理着一个 机电工程师 小网站,欢迎来玩。最近在科学网关注“ 科学网大学 ”,欢迎加入 科学网大学群组 讨论、尝试。
个人分类: 生活点滴|4156 次阅读|16 个评论
[转载]【转】“寻租”与“菜单”
pkustm 2012-10-22 22:09
“寻租”与“菜单”   学术界有些新词,例如近来的经济政策理论论述里常见到“寻租活动”是《辞海》里找不到的词,而从这些文章的上下文也看不出“寻租”和“租金”之类有甚么关系。后来找到解释,原来“寻租”一词来自英文的rentseeking,意思是找窍门,钻空子求利。与中国平常的“租”字含义无关。问题看来出在英文rent这个字的解释上。英文里seeking的含义是追求、寻觅,可以对应译名“寻租”中的“寻”。但是rent作为名词,除了租金之类的涵义外,中英英文字典上都可以找到另一个完全独立的解释,那就是“撕成的裂口、罅隙”。因此我们如果将rent seeking译作“找窍门”或者“钻空子”之类的汉语,也许就更确切,因而也更容易懂。   又如计算机今天已经成了普遍使用的工具,可是屏幕上经常出现的“菜单”这个词总使人感到别扭。它的来源显然是英文里的menu这个字。在我手头的八十年代出版的Webster新世界英文字典里,对menu这个字除了“菜单”这个原有解释外,多了一条新增的独立定义:“计算机软件程序里,为供使用者选取适用功能而列的内容表”。在Webster的计算机专用袖珍小词典里则只给了后面的解释。而我们的科技工作者却不顾文字的内涵,定名为“菜单”。英文字的拼音音节是没有定义的,可以用它任意组合创造新名词,或者借用旧词,赋予新意。但是汉语每个字都是有定义的。取含义不同的单字组合排列就组成了词,同时也就赋予了涵义。将与饮食菜蔬毫无关系的功能内容表称为菜单的译法,不符组成字的原意;显然违反了中国语言文化的规范,还不如翻译中对难译名词偶然采用音译的过渡办法来得合理。 品书录 叔达 《读书》杂志 1998年第12期,总第237期 转记:翻译不容易,要做到信达雅就更难了。一切都追求速度的时代,也许会因为当前的速度而给后来人造成更大的时间浪费。过去很多专业都有名词审定一说,如物理学名词审定委员会,现在不知道还有没有人有时间和精力做这方面的事。
个人分类: 科学与社会|2718 次阅读|0 个评论
2030菜单--人类的火星之旅
热度 8 BaoHaifei 2012-8-14 12:42
2030 菜单 -- 人类的火星之旅 鲍海飞 编译 2012-8-14 人类登陆火星似乎已经不是一个遥远的问题了,但还有一个最关键的问题!由于我们的地球距离火星太遥远了,有 3.22 亿公里之遥,双向通信就需要约 40 分钟完成一个来回。这意味着人类的火星之旅是一个漫长的过程!在这漫长的过程中,最大的问题是饮食问题!到底需要准备多少东西才够吃? 美国 NASA 宇航局正在为 2030 年人类登陆火星之旅定制饮食菜单( create a menu for a planned journey to Mars in the 2030s )。 预计一艘搭载 6 到 8 名宇航员的航天器,将花上 6 个月的时间飞到火星,然后在那里工作 18 个月,然后再花 6 个月返回地球,总共需要两年半的时间。 NASA 航天厨师设计师们正在研究制定了一个菜单 — 包括一百多种食物的菜单,航天用的食物均是预先准备好而且是冷冻的食物,保质期至少要达到 2 年。想想看,这就好像一下子就给一个家庭提前准备好三年的食物一样!( Imagine having to shop for a family’s three year supply of groceries all at once and having enough meals planned in advance for that length of time )。实验人员对研制的饮食要进行系列的测试和品尝,以决定飞船一旦离开地球后,食物安全可靠。在没有重力的情况下,食物的味道和可品尝性是要打折扣的 (the lack of gravity means smell--and taste--impaired) 。火星上的重力加速度约为地球的 0.4 倍 , 即为 0.4g( 地球上为 1g , g=9.8m/s 2 ) 。 设计人员为宇航员准备了可以自己加工、甚至烹饪的食物,这样,在漫长的旅途中就可以自己烧菜做饭了。由于火星上的空气压力比地球小,因此,还可以尝试使用压力锅来烧开水。研究人员在飞船上设计了一种 ‘ 大棚温室 ’ ( Martian Green House ) , 宇航员在里面能够进行无土栽培种植水果和蔬菜,即在含有矿物质的水中种植生物,比如:胡萝卜,辣椒之类。这样,宇航员就有一个 ‘ 绿色的活生生的菜园啦! ’ 由此,航天员便可以自己优化营养配餐,自己加工烹饪食物了。 对于漫长的太空之旅,最优先考虑的是宇航员要获取正常的营养,包括卡路里和矿物质,以保持宇航员身体健康并顺利完成任务。同时,所食之食物也要保证宇航员的心理健康。研究表明,某些食物如肉面包、土豆泥、或者感恩节的火腿,会明显改善人们的心情和满意度。这会让在火星之旅中的宇航员不感觉孤单、寂寞,有一种 ‘ 家的感觉 ’(this ‘link to home’will be key to astronauts on the Mars mission) 。食物和心情的关系则成为两个部门的一项研究课题。食物中如果缺少维生素和矿物质也会损伤大脑。 最重要的是在这近一百种食物配料中,所有的都是素食( vegetarian ),所以宇航员将没有牛奶和肉类食物。主要是因为这两类食物不能保存足够长的时间以到达火星。一位研究员开玩笑说: ‘ 考虑过随机带一头奶牛来着,但似乎不是明智的选择。 ’(It isn’t possible to preseve those products long enough to take to Mars- and bringing a cow on the mission is not an option, Cooper jokes.) 设计师们为了保证素食食物足够的蛋白质数量,专门准备了多种多样的食品,如豆腐、硬果、泰国披萨,但披萨上没有奶酪,而是覆盖了更多的类似胡萝卜、红辣椒、大葱、蘑菇、花生、以及调料之类的东西。 为了保证食物的可持续性( food sustainability ), NASA 或许会专门让一个宇航员来为大家准备食物。 (it is possible NASA will choose to have one astronaut solely dedicated to preparing the food). 编译自: Ramit Plushnick-masti, NASA creates menu for Mars mission in 2030s. China Daily, Wednesday, July 18,2012.
个人分类: 科普|4969 次阅读|14 个评论
[转载]Corl CorlDraw快捷菜单大全
JiuBaiYi 2012-5-15 09:38
显示导航窗口(Navigator window) 【N】 运行 Visual Basic 应用程序的编辑器 【Alt】+【F11】 保存当前的图形 【Ctrl】+【S】 打开编辑文本对话框 【Ctrl】+【Shift】+【T】 擦除图形的一部分或将一个对象分为两个封闭路径 【X】 撤消上一次的操作 【Ctrl】+【Z】 撤消上一次的操作 【Alt】+【Backspase】 垂直定距对齐选择对象的中心 【Shift】+【A】 垂直分散对齐选择对象的中心 【Shift】+【C】 垂直对齐选择对象的中心 【C】 将文本更改为垂直排布(切换式) 【Ctrl】+【.】 打开一个已有绘图文档 【Ctrl】+【O】 打印当前的图形 【Ctrl】+【P】 打开“大小工具卷帘” 【Alt】+【F10】 运行缩放动作然后返回前一个工具 【F2】 运行缩放动作然后返回前一个工具 【Z】 导出文本或对象到另一种格式 【Ctrl】+【E】 导入文本或对象 【Ctrl】+【I】 发送选择的对象到后面 【Shift】+【B】 将选择的对象放置到后面 【Shift】+【PageDown】 发送选择的对象到前面 【Shift】+【T】 将选择的对象放置到前面 【Shift】+【PageUp】 发送选择的对象到右面 【Shift】+【R】 发送选择的对象到左面 【Shift】+【L】 将文本对齐基线 【Alt】+【F12】 将对象与网格对齐 (切换) 【Ctrl】+【Y】 对齐选择对象的中心到页中心 【P】 绘制对称多边形 【Y】 拆分选择的对象 【Ctrl】+【K】 将选择对象的分散对齐舞台水平中心 【Shift】+【P】 将选择对象的分散对齐页面水平中心 【Shift】+【E】 打开“封套工具卷帘” 【Ctrl】+【F7】 打开“符号和特殊字符工具卷帘” 【Ctrl】+【F11】 复制选定的项目到剪贴板 【Ctrl】+【C】 复制选定的项目到剪贴板 【Ctrl】+【Ins】 设置文本属性的格式 【Ctrl】+【T】 恢复上一次的“撤消”操作 【Ctrl】+【Shift】+【Z】 剪切选定对象并将它放置在“剪贴板”中 【Ctrl】+【X】 剪切选定对象并将它放置在“剪贴板”中 【Shift】+【Del】 将字体大小减小为上一个字体大小设置。 【Ctrl】+小键盘【2】 将渐变填充应用到对象 【F11】 结合选择的对象 【Ctrl】+【L】 绘制矩形;双击该工具便可创建页框 【F6】 打开“轮廓笔”对话框 【F12】 打开“轮廓图工具卷帘” 【Ctrl】+【F9】 绘制螺旋形;双击该工具打开“选项”对话框的“工具框”标签 【A】 启动“拼写检查器”;检查选定文本的拼写 【Ctrl】+【F12】 在当前工具和挑选工具之间切换 【Ctrl】+【Space】 取消选择对象或对象群组所组成的群组 【Ctrl】+【U】 显示绘图的全屏预览 【F9】 将选择的对象组成群组 【Ctrl】+【G】 删除选定的对象 【Del】 将选择对象上对齐 【T】 将字体大小减小为字体大小列表中上一个可用设置 【Ctrl】+小键盘【4】 转到上一页 【PageUp】 将镜头相对于绘画上移 【Alt】+【↑】 生成“属性栏”并对准可被标记的第一个可视项 【Ctrl】+【Backspase】 打开“视图管理器工具卷帘” 【Ctrl】+【F2】 在最近使用的两种视图质量间进行切换 【Shift】+【F9】 用“手绘”模式绘制线条和曲线 【F5】 使用该工具通过单击及拖动来平移绘图 【H】 按当前选项或工具显示对象或工具的属性 【Alt】+【Backspase】 刷新当前的绘图窗口 【Ctrl】+【W】 水平对齐选择对象的中心 【E】 将文本排列改为水平方向 【Ctrl】+【,】 打开“缩放工具卷帘” 【Alt】+【F9】 缩放全部的对象到最大 【F4】 缩放选定的对象到最大 【Shift】+【F2】 缩小绘图中的图形 【F3】 将填充添加到对象;单击并拖动对象实现喷泉式填充 【G】 打开“透镜工具卷帘” 【Alt】+【F3】 打开“图形和文本样式工具卷帘” 【Ctrl】+【F5】 退出 CorelDRAW 并提示保存活动绘图 【Alt】+【F4】 绘制椭圆形和圆形 【F7】 绘制矩形组 【D】 将对象转换成网状填充对象 【M】 打开“位置工具卷帘” 【Alt】+【F7】 添加文本(单击添加“美术字”;拖动添加“段落文本”) 【F8】 将选择对象下对齐 【B】 将字体大小增加为字体大小列表中的下一个设置 【Ctrl】+小键盘6 转到下一页 【PageDown】 将镜头相对于绘画下移 【Alt】+【↓】 包含指定线性标注线属性的功能 【Alt】+【F2】 添加/移除文本对象的项目符号 (切换) 【Ctrl】+M 将选定对象按照对象的堆栈顺序放置到向后一个位置 【Ctrl】+【PageDown】 将选定对象按照对象的堆栈顺序放置到向前一个位置 【Ctrl】+【PageUp】 使用“超微调”因子向上微调对象 【Shift】+【↑】 向上微调对象 【↑】 使用“细微调”因子向上微调对象 【Ctrl】+【↑】 使用“超微调”因子向下微调对象 【Shift】+【↓】 向下微调对象 【↓】 使用“细微调”因子向下微调对象 【Ctrl】+【↓】 使用“超微调”因子向右微调对象 【Shift】+【←】 向右微调对象 【←】 使用“细微调”因子向右微调对象 【Ctrl】+【←】 使用“超微调”因子向左微调对象 【Shift】+【→】 向左微调对象 【→】 使用“细微调”因子向左微调对象 【Ctrl】+【→】 创建新绘图文档 【Ctrl】+【N】 编辑对象的节点;双击该工具打开“节点编辑卷帘窗” 【F10】 打开“旋转工具卷帘” 【Alt】+【F8】 打开设置 CorelDRAW 选项的对话框 【Ctrl】+【J】   【Ctrl】+【A】 打开“轮廓颜色”对话框 【Shift】+【F12】 给对象应用均匀填充 【Shift】+【F11】 显示整个可打印页面 【Shift】+【F4】 将选择对象右对齐 【R】 将镜头相对于绘画右移 【Alt】+【←】 再制选定对象并以指定的距离偏移 【Ctrl】+【D】 将字体大小增加为下一个字体大小设置。 【Ctrl】+小键盘【8】 将“剪贴板”的内容粘贴到绘图中 【Ctrl】+【V】 将“剪贴板”的内容粘贴到绘图中 【Shift】+【Ins】 启动“这是什么?”帮助 【Shift】+【F1】 重复上一次操作 【Ctrl】+【R】 转换美术字为段落文本或反过来转换 【Ctrl】+【F8】 将选择的对象转换成曲线 【Ctrl】+【Q】 将轮廓转换成对象 【Ctrl】+【Shift】+【Q】 使用固定宽度、压力感应、书法式或预置的“自然笔”样式来绘制曲线 【I】 左对齐选定的对象 【L】 将镜头相对于绘画左移 【Alt】+【→】 文本编辑   显示所有可用/活动的 HTML 字体大小的列表 【Ctrl】+【Shift】+【H】 将文本对齐方式更改为不对齐 【Ctrl】+【N】 在绘画中查找指定的文本 【Alt】+【F3】 更改文本样式为粗体 【Ctrl】+【B】 将文本对齐方式更改为行宽的范围内分散文字 【Ctrl】+【H】 更改选择文本的大小写 【Shift】+【F3】 将字体大小减小为上一个字体大小设置。 【Ctrl】+小键盘【2】 将文本对齐方式更改为居中对齐 【Ctrl】+【E】 将文本对齐方式更改为两端对齐 【Ctrl】+【J】 将所有文本字符更改为小型大写字符 【Ctrl】+【Shift】+【K】 删除文本插入记号右边的字 【Ctrl】+【Del】 删除文本插入记号右边的字符 【Del】 将字体大小减小为字体大小列表中上一个可用设置 【Ctrl】+小键盘【4】 将文本插入记号向上移动一个段落 【Ctrl】+【↑】 将文本插入记号向上移动一个文本框 【PageUp】 将文本插入记号向上移动一行 【↑】 添加/移除文本对象的首字下沉格式 (切换) 【Ctrl】+【Shift】+【D】 选定“文本”标签,打开“选项”对话框 【Ctrl】+【F10】 更改文本样式为带下划线样式 【Ctrl】+【U】 将字体大小增加为字体大小列表中的下一个设置 【Ctrl】+小键盘【6】 将文本插入记号向下移动一个段落 【Ctrl】+【↓】 将文本插入记号向下移动一个文本框 【PageDown】 将文本插入记号向下移动一行 【↓】 显示非打印字符 【Ctrl】+【Shift】+【C】 向上选择一段文本 【Ctrl】+【Shift】+【↑】 向上选择一个文本框 【Shift】+【PageUp】 向上选择一行文本 【Shift】+【↑】 向下选择一段文本 【Ctrl】+【Shift】+【↓】 向下选择一个文本框 【Shift】+【PageDown】 向下选择一行文本 【Shift】+【↓】 更改文本样式为斜体 【Ctrl】+【I】 选择文本结尾的文本 【Ctrl】+【Shift】+【PageDown】 选择文本开始的文本 【Ctrl】+【Shift】+【PageUp】 选择文本框开始的文本 【Ctrl】+【Shift】+【Home】 选择文本框结尾的文本 【Ctrl】+【Shift】+【End】 选择行首的文本 【Shift】+【Home】 选择行尾的文本 【Shift】+【End】 选择文本插入记号右边的字 【Ctrl】+【Shift】+【←】 选择文本插入记号右边的字符 【Shift】+【←】 选择文本插入记号左边的字 【Ctrl】+【Shift】+【→】 选择文本插入记号左边的字符 【Shift】+【→】 显示所有绘画样式的列表 【Ctrl】+【Shift】+【S】 将文本插入记号移动到文本开头 【Ctrl】+【PageUp】 将文本插入记号移动到文本框结尾 【Ctrl】+End 将文本插入记号移动到文本框开头 【Ctrl】+【Home】 将文本插入记号移动到行首 【Home】 将文本插入记号移动到行尾 【End】 移动文本插入记号到文本结尾 【Ctrl】+【PageDown】 将文本对齐方式更改为右对齐 【Ctrl】+【R】 将文本插入记号向右移动一个字 【Ctrl】+【←】 将文本插入记号向右移动一个字符 【←】 将字体大小增加为下一个字体大小设置。 【Ctrl】+小键盘【8】 显示所有可用/活动字体粗细的列表 【Ctrl】+【Shift】+【W】 显示一包含所有可用/活动字体尺寸的列表 【Ctrl】+【Shift】+【P】 显示一包含所有可用/活动字体的列表 【Ctrl】+【Shift】+【F】 将文本对齐方式更改为左对齐 【Ctrl】+【L】 将文本插入记号向左移动一个字 【Ctrl】+【→】 将文本插入记号向左移动一个字符 【→】
个人分类: 科研|2007 次阅读|0 个评论
[转载]二级联动菜单
edwinuestc 2012-4-19 01:46
%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"% !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" ontent="text/html; charset=gb2312" / title表单元素(select下拉列表)制作二级联动菜单和网站导航/title script language="javascript" //下面这个函数是演示一的处理代码 function al(x){ var list=document.Url.select1 //将selsect1对象赋给变量list,方便以后引用,虽然这里只引用一次,但是作为一个好习惯,我们还是有必要坚持的 location=list.options .value//把页面转向select的value值 } //下面函数是演示二,联动菜单的处理代码 function makeshi(x){ var form2=document.diqu.one.options.length;//这句解释同上 var diqul=new Array(form2)//新建一个数组,项数为第一个下拉列表的项数 for(i=0;iform2;i++)//循环第一个下拉列表的项数那么多次 diqul =new Array();//子循环 //下面是给每个循环赋值 diqul =new Option("绵阳","绵阳"); diqul =new Option("成都","成都"); diqul =new Option("广元","广元"); diqul =new Option("南京","南京"); diqul =new Option("苏州","苏州"); diqul =new Option("常州","常州"); diqul =new Option("南宁","南宁"); diqul =new Option("柳州","柳州"); diqul =new Option("北海","北海"); diqul =new Option("杭州","杭州"); diqul =new Option("温州","温州"); diqul =new Option("义乌","义乌"); var shi=document.diqu.shi;//方便引用 for(m=shi.options.length-1;m0;m--) //这个要看清楚,因为要重新填充下拉列表的话必须先清除里面原有的项,清除和增加当然是有区别的了,所以用递减 shi.options =null;//将该项设置为空,也就等于清除了 for(j=0;jdiqul .length;j++){//这个循环是填充下拉列表 shi.options =new Option(diqul .text,diqul .value) //注意上面这据,列表的当前项等于 新项(数组对象的x,j项的文本为文本,) } shi.options .selected=true;//设置被选中的初始值 } /script /head body p对于脚本来说,最复杂的表单元素对象就是select了,他是一个复合对象,包含OPTION对象数组的对象/p pstrong演示一:导航,这个多见于网站友情链接/strong/p form id="form1" name="Url" select name="select1" onchange="al(options.selectedIndex)" option value="#"请选择您要去的网站/option option value="http://thcjp.cnblogs.com"天轰穿系列教程/option option value="http://www.cnblogs.com"博客园 /option option value="http://www.csdn.net"CSDN/option /select /form pstrong演示二:地区二级无刷新联动菜单/strong(其实这个例题也适用了关联数组,只是说被关联的数组是在一级数组的内部,如果有不明白,就看下 a href="http://www.cnblogs.com/thcjp/archive/2006/08/04/467761.html"http://www.cnblogs.com/thcjp/archive/2006/08/04/467761.html/a 这篇,专门介绍数组的文字)/p form id="form2" name="diqu" method="post" action="" select name="one" size="1" onchange="makeshi(options.selectedIndex)" option value="0"四川/option option value="1"江苏/option option value="2"广西/option option value="3"浙江/option /select select name="shi" option value="绵阳"绵阳/option option value="成都"成都/option option value="德阳"德阳/option option value="广元"广元/option option value="南充"南充/option /select /form /body /html
个人分类: 程序调试|2009 次阅读|0 个评论
[转载]一些ansys前后处理技巧
arcechen 2012-3-23 17:42
1.ANSYS后处理时如何按灰度输出云图? 1)你可以到utilitymenu-plotctrls-style-colors-window colors试试 2)直接utilitymenu-plotctrls-redirect plots 2 将云图输出为JPG 菜单-PlotCtrls-Redirect Plots-To JPEG Files 3.怎么在计算结果实体云图中切面? 命令流 /cplane /type 图形界面操作 1.设置工作面为切面 2.PlotCtrls--Style--Hidden line Options 将 选项选为section 将 选项选为working plane 4.非线性计算过程中收敛曲线实时显示 solutionload step optsoutput ctrlsgrph solu trackon 5.运用命令流进行计算时,一个良好的习惯是: 使用SELECT COMMEND后.........其后再加上ALLSEL......... 6.应力图中左侧的文字中,SMX与SMN分别代表最大值和最小值 如你plnsolv,s,eqv 则 SMX与SMN分别代表最大值等效应力和最小值等效应力 如你要看的是plnsolv,u 则SMX与SMN分别代表位移最大值和位移最小值 不要被S迷惑 mx(max) mn(min) 7.在非线性分析中,如何根据ansys的跟踪显示来判断收敛? 在ansys output windows 有 force convergenge valu 值 和 criterion 值 当 前者小于后者时,就完成一次收敛 你自己可以查看 两条线的意思分别是: F L2: 不平衡力的2范数 F CRIT: 不平衡力的收敛容差, 如果前者大于后者 说明没有收敛,要继续计算 当然 如果你以弯矩M为收敛准则那么 就对应 M L2 和 M CRIT 希望你现在能明白 8.两个单元建成公共节点,就成了刚性连接,不是接触问题了。做为接触问题,两个互相接触的单元的节点必须是不同的。 9.接触单元 主要分为有厚度和无厚度的,有厚度主要以desai 为代表,无厚度的则以goodman 为代表。尽管古得曼也提出了相应的本构关系,但是如今goodman 单元成了无厚度接触单元的代名词,相应的本构关系现在也作了较大的改进。 Ansys中接触单元并不是goodman 单元,类似于goodman单元 ansys里面的接触单元是是通用的,而goodman是一种专业的单元。goodman单元假定两片长为L的接触面以无数微小的切向和法 向弹簧所连接,接触面单元与相邻接触面两边的单元只在结点 处有力的联系。单元厚度为零,受力前两接触面完全吻合. 10.怎样检查接触单元的normal direction?是不是打开plotctrls/symbols/esys on? 是要/PSYM,ESYS,ON的,然后你再SELECT CONTACT ELEMENT AND TARGE ELEMENT,REPLOT,看看他们的NORMAL DIRECTION是否正确的。 11.生成接触单元的几种方法 在通用摸快中,有两种发法 1) 通过定易接触单元 定易组元component然后通过gcgen生成 2)用接触向导contact wizard自动生成,不需定易接触单元 在动力学摸块中 3)如果用接触向导定义了接触(包括接触面和目标面),那么接触单元就已经生成了,可以直接进行分析。 接触单元的定义要考虑到所有可能发生接触的区域。现在不接触,变形后可能会接触。 定义接触一般有两种方法,第一种方法是用命令手动定义;第二种方法是利用接触向导定义。接触单元依附于实体单元的表面,由实体单元表面的节点组构成。所以只需要在实体单元生成后,将其表面可能接触的节点用cm,...,node 命令定义成节点组,在定义接触单元时用上就可以了。或者在实体单元生成后,定义接触时选择其表面进行接触定义也可以。对于刚体,不需要进行网格划分,只需要在定义接触时选择几何面、线就可以进行接触定义了。 12.用POST1进行结果后处理 (1). 进入POST1 命令:/POST1 GUI:Main MenuGeneral Postproc (2). 读取结果 依据载荷步和子步号或者时间读取出需要的载荷步和子步结果。 命令:SET GUI:Main MenuGeneral PostprocRead Results-Load step (3). 绘变形图 命令:PLDISP,KUND KUND=0 显示变形后的的结构形状 KUND=1 同时显示变形前及变形后的的结构形状 KUND=1 同时显示变形前及变形后的的结构形状,但仅显示结构外观 GUI:Main MenuGeneral PostprocessorPlot ResultsDeformed Shape (4). 变形动画 以动画的方式模拟结构静力作用下的变形过程 GUI:Utility MenuPlotctrlsAnimateDeformed Shape (5). 列表支反力 在任一方向,支反力总和必等于在此方向的载荷总和 GUI:Main MenuGeneral PostprocessorList ResultsRection Solution… (6). 应力等值线与应力等值线动画 应力等值线方法可清晰描述一种结果在整个模型中的变化,可以快速确定模型中的危险区域。 GUI:Main MenuGeneral PostprocessorPlot Results-Contour Plot-Nodal Solution… 应力等值线动画 GUI:Utility MenuPlotctrlsAnimateDeformed Shape 13.面载荷转化为等效节点力施加的方法 在进行分析时,有时候需要将已知的面载荷按照节点力来施加,比如载荷方向及大小不变的情况(ANSYS将面力 解释为追随力,而将节点力解释为恒定力),那么,在只知道面力的情况下,如何施加等效于该面力的等效节点 力呢?可以通过如下步骤给有限元模型施加与已知面载荷完全等效的节点力: (1)在模型上施加与已知面力位置、大小相同但方向相反的面力。 Main Menu-Solution-Apply-Pressure-。(注意:所施加面力要与已知力反号)。 (2) 将模型的所有节点自由度全部约束。 Main Menu-Solution-Apply-Displacement-On Nodes (3)求解模型。 Main Menu-Solution-Current LS(这一步会生成结果文件Jobname.rst) (4)开始新的分析: Main Menu-Solution-New Analysis (5)删除前两步施加的面力和约束。 Main Menu-Solution-Delete-Pressure- Main Menu-Solution-Delete- Displacement-On Nodes (6)从Jobname.rst中保存的支反力结果施加与已知面力完全等效的节点力。 Main Menu-Solution-Apply-Force/Moment-From Reaction (7)施加其它必要的载荷和约束,然后求解。 14.在ANSYS中作后处理,观察云图时候如何设置显示截面的切片云图在后处理时候,可以通过菜单 PlotCtrlStyleHidden line Option 中设置; 修改type of plot 选项为section, cut plane选择work plane 或者normal to view就可以看到切片显示。 然后操作,CSYS !激活总体笛卡尔坐标系 WPCSYS !工作平面与当前坐标系重合 WPOFFS,-D1 !工作平面X向偏移-D1距离 WPROTA,-45 !工作平面绕z轴转-45度 15.想请问ansysfem,你指的ansys内部接触向导是指什么?帮助文件吗? ANSYS软件本身带有个接触向导,用它进行接触分析很方便。 具体为: Main Menu gt; Preprocessor gt; Modeling gt; Create gt; Contact Pair gt; Contact Wizard button gt; Choose Areas. Choose Flexible. Choose Pick Target. Pick surface of pin hole on block as the target. Choose Next. Choose Areas. Choose Pick Contact. Pick surface area of pin as the contact. OK啦! 16.如何得到径向和周向的计算结果? 在圆周对称结构中,如圆环结构承受圆周均布压力。要得到周向及径向位移,可在后处理/POST1中,通过菜单General PostprocOptions for OutpRsysGlobal cylindric 或命令Rsys,1 将结果坐标系转为极坐标,则X方向位移即为径向位移,Y向位移即为周向位移。 17. ansys如何对*rst文件进行分析后处理? 一般的读结果的步骤就是: (1)General Postproc--Data File Opts,将RST文件读进去; (2)使用read result,可以先看last step,如果里面有很多步,按 first step,next step看结果 18.怎样在后处理中显示塑性区? (1)general postproc\plot result\nodal solution\plastic strain\equivalent plastic strain (2)命令流:/post1 plnsol,eppl,eqv,2 (3)在画云图时,采用 user 选项,并填写下面的三个空格,即要显示的最小、最大结果和间隔。塑性部分的应力应该大于等于屈服应力,最小应力可以用屈服应力,最大应力可以略大于屈服应力,再根据想要显示的分段数确定显示间隔。显示一次可能不满足要求,可以显示一次再做调整。用这种办法,塑性部分是彩色的,弹性部分(Von Mises 应力小于屈服应力)是灰色的。试试下列操作: utility menu -gt; plotctrls -gt; style -gt; contours -gt; uniform contours -gt; 在出现的窗口中设置云图的显示参数,自己试一下吧。 19.岩土位移分析的两种ANSYS方法探讨:考虑应力释放与否 近日来看到一篇文章专门介绍ANSYS计算隧道开挖引起沉降的方法,看了以后,颇有感想。请个位同行各抒己见。前提条件:不考虑开挖的应力释放过程(1)一种是传统方法,计算过程为:自重条件SOLVE→杀死单元(即开挖),改变衬砌单元材料(即激活衬砌)→计算得到开挖后的位移。用最后得到的位移减去自重条件下计算的位移即为所求位移。(2)一种是初始荷载法,计算过程为:打开SWRITE,ON,自重条件SOLVE→得到初始应力文件(后缀为.ist的文件)→ISFILE,READ,文件名(即写入初始应力文件),SOLVE→此时在后处理中可以看到所有的位移场 20. /FILNAME, Fname, 1 !开始转换到新建一个新的log文件 /FILNAME, try1, 1 !开始转换到新建一个try1.log文件 /FILNAME, try2, 1 !开始转换到新建一个try2.log文件 21.如何在后处理中把对称模型显示为完整模型? 由于模型的对称性,在建模的时候只建了其1/2或者1/4的模型进行计算, 在后处理的时候我该如何才能让它复原,也就是说,显示结果的时候显示 的是一个完整的模型,而不只是模型的其中一部分? 谢谢! plotctrlsstylesymmetry expansionperiodic/cyclic symmetry这样就可以显示全部了。或者你可以把坐标转换成柱坐标然后再复制出其余的实体也可以 22.【分享】画等应力线大全 求解完毕后 1 plotcrtls - device options - vector mode wireframe: on,在每条等应力线边上产生好多字母,可以在第2步修改 2 plotcrtls - style - contours - contour labeling - Key vector mode countour labels: on every Nth els 填入一个数字看效果,直到觉得在每条等应力线边上的字母数差不多为止 3 plotcrtls - style - contours - uniform contours: NCONT Number of contours 填入等应力线的数量 4 plotcrtls - style - colors - banded contours colors: band color选择选定等应力线的颜色,选定等应力线由下面的N1,N2,INC决定 5 plotcrtls -windows contours -windows options 里面的选项都很有用,自己一个个试试看看效果吧 6 file - report generator 可以作出白底黑字的图片,如果决得图片合适得话可以用plotcrts - capture image把图片抓下来 看你那么辛苦,再给你补充两点吧: ⑴ 去掉背景颜色:Utility MenuplotCtrlsStyleBackgroundDisplay Picture Background (单击,去除其前的√号,背景变为黑色) ⑵ 显示网格时,去除网格颜色,只显示线条:Utility MenuplotCtrlsStyleColorspicked Entity Clors 如下图所示:单击OK。再重新显示Utility MenuplotReplot即为线条。 ⑶ 硬拷贝为.bmp文件,以便插入到word文档中:Utility MenuplotCtrlsHard CopyTo files, 给出文件名。所存文件即在进入Ansys时设的工作目录下。在Ansys图形输出窗口中,显示各种有用图形,需要储存并输出时,均可以该方式存为.bmp文件,以备用。 不知道大家对这个网格显示满不满意,单元的显示用蓝色,背景白色!其实是很简单的: /color,wbak,whit /color,elem,whit /color,outl,blue 看一看/color命令,你可是设置自己想要得效果 23. ASBW, NA, SEPO, KEEP Subtracts the intersection of the working plane from areas (divides areas). SEPO — The resulting areas will have separate, but coincident line(s). 创建接触时可考虑使用 24.如何在程序“外部”修改Ansys建模语句中的参数 如果对已做好的模型再增加仅仅几条语句来修改某些参数,例如用UIMP,1,****修改材料1的参数,可否在程序外部实现?! 打开 log 文件或在 File 菜单下执行 write DB log file,将建模过程写成命令流。然后在该文件中进行修改就是了。不过需要你对 ANSYS 的命令有一些了解才行。学吧!得到*lgt文件,改为*log文件即可修改操作 25. ANSYS在模拟锚杆支护岩体问题中,是不是要涉及到接触问题,目标面和接触面又是怎么确定的呢?请问:锚杆预应力如何施加? 如果你想研究锚杆的具体受力情况的话,那就要考虑接触,如果你只是泛泛的研究整个结构的力学行为的话就没必要考虑接触。考虑接触的话ansys有自带施加接触工具栏, ***锚杆预应力可以用初始变形添加*** 26.隧道开挖模拟方法 小弟正在做一个大跨度隧道的施工模拟。现在主要采取两种方法: 一、直接施加重力场进行计算。第一步,计算初始位移场。后续开挖计算则减去第一步的位移场,得到各阶段的位移。 二、采用初始应力输入的方法。首先计算初始应力场,写出初始应力文件。后续开挖时,读入初始应力,施加重力、相同的边界和等效释放荷载。直接计算各施工阶段的应力场和位移场。 27.你是要应力应变变形图还是要变形曲线图? 要是变形图,就在CONTOR下面,要是看曲线图,就用路径PATH定义就可以了 28.求塑性极限荷载时,结构的变形应该较大,建议把大变形打开。 因为小变形计算时不考虑结构的变形,因此计算是线性的, 而大变形打开时每个荷载步后都会对模型进行修正,其计算是非线性的因而计算结果更精确,如果结构变形比较小时两种结算结果基本相同,但是大变形会消耗更多的资源. 29.如果在接触分析中模型之间存在间隙,为了防止刚体位移,需要调整初始接触条件,一般有三种方法: 1 通过自动计算contact surface offset来关闭小的间隙(keyopt(5)=1) 2 通过实常数ICONT指定目标面周围环境的调整范围 3 通过实常数PMIN和PMAX来调整目标面位置来调整初始穿透,如果目标面被约束,则PMIN和PMAX无效。 有间隙存在还能做接触分析吗? 1). 建模时使接触体处于刚好接触的位置; 2). 通过给定位移来将接触体移到接触位置; 3). 通过软弹簧把两个分开的物体连起来,采用动态方法求解。 30. 【讨论】 结构计算完成后怎样画出某结点或单元的应力~应变关系曲线? 标准方法: 1, 定义变量: 拾取主菜单:Main Menugt;Time Hist postprocgt;Define Variablesgt;在随之弹出的对话框中点击Add键,定义第一个变量序号为2,选取第一个变量stress,确定与之对应的下一级选项(如Y-direction SY等);返回定义变量对话框,再点击add键,定义第二个变量序号为3,选取第二个变量strain-elastic及以及对赢得下一级选项(如Y-dir'n EPEL Y等,在应力-应变图中,其向量的取向应相同)。同理再定义变量4,选取变量strain-plastic及与之对应的下一级选项如Y-dir'n EPEL Y等),在应力-应变图中,应变是弹性应变和塑性应变累加的总应变。为使其实现相加,还需进行以下操作:拾取主菜单:Main Menugt;Time Hist postprocgt;math operationgt;add,定义计算变量序号为5,同时在相应交互框内输入3和4。点击确认键,则由变量3,4代表的应变之和就存在变量5中。 2,绘制应力-应变曲线: 拾取主菜单:Main Menugt;Time Hist postprocgt;settinggt;graph.设置x轴向变量为单变量,并将其变量序号定义为5。点击确定键退出退化框。拾取应用菜单:Utility Menugt;plot ctrlsgt;stylesgt;Graphsgt;Modify axis.将x,y坐标轴分别命名为Y-strains,Y-stress,拾取主菜单:Main Menugt;Time Hist postprocgt;graph variables. 在对话框上the first variable对应的交互框中输入2。点击确定键,则预想的应力-应变曲线就显示在屏幕上。 ok!试试看! 31. LGEN, ITIME, NL1, NL2, NINC, DX, DY, DZ, KINC, NOELEM, IMOVE Generates additional lines from a pattern of lines. 建锚杆时可用于复制锚杆 32. ansys图型导入到CAD中 1.ansys中:PLOTCTRLS--》WHITE METAFILE-》选择保存格式为WMF格式 2.打开AUTOCAD,输入WMFIN命令,就可以在CAD中编辑啦 33. ANSYS后处理中如何显示三维实体模型表面结果云图 (1)将需要显示表面结果的三维实体模型的某些表面上的节点选出(UtilitySelect) (2)将显示方式POWRGRPH设置为OFF(命令:/GRAPHICS,FULL) (3)在/Post1下,绘制结果云图;或者在PlotCtrlsDevice OptionsVector Mode…ON(命令/device,vector),可以绘制等值线。 34.ANSYS结果等值线输出 对体和面来说,ANSYS默认的结果输出格式是云图格式,而这种彩色云图打印为黑白图像时对比很不明显,无法表达清楚,这对于发表文章来说是非常不便的。发文章所用的结果图最好是等值线图,并且最好是黑白的等值线图。笔者原来进行这项工作时一般借用photoshop等第三方软件,很麻烦,并且效果不好。现通过摸索,发现通过灵活运用ansys本身也能实现这项功能。现将步骤写给大家,感谢simwe对我的帮助。 (1)将要输出的结果调出,这时为彩色云图; (2)将云图转换为等值线图的形式 GUI:PlotCtrls—Device Options— 中的vector mode 选为on 命令:/DEVICE,VECTOR,1 这时结果为彩色等值线,若直接输出,打印为黑白图像时仍然不清晰,为此需进行以下几步将图像转换为黑白形式; (3) 将背景变为白色 命令:jpgprf,500,100,1 /rep (4)对等值线中的等值线符号(图中为A,B,C等)的疏密进行调整 GUI:plotCtrls—Style—Contours— Contours Labeling 在Key Vector mode contour label 中选中on every Nth elem,然后在N= 输入框中输入合适的数值,例如5,多试几次,直到疏密合适 命令:/clabel,1,5 (5)将彩色等值线变为黑色 GUI:plotCtrls—Style—Colors—Contours Colors 将Items Numbered 1,Items Numbered 2等复选框中的颜色均选为黑色,图像即可变为黑白等值线图像 命令:/color,cntr,whit,1 等等 (6)最后一步:出图 GUI:plotCtrls—Capture Image 希望对大家能有所帮助。 35. ANSYS怎么把节点计算结果输出到文件 *cfopen,1,txt *GET,S1max,node,mmm,s,1,, ! 最大值为S1max ,mmm是节点号 然后*vwrite,S1max (f20.10) *cfclos 想get什么自己查查 36. E值只是变形模量,只是和变形有关; v是泊松比,而泊松比是与侧压力系数有关的,侧压力系数是随泊松比的增大而增大的. C 和φ值在使用DP材料时直接决定了屈服函数,所以对材料的塑性有关直接的影响,在这两个值中,主要的影响是C值. 37. 图形显示问题: 0. 胡言乱语 从某种意义上来说,“结果表达”比“计算过程”本身更为重要,因为别人看的仅仅是你的结果,你总不可能拿命令流去发表论文吧!因此,编写一个好的POST1, POST26是十分必要。 在很多时候,英文论文不被录取,仅仅是因为英文水平不够,老外看了几句,就再也读不下去了,这时候他只会去看看图表了,如果在这方面也不够吸引人,那基本上就没什么可指望的了。 1. 提取黑白图片的理由 1.1 经费有限。否则,就多此一举了。 1.2 ANSYS默认设置输出的彩色图片,例如应力云图,用灰度或黑白方式显示时,最大值和最小值均呈现黑色,有时候,往往显得漆黑一团。 2. ANSYS的图片格式 ANSYS提供了很多图片格式(有些格式只使用于特定的操作系统、或device),也可以 Reverse(参见楼上所述)。需要特别指出的是,有些格式是没有 Command 的,对此而只能求助小老鼠了。本人比较偏爱以下三种格式的图片: 2.1 *.png 优点:(1)图片效果好;(2)文件很小,5~50k ; 缺点:没有 command,用鼠标很不爽 2.1 *.bmp 优点:(1)比JPEG效果要好;(2)可以用 command,例如:/IMAGE,SAVE,'Beam%outsettime(i)%','bmp';这里outsettime(i)为结果中输出荷载步的时间点,这样输出的文件名中直接包含了荷载步time,很直观。采用 *DO,i...可以批量输出。 缺点:文件较大,常为 1M,在批量输出的时候,占用硬盘空间太多。 补救方法:用 ACDSee 5.0 将 *.bmp 转化成 *.png 格式--- 转化操作很方便,且速度很快。 2.3 *.emf 优点:这可是个很好的东东!插入 MS-Word 后,可以直接编辑,甚至可以很方便地修改图中的文字。 缺点:没有 command,用鼠标很不爽。可能被不怀好意者利用,去修改输出结果、造假。 声明:若用于作弊,与本人无关。 3. 色笔设置 3.1 以下方法适用于windows操作系统。 3.2 一定要在WIN32C下面才能应用,在启动ANSYS开始进入的对话框中选取(Graphic device name); 3.3 对于彩色的图片还是WIN32的效果好 3.4 以黑白应力图显示为例。 方案(1),最大的地方颜色较深 /rgb, cntr, 15, 15, 15, 9, /rgb, cntr, 25, 25, 25, 8, /rgb, cntr, 35, 35, 35, 7, /rgb, cntr, 45, 45, 45, 6, /rgb, cntr, 55, 55, 55, 5, /rgb, cntr, 65, 65, 65, 4, /rgb, cntr, 75, 75, 75, 3, /rgb, cntr, 85, 85, 85, 2, /rgb, cntr, 95, 95, 95, 1, 方案(2),最小的地方颜色较深 /rgb, cntr, 15, 15, 15, 1, /rgb, cntr, 25, 25, 25, 2, /rgb, cntr, 35, 35, 35, 3, /rgb, cntr, 45, 45, 45, 4, /rgb, cntr, 55, 55, 55, 5, /rgb, cntr, 65, 65, 65, 6, /rgb, cntr, 75, 75, 75, 7, /rgb, cntr, 85, 85, 85, 8, /rgb, cntr, 95, 95, 95, 9,
9235 次阅读|0 个评论
[转载]fedora示系统菜单图标,修改菜单项
huozhenhua 2012-3-12 12:44
fedora示系统菜单图标,修改菜单项 2009年12月19日 下午 5:13 fedora默认的系统菜单没有图标显示,也没有修改菜单项,需要自己配置 1.显示系统菜单图标 yum install gconf-editor 装好后,打开程序,系统,配置编辑器 修改 /desktop/gnome/interface/buttons_have_icons 为true 修改 /desktop/gnome/interface/menus_have_icons 为true 2.修改菜单项 yum install alacarte 3.窗口属性设置 yum install control-center-extra 安装完后如图所示
个人分类: Linux使用|2684 次阅读|0 个评论
[转载]Windows 8中108个运行命令及简要说明
williammilo 2012-3-7 22:39
博主按:紧跟时代潮流,Windows 8操作界面实现了非同一般的自由度,应该可以提高工作效率,可以细细体会一下~ Windows 8 中的Charm按钮就叫“超级按钮”得了!喜欢右键这里点点,那里点点,在屏幕左下角点击右键,弹出菜单:程序和功能、系统、设备管理器、磁盘管理、计算机管理、命令提示符(管理员)、控制面板、运行等。这个就叫“超级菜单”好了!以下Windows 8 Consumer Preview的108个运行命令,部分命令需要以管理员身份运行命令提示符。 1.appwiz.cpl:程序和功能 2.calc:启动计算器 3.certmgr.msc:证书管理实用程序 4.charmap:启动字符映射表 5.chkdsk.exe:Chkdsk磁盘检查(管理员身份运行命令提示符) 6.cleanmgr: 打开磁盘清理工具 7.cliconfg:SQL SERVER 客户端网络实用工具 8.cmstp:连接管理器配置文件安装程序 9.cmd.exe:CMD命令提示符 10.自动关机命令 Shutdown -s -t 600:表示600秒后自动关机 shutdown -a :可取消定时关机 Shutdown -r -t 600:表示600秒后自动重启 rundll32 user32.dll,LockWorkStation:表示锁定计算机 11.colorcpl:颜色管理,配置显示器和打印机等中的色彩 12.CompMgmtLauncher:计算机管理 13.compmgmt.msc:计算机管理 14.credwiz:备份或还原储存的用户名和密码 15.comexp.msc:打开系统组件服务 16.control:控制面版 17.dcomcnfg:打开系统组件服务 18.Dccw:显示颜色校准 19.devmgmt.msc:设备管理器 20.desk.cpl:屏幕分辨率 21.dfrgui:优化驱动器 Windows 7→dfrg.msc:磁盘碎片整理程序 22.dialer:电话拨号程序 23.diskmgmt.msc:磁盘管理 24.dvdplay:DVD播放器 25.dxdiag:检查DirectX信息 26.eudcedit:造字程序 27.eventvwr:事件查看器 28.explorer:打开资源管理器 29.Firewall.cpl:Windows防火墙 30.FXSCOVER:传真封面编辑器 31.fsmgmt.msc:共享文件夹管理器 32.gpedit.msc:组策略 33.hdwwiz.cpl:设备管理器 34.inetcpl.cpl:Internet属性 35.intl.cpl:区域 36.iexpress:木马捆绑工具,系统自带 37.joy.cpl:游戏控制器 38.logoff:注销命令 39.lusrmgr.msc:本地用户和组 40.lpksetup:语言包安装/删除向导,安装向导会提示下载语言包 41.lusrmgr.msc:本机用户和组 42.main.cpl:鼠标属性 43.mmsys.cpl:声音 44.magnify:放大镜实用程序 45.mem.exe:显示内存使用情况(如果直接运行无效,可以先管理员身份运行命令提示符,在命令提示符里输入mem.exed:a.txt 即可打开d盘查看a.txt,里面的就是内存使用情况了。当然什么盘什么文件名可自己决定。) 46.MdSched:Windows内存诊断程序 47.mmc:打开控制台 48.mobsync:同步命令 49.mplayer2:简易widnows media player 50.Msconfig.exe:系统配置实用程序 51.msdt:微软支持诊断工具 52.msinfo32:系统信息 53.mspaint:画图 54.Msra:Windows远程协助 55.mstsc:远程桌面连接 56.NAPCLCFG.MSC:客户端配置 57.ncpa.cpl:网络连接 58.narrator:屏幕“讲述人” 59.Netplwiz:高级用户帐户控制面板,设置登陆安全相关的选项 60.netstat : an(TC)命令检查接口 61.notepad:打开记事本 62.Nslookup:IP地址侦测器 63.odbcad32:ODBC数据源管理器 64.OptionalFeatures:打开“打开或关闭Windows功能”对话框 65.osk:打开屏幕键盘 66.perfmon.msc:计算机性能监测器 67.perfmon:计算机性能监测器 68.PowerShell:提供强大远程处理能力 69.printmanagement.msc:打印管理 70.powercfg.cpl:电源选项 71.psr:问题步骤记录器 72.Rasphone:网络连接 73.Recdisc:创建系统修复光盘 74.Resmon:资源监视器 75.Rstrui:系统还原 76.regedit.exe:注册表 77.regedt32:注册表编辑器 78.rsop.msc:组策略结果集 79.sdclt:备份状态与配置,就是查看系统是否已备份 80.secpol.msc:本地安全策略 81.services.msc:本地服务设置 82.sfc /scannow:扫描错误并复原/windows文件保护 83.sfc.exe:系统文件检查器 84.shrpubw:创建共享文件夹 85.sigverif:文件签名验证程序 86.slui:Windows激活,查看系统激活信息 87.slmgr.vbs -dlv :显示详细的许可证信息 slmgr.vbs -dli :显示许可证信息 slmgr.vbs -xpr :当前许可证截止日期 slmgr.vbs -dti :显示安装ID 以进行脱机激活 slmgr.vbs -ipk :(Product Key)安装产品密钥 slmgr.vbs -ato :激活Windows slmgr.vbs -cpky :从注册表中清除产品密钥(防止泄露引起的攻击) slmgr.vbs -ilc :(License file)安装许可证 slmgr.vbs -upk :卸载产品密钥 slmgr.vbs -skms :(name )批量授权 88.snippingtool:截图工具,支持无规则截图 89.soundrecorder:录音机,没有录音时间的限制 90.StikyNot:便笺 91.sysdm.cpl:系统属性 92.sysedit:系统配置编辑器 93.syskey:系统加密,一旦加密就不能解开,保护系统的双重密码 94.taskmgr:任务管理器(旧版) 95.TM任务管理器(新版) 96.taskschd.msc:任务计划程序 97.timedate.cpl:日期和时间 98.UserAccountControlSettings用户账户控制设置 99.utilman:辅助工具管理器 100.wf.msc:高级安全Windows防火墙 101.WFS:Windows传真和扫描 102.wiaacmgr:扫描仪和照相机向导 103.winver:关于Windows 104.wmimgmt.msc:打开windows管理体系结构(WMI) 105.write:写字板 106.wscui.cpl:操作中心 107.wscript:windows脚本宿主设置 108.wuapp:Windows更新
2189 次阅读|0 个评论
[转载]Pro/ENGINEER的二次开发(3)-Toolkit核心
rxl 2012-2-23 16:39
3.1 应用程序开发基本过程 除了编辑源程序外,应用程序的开发还应该经历编译、注册等基本过程。 用Pro/TOOLKIT开发的程序一般包括资源和程序两个部分。资源包括注册文件和菜单资源文件。注册文件用于在Pro/ENGINEER启动时动态加载Pro/TOOLKIT程序。菜单资源存储了用户定制的Pro/ENGINEER菜单信息,每个菜单项对应Pro/TOOLKIT程序中的一个功能函数。 3.1.1确定运行模式 Pro/TOOLKIT应用程序有两种工作模式。在前面已经介绍了Pro/TOOLKIT的两种工作模式(异步模式和同步模式)的工作方式,以及它们之间的优缺点等。最后,确定在本课题中采用同步模式的MFC DLL模式来开发应用程序。 3.1.2 设计菜单 程序运行模式确定(从而也确定了VC开发时的项目类型)后,就可以进行程序框架设计。对Pro/TOOLKIT应用程序来说,所谓程序框架设计,时指根据功能要求设计菜单,然后给每个菜单设计动作函数。 例如,一个零件模型建模系统,其功能要求通过定义零件主驱动参数、零件内部关系式来完成零件建模,定义主驱动参数和关系式集之后,要保存这些信息以及模型,供以后使用。这就要求能把主驱动参数、关系式、模型的存放位置加入到数据库中,要使数据库记录这些信息,就需要一个提交模型的菜单。 功能分析完后,就可以设计出菜单。 3.1.3 编写信息文本 菜单设计完后就应该编写菜单的信息资源文本。 信息资源文件用于提供菜单的标签文本(包括其他语言版本的标签)和帮助信息,如过要向Pro/ENGINEER中添加菜单,就必学使用信息资源文本,否则所添加的菜单不会在Pro/ENGINEER菜单栏显示。信息资源文本有固定的格式, 第一行是引文版本下显示的菜单文本标签,第二行是在其他语言下显示的菜单文本标签。第三、第四航都写成“#”号,是系统为将来的功能扩展预留空间。 菜单栏菜单只有菜单标签,没有帮助信息,所以只有一条信息。而一般的菜单项,都含有一行的帮助信息。如右所示的“用户登陆界面”就是对“用户登陆”的解释。 3.1.4 新建项目和设置开发环境 程序开发的第一步是根据运行模式确定的项目类型新建一个项目,然后设置开发环境。 使用VC开发环境来开发程序对初学者来说常常遇到的问题是VC开发环境的设置。为什么要设置?VC开发环境的设置适用于指定Pro/TOOLKIT函数库的目录位置,以便VC开发环境可以在程序的编译连接过程中,找到相应的二次开发函数所在的函数库。 3.1.5 定义初始化函数和结束函数 完成项目的创建和开发环境的设置后,就开始定义初始化函数和结束函数。 初始化函数和终止函数是每个同步模式程序都必须添加的。初始化函数主要用来设置需要添加的菜单,以及其他一些初始值设置,这个函数相当C++类的构造函数或者C语言中的main()函数。终止函数是处理程序结束时需要处理的工作,如释放程序中动态分配给全局变量的内存,这个函数相当于C++中析构函数。 初始化函数和终止函数的形式如下: extern "C" int user_initialize(int argc ,char* argv ) { return 0; } extern "C" void user_terninate(void) { } 到时候只要在其中添加相应的操作就可。 3.1.6 编写源代码 在项目设置以及初始化函数和终止函数添加完毕后,就可以使用VC提供的所有类和函数来开发程序。在编写程序的过程中如果要使用Pro/TOOLKIT函数,添加相应的头文件即可调用。 3.1.7 编写注册文件 在程序编写好后就可以编写注册文件了。注册文件也可以在编写程序之前就写好。推荐先写好注册文件,以便在Pro/ENGINEER系统中调试。 (1)注册文本格式 同步模式的程序必须先把注册文件注册到Pro/ENGINEER的辅助程序中才能在Pro/ENGINEER系统中运行,程序存放的位置、资源信息文件存放的位置、程序启动的类型(是DLL模式还是多进程模式)、程序何时启动(是打开Pro/ENGINEER的时候自动运行还是手工方式)、是否可以手工停止程序(如果不能手工停止运行,那么程序的状态不会出现在注册窗口中)等。 注册文件的文件名必须是以.dat作为扩展名。 (2)自动注册 除可以手工的方式在辅助程序中注册Pro/TOOLKIT程序,Pro/TOOLKIT还支持自动注册,也就是Pro/ENGINEER启动的时候就自动把程序注册到辅助应用程序中。要让Pro/ENGINEER能自动注册程序,需要遵循两个条件。 首先是注册文件的名称。注册文件的文件名使用protk.dat或者prodv.dat。一个文件里面可以记录多条注册记录。 其次是文件的存放位置。Pro/ENGINEER启动的时候会自动查找一些目录,判断是否有文件protk.dat或prodv.dat,如果有则进行注册。这些木主要是以下几个: l Pro/ENGINEER的启动目录; l Pro/ENGINEER配置文件中,指定以“PROTKDAT”、“PRODEVDAT”或者“TOOLKIT_REGISTRY_FILE”变量所存储的位置; l $LOADDIR/$MACHINE_TYPE/text/LANGUAGE目录; l $LOADDIR/text目录 一般在开发阶段入股哦要自动注册可以把文件放到启动目录下,当程序最终完成之后,可以放在后三个目录中任意一个目录下。 3.1.8编译程序并运行 编译连接Pro/TOOLKIT函数库和VC类库,最终生成解决方案。 3.2应用程序的结构 由于DLL模式是将Pro/TOOLKIT应用程序集成到Pro/ENGINEER中的标准方 法。一般开发应用程序都选择这种方法。所以我们这里着重介绍的是DLL模式下的应用程序的结构。 3.2.1应用程序包含的头文件 所有的DLL模式下的Pro/TOOLKIT应用程序第一个包含的头文件是 ProToolkit.h,而且该文件必须为第一个包含头文件,因为它定义了宽字符串wchar_t的值,而在其它头文件中都需要引用该值。由于在ProToolkit.h头文件中还包括了stdio.h,string.h,stddef.h,stdlib.h四个标准库文件,这几个库文件包含了最常用的C函数的定义。故没有必要在文件中包含这些库文件。当你在应用程序中使用了某个Pro/TOOLKIT函数,都必须把含有该函数原型的库文件包含进来,否则在编译的时候,编译器将不能检查函数的参数类型。我们不必显式包含ProObjects.h头文件,因为在含有函数原型的头文件中均间接包含了这个头文件。如果在应用程序中使用了Pro/DEVELOP的函数,则必须加入头文件Prodevelop.h。 3.2.2 Pro/TOOLKIT的核心 user_initialize()和user_terninate()这两个函数是所有的Pro/TOOLKIT应用程序都必须含有的,这两个函数由用户自己编写,但是要由Pro/ENGINEER在启动和终止应用程序时调用它们。user_initialize()函数用来初始化一个同步模式的应用程序,任何同步模式的应用程序都必须有该函数才能为Pro/ENGINEER所调用,在Pro/ENGINEER启动、图形界面产生后系统就会自动调用user_initialize(),所以用户应该在user_initialize()函数中对Pro/TOOLKIT应用程序进行初始化,包括对Pro/ENGINEER原有菜单的修改(如增加新按钮)。当user_initialize()函数调用时它提供了许多参数,当Pro/ENGINEER激活时,这些参数提供了命令行参数信息,版本号和进程序列号。user_initialize()函数的所有输入和输出参数都是可选的,可根据需要选用。初始化函数必须返回0以说明Pro/TOOLKIT函数初始化成功。其它返回值则视为失败,系统会提示用户Pro/TOOLKIT应用程序失败。使用user_initialize()的可选参数以指明失败信息。 原文地址: http://www.hzynh.cn/html/proengineer-second-develop-3-toolkit.html
2534 次阅读|0 个评论
[转载]把程序添加到linux的面板菜单中
liujd 2011-12-5 23:21
现在想把Ulipad添加到系统的"应用程序"菜单里,方法如下: sudo gedit /usr/share/applications/Ulipad.desktop 然后在里面添加如下内容: Name=Ulipad Comment=a Python IDE Exec=/home/zhao/ulipad/UliPad.py Icon=/home/zhao/ulipad/Ulipad.png Terminal=false Type=Application Categories=Application;Development; 保存后,Ulipad就会出现在:应用程序-编程菜单下面
个人分类: linux|1123 次阅读|0 个评论
[转载]MEGA中的dn值和ds值
syfox 2011-12-5 10:07
请问 如何得到MEGA中的dn值和ds值? 先将序列分组,即点set/select taxa or groups,进入分组程序,点中间的“+”,为分组的序列命名,将右栏中属于这个组的序列选中,单击中间的向左箭,然后用相同的方法建立下一组。close the window.在distance 命令中单击compute distance beteen groups,即可计算得到. dn/ds分析的对象是基因的蛋白质编码区,所以你用MEGA打开序列时要确认 作为蛋白质编码序列打开。打开后在distances菜单中单击compute pairwise...(F7),然后选择model:syn-nonsynonymous菜单(如果你没有作为编码序列打开,这个菜单将不可用),并选择合适的method(一般是Nei-Gojobori method (Jukes-Cantor))。这时,substitutions to include项就会让你选择求ds或dn。 最近在一篇文献上看到 evidence suggests that positive selection may account for the extent of amino acid variability observed within the G-protein.请问各位高手,这句话中 positive selection 该怎么解释呀?谢谢! 对应于purify selection, positive selection就是正向选择,也就是达尔文的提出的进化假说。也叫达尔文选择。 哦?先讨论一个基本的问题。自从kimura的中性理论被广泛接受之后,遭遇到的挑战就很多,比如Nei就认为存在positive selection/adaptive selection,而其他人则认为存在negative selection/purifying selection.这两种现象目前都还是比较普遍的存在的。 我的问题是:如果检测到一个gene family存在positive selection的作用的时候,与这个gene family的功能的进化适应有什么关系?purifying呢? 有的文章指出的是,出现adaptive selection是因为gene的功能存在冗余,也就是功能不怎么重要,所以进化的速率相对于中性进化的gene来说,就显得较快。 但是我觉得,一个gene正因为功能重要,而生物体的功能变化剧烈,为了适应功能的改变,而加速进化,那么,出现positive selection,应该是说明gene的功能重要啊! 这个方向你可以多看看ziheng Yang的文章正向选择不仅局限于gene,正选择位点positive selection sites 的确定也是关注的热点。ziheng yang的基于bayes的 ML方法可以说是这方面做的比较好的nei,fitch 他们也做 你如果只是要翻译的话,就象你自己说的,翻译成正向选择就差不多了。 如果你认为大部分不同的sequence因为各种原因(比如说环境),它们的fitness会不同,那么你就会认为natural selection是进化的主要动力。Neutral theory认为大部分的sequence variation对fitness没什么影响,也就是说它们多为“中性”,这种情况下进化的主要动力就是random drift了。其实现在已经没什么人相信strict的Neutral theory了,但是因为基于它很容易构建hypothesis test,所以它经常被用来作为null hypothesis。 如果是做实验的话,正向选择的确定还是比较难确定的, Yang的一篇review也说过,不仅仅是通过paml作出w1就可以了。确定的时候往往需要有生物学的意义,或者需要通过实验来验证。看你想做什么了。。。。。 谢谢各位,如果我的实验目的是想看一个病毒的基因是不是在进化过程中存在positive selection ,在实验方面,我首先要得到连续多年的此病毒的基因,这对我来说是不存在问题的,但对于以后对基因是否存在 positive selection 我不知怎么来分析,分析时需要多少基因序列,结果才是可靠的呀? 这个取决于你的序列的分歧度,如果合适的话4,5条就够了。 别的软件我用没用过,paml frequent ask questions 里边有吴俊义问杨子恒的几个问题: 1) How many species are needed? I suppose the absolute minimum is 4 or 5 if the sequence divergence is optimal. 10 would be good, while 20 would be much better. This will depend on how divergent the sequences are. 2) How far should the total distance among these species be? For example, dS should be 0.5 in total? The optimum sequence divergence depends on the number of sequences, and a big tree with many sequences can tolerate more changes. I think the method will be reasonable if dS summed over all branches on the tree is 0.5 dn 就是非同义突变。指的是突变的产生会对改变基因编码的蛋白。 ds同义突变,和非同义突变相反不会改变。 dn/ds 是判断positive selection的一个重要指标。 if dn/ds1then positive selection. elseif dn/ds=1 then neutral seletion else purify selection 但是由于dn/ds往往是=1的,这是由于dn/ds这种计算方法是从整体水平上描述计算的量,这种方法会掩盖少量的positive selected sites。 不过positive selecion sites 可以通过Yang的paml计算出来。nei的adaptsite也可以做。 用得最多的方法就是Yang Ziheng的PAML,因为里面有很多模型可以使用。文献无数。网上的介绍也无数。 还有sliding windows的方法。这种方法我看到的软件是SWAPSC1.0,但总共就有十几篇文献引用这种方法。Yang Ziheng对这种方法似乎不感冒,但他在论坛上只是说可以查查有多少文献引用sliding windows方法的。并没有说这种方法不好的原因。 还有一种CDM方法,软件就叫CDM,文献也不多。 如果序列差异太大或太小,赶快放弃此方法。 计算dn/ds对序列差异过大的不适合(出现saturation,ds不准),但对序列差异太小的同样不适合的(dn又无意义)。 还有一种Treesaap这个软件,似乎可以用于差异过大的序列,但是目前我还没尝试。因为它是基于氨基酸的分析。它同CDM是同一个研究组开发。 补充一下 HYPHY的软件里边集合了许多功能,里边就有计算positive selection的。还有一个在线计算的,datamonkey。http://www.datamonkey.org/ alicewang wrote: 用得最多的方法就是Yang Ziheng的PAML,因为里面有很多模型可以使用。文献无数。网上的介绍也无数。 还有sliding windows的方法。这种方法我看到的软件是SWAPSC1.0,但总共就有十几篇文献引用这种方法。Yang Ziheng对这种方法似乎不感冒,但他在论坛上只是说可以查查有多少文献引用sliding windows方法的。并没有说这种方法不好的原因。 还有一种CDM方法,软件就叫CDM,文献也不多。 如果序列差异太大或太小,赶快放弃此方法。 计算dn/ds对序列差异过大的不适合(出现saturation,ds不准),但对序列差异太小的同样不适合的(dn又无意义)。 还有一种Treesaap这个软件,似乎可以用于差异过大的序列,但是目前我还没尝试。因为它是基于氨基酸的分析。它同CDM是同一个研究组开发。 最近做序列分析,有以下一些问题想请教: 1、用MEGA做dS/dN时,一般是选用Nei-Gojobori (Jukes-Cantor)还是Modified Nei-Gojobori (Jukes-Cantor)啊?后者是什么情况下用呢? 做变异分析,一般是做水平比较(即比较国内的序列与国外的某些地方的序列比较)还是纵向比较(即国内以前的与现在的序列比较)呢?比较分析不同基因型的dS/dN有没有意义啊? 2、做进化树分析,选取的outgroup是不是还是跟其他的序列放在一起分析啊?还是有另外的做法?因为我想分别构建一条序列的两个部分进化树,得到的两个树中,有一个outgroup跑到中间去了。怎么办啊? 3、MEGA能不能做identity啊?我好像只看到no of difference,这是说两两之间不同碱基的数目吧?如果该数字是10,而全长最长的为100,同源性就是90%啊?是不是这样算的啊??? S.O.S急!谢谢! 1 Modified Nei-Gojobori 是对转换变化率比颠换变化率高的情况所做的纠正,因为原NG法是认为四种核苷酸的替代是随机的。当转颠比很高的时候,采用Modified Nei-Gojobori 理论上要比原版好。但一般操作为了防止错误估计,在检测的时候两种方法同时使用。 不知道你为什么把序列分成国内国外,所谓变异分析,自然是拿你自己得到的序列和已知序列的比较,已知序列当然要可靠。 2 outgroup是你已知跟分析的序列关系较远但又有一定的关系的序列,如果跑到里面只能说明至少在这段部分中,他们的关系是紧密的,所以你选的outgroup不典型,当然也许是什么新的发现 3 同源性90%的说法不够准确,在相似性大于50%的时候,某些情况下可以适当调整,我们认为两个物种是同源的,一般认为小于20%则没有关系。相似性是将检测序列和目标序列间的相同的碱基,或者是氨基酸残基,按照一级结构的顺序,进行序列比对得到的比例。 插入缺失不单单存在检测序列,所以分母也可能比目标序列长。 建议你看看几本生信的书,应该都有吧这些问题 首先真诚感谢!!!强烈要求版主加分! 本人就是用Nei-Gojobori (Jukes-Cantor)和Modified Nei-Gojobori (Jukes-Cantor)算出来的值不一样,所以无从选择。
个人分类: 组装|1 次阅读|0 个评论
[转载]给右键菜单加入CMD命令行快速通道(适合win7)
ddbb12 2011-11-22 19:53
修正一下:在Win7中还有更简单的办法能在当前文件夹中打开CMD命令窗口。 在文件浏览器中,按住shift,然后单击右键,会出现"在此处打开命令窗口"。这个方法可行,无需修改注册表。 下述转载的方法貌似有一些问题,在第一次正常进入命令窗口之后,貌似就不能在进入了,总是提示命令错误,费解。 ============================= 多人都很喜欢在CMD命令行下来操作计算机,我也是其中之一。 如何快速打开CMD并且定位到指定的路径呢?很多优化软件(比如优化大师)都提供了往右键菜单中加入“CMD快速通道”的功能,当右键点击文件夹时,就打开CMD并定位到该文件夹。网上也有修改注册表来实现的,其实根本不用这么麻烦。 PS:其实所有的实现方法都是对注册表做了同样的修改:在HKEY_CLASSES_ROOT\Folder\shell下增加一个“CMD”子键,将该子键的“(默认)”键值修改为“CMD快速通道”,然后在该子键下再建立一个子键“command”,将“command”的“(默认)”键值修改为“cmd.exe /k cd %1”。用注册表文件表示就是(这段代码直接保存为.reg文件双击导入即可): Windows Registry Editor Version 5.00 @="CMD快速通道" @="cmd.exe /k cd %1"
10227 次阅读|0 个评论
[转载]怎样设置Word文档的背景
zhao1198 2011-11-21 12:11
我们在编辑Microsoft Office Word 时,有时候想给整片文档加入漂亮的背景,该怎么加入呢?如下图: 首先,我们要想好背景要选用什么样式的,例如纯色、渐变色、纹理、图片等等。我们先来说一说纯色背景。单击“格式菜单”-“背景”,然后选择一种自己喜欢的颜色,即可。如下图: 渐变色背景,单击“格式菜单”-“背景”-“填充效果”-“渐变”,然后再这里设置好我们需要的效果,点击“确定”即可。例如下图我选择了“预设”渐变效果中的“茵茵绿园”效果: 纹理背景,单击“格式菜单”-“背景”-“填充效果”-“纹理”,然后再这里设置好我们需要的纹理,点击“确定”即可。例如下图: 图片背景,单击“格式菜单”-“背景”-“填充效果”-“图片”,然后再这里选择一幅我们喜欢的图片,点击“确定”即可。例如下图: Word文档还有一种特殊的背景格式——水印,设置起来效果也非常好看。单击“格式菜单”-“背景”-“水印”,例如图片水印: 文字水印效果,单击“格式菜单”-“背景”-“水印”-“文字水印”: 当然各种背景效果我们也可以叠加使用,例如图片和文字水印效果,见下图: 这就是Word文档背景设置,是不是很简单啊?
个人分类: MS|2249 次阅读|0 个评论
[转载]在Excel 2010中条件格式的使用
jerrycueb 2011-11-20 23:55
如果要对下表中“合计”列中的数据进行不同颜色的区分,如:值小于200的用红色表示,值在200与499之间的用黄色表示,值在500与999之间的用绿色表示,值在1000以上的加上边框。怎么做? http://support.microsoft.com/kb/2407781/zh-cn 步骤/方法 选中上图中“合计”列单元格。 在“开始”选项卡中,鼠标左键单击“条件格式”,移动鼠标到显示的下拉菜单“突出显示单元格规则”上,在展开的菜单中单击“小于”命令,在弹出的对话框中输入值“200”,设置为“红色文本”。 再次单击“条件格式”,移动鼠标到显示的下拉菜单“突出显示单元格规则”上,在展开的菜单中单击“介于”命令,在弹出的对话框中输入值“200”到“499”,设置为“自定义格式”,并在弹出的对话框中的“颜色”中选择黄色。 再次单击“条件格式”,移动鼠标到显示的下拉菜单“突出显示单元格规则”上,在展开的菜单中单击“介于”命令,在弹出的对话框中输入值“500”到“999”,设置为“自定义格式”,并在弹出的对话框中的“颜色”中选择绿色。 再次单击“条件格式”,移动鼠标到显示的下拉菜单“突出显示单元格规则”上,在展开的菜单中单击“大于”命令,在弹出的对话框中输入值“1000”,设置为“红色边框”。
个人分类: 软件|4309 次阅读|0 个评论
[转载]右键菜单修改
ywmucn 2011-11-13 13:49
右键新建 方法一:选择“开始”*“运行”,输入“regedit”,打开注册表编辑器,展开HKEY_CLASSES_ROOT主键,该主键下列出了Windows中所有文件类型的扩展名称。我们可 以找到要添加到“新建”菜单中的文件类型,然后进行修改。下面就以添加关联OutlookExpress程序的“.eml”文件为例来说明。 1. 首先需要建立一个示例文件。打开OutlookExpress,点击“文件→新建邮件”命令,新建一个邮件文件。然后点击“文件→另存为”命令,在“另 存为”对话框中,选择保存路径为“C:\Windows”,为该文件命名为“sample.eml”(保存路径和文件名可随意设置)。 2.首先在HKEY_CLASSES_ROOT主键下面找到“.eml”文件夹,在它上面单击鼠标右键,在弹出的快捷菜单中选择“新建→主键”命令,将新建的主键命名为“ShellNew”。 3. 选中“ShellNew”主键,在右边的窗口单击鼠标右键,选择“新建→字符串值”,命名为“FileName”。双击“FileName”字符串,在“ 编辑字符串”对话框的“键值”文本框中输入C:\Windows\sample.eml,按下“确定”按钮,退出注册表编辑器。 4. 在桌面上单击鼠标右键,选择“新建”菜单,看看是不是多了一项“OutlookExpressMailMessage”,单击该项即可新建一个邮件 文件。双击该邮件文件就可以打开OutlookExpress的“新邮件”窗口,撰写完邮件后,单击“发送”按钮即可将邮件发送出去。 按 照上述步骤,可添加其他类型的文件,但需要注意的是在第2步中,并不是所有的文件类型都要建立“FileName”字符串。如果你要添加的文件类型的关联 程序在启动时会自动新建空白文件(如Word、Excel),则将新字符串名称设定为“NullFile”。如果关联程序在启动时不新建空白文件(如 Outlook、Foxmail),则将新字符串名称设定为“FileName”。 要删除“新建”菜单中添加的新的文件类型,只要在注册表中找到相应的“ShellNew”主键,然后删除即可。 方法二:也可以用优化大师直观地添加 系统个性设置——找到鼠标右键设置——自定义鼠标右键——新建名称为记事本的项 路径指向系统目录下的NOPADE.EXE 右键菜单修改 修改右键菜单应该在注册表中,具体的说,是在HKEY_CLASSES_ROOT根键下(这里可是右键菜单中所有命令的根源哦!)。展开该根键,其下的子键主要有两种:扩展名键(.+扩展名)和类定义键(如图1)。一般地说,只要是在windows系统中已注册过的扩展名,在HKEY_CLASSES_ROOT下均有“·该扩展名”子键 ,记录该扩展名的一些信息,对某种特定类型的文件的右键菜单的修改,便是在该键或“扩展名file”键下的操作。 1、在所有的文件右键菜单中加入命令 如果你的系统上安装有Winzip、UltraEdit等,当你对任一文件点右键时,都会有“Add to zip”、“UltraEdit-32”等命令(当然,Winzip稍有不同,我将在后面讲到)。它的添加方法是: (1).打开“HKEY_CLASSES_ROOT\*”; (2).在其下shell下新建(项)命令\(项)command”分支,再将command的键值(默认数据)设为执行该命令时所用的可执行程序的绝对路径,并在其后加“%1”即可。 例:在“HKEY_CLASSES_R OOT\*”下新建“shell\用写字板打开\command”子键,将command的键值设为“c:\windows\notepad.exe %1”,就会在右键菜单中出现“用写字板打开”的命令了 说明: 1)要删除该类命令,只需将“命令”子键删除即可; 2) 有的人或许会问他按我写的去做,但是得到的为何与我的有一些不同,这就是我的命令里有快捷键(N),只要在“用写字板打开”后加入“(&N)”即可。 2、在特定文件类型的右键菜单中加入命令 刚才说到了Winzip这个软件,对普通的文件类型,它的右键菜单中有“Add to zip”,但是对它所支持的压缩文件类型,如*.zip、*.cab、*.rar在其右键菜单中有“Open with Winzip”、“Extract to”、“Extract to folder”、“Create Self-Extractor(.EXE)” 等命令,对于自解压性安装文件(如OICQ99b),其右键菜单中有“Run with Winzip”命令。下面是特定文件类型的右键菜单的命令添加方法(以在mp3文件的右键菜单中加入Play with winamp为例): (1).打开“HKEY_CLASSES_ROOT\mp3_auto_file”主键; (2).在其下新建“shell\Play with Winamp(&P)\command”,将command的键值设为“C:\Program files\winamp\winamp.exe %1” 。 说明:当有多个软件可以播放mp3文件时,我们可以在右键菜单中添加多条命令,如加入“Play with Unreal”等命令,但是我们如何将某一条命令定义为默认操作(即右键菜单中的黑体命令)呢? 你一定会说,很简单的事情吗!将mouse移向一mp3文件,在按右键的同时按shift,在右键菜单中选“打开方式“便可更改,但是这是错误的,不信你试试看,这样只有在右键菜单中选“打开”时才会用你所选择的程序来打开它,否则,它仍旧一如继往。因为它的默认操作不是“打开“这条命令。真正的方法是将shell的默认键值改为你所想执行的命令,例如将shell的键值改为“Winamp”,效果如图3所示。 还有,不知道你发现了没有,我在前面的例子中用的是“Play with Winamp”命令,而在这里用的是“Winamp”,是不是有点不对应呢?说到这里,真是让我心酸,本来我在txt文档中用shell进行默认操作的转换时(转换open与print)挺成功的,但是一转换“Play with Winamp”与“Play with Unreal”便失败,总是转换不过来,最后才明白这可能是“瘟酒吧”的一个bug,它要求转换时主键的键名为单个字符串时才有效。对汉字与英文的组合也有效,不过中间可不能有空格(不知道这是否与我的Win98是D版有关?)。 如果你认为上面的方法不太方便且过于复杂,其实在Windows中还提供了不用操作注册表的更为方便安全的方法:打开一个文件夹,选“查看/ 文件夹选项/文件类型”,在这里你将会找到所有已经注册的文件类型,选择“mp3文件/编辑”,看到操作下面的“新建”、“编辑”、“删除”、“设为默认值”这四个按钮没有?不用我再教你了吧!嘿嘿。 3、在所有的文件夹右键菜单中加入命令 如果你用过Acdsee这个软件,就会发现在文件夹的右键菜单中总有“Browse with acdsee”这一命令,同类的还有Pc-cillin中的Trend Pc-cillin 98命令,下面再该类命令的添加方法: (1).打开“HKEY_CLASSES_ROOT\diretory\shell”主键; (2).在其下新建“命令\command”……下面不用再说了吧! 说明:1.如果你细心一下的话,你将会发现其实在驱动器的右键菜单中,也有“Browse with acdsee” “Trend Pc-cillin98”等命令,驱动器也是特殊的文件夹,但是通过上面的方法是无法在驱动器的右键菜单中加入命令的。如果要在其中加入命令,须对“HKEY_CLASSES_ROOT\drive\shell”主键进行操作; (3).在“HKEY_CLASSES_ROOT”主键下还有一个folder子键,顾名思义,对它的操作将影响所有的文件夹,包括回收站,切记切记!(图4是在回收站中添加了“Browse with acdsee”命令) 4、在所有的文件与文件夹的右键菜单中加入命令 如果你自己开发了一个程序,它的操作对象是文件和文件夹,因此你想在所有的文件和文件夹的右键菜单中加入特定的命令进行操作,这就得看下面的了。 打开“HKEY_CLASSES_ROOT\AllFilesystemObjects”主键,在其下新建“shell\命令\command”,以下操作同前。 需要指出的是这只是一种解决方法,如果大家看我所抓下的图,会发现总有一个“IconView”命令,出现在所有的文件和文件夹的右键菜单中,但是这可不是用这种方法形成的,不妨作一下对比(如图5),这条命令是通过该软件中的应用程序扩展库iv_shext.dll扩展而来,因此它出现在右键菜单的中部。而不是在顶部 。(什么?让我讲一下这种方法?)由于这种方法涉及到编程方面的内容,限于篇幅和主题,我就不讲这种方法了(嘘!小声点,其实我也是不会。) 5、一些特殊命令的添加与删除 (1).资源管理器 在Windows系统中,普通文件夹、驱动器、回收站等的右键菜单中都有“资源管理器“命令,如果你只想在驱动器中保留该命令,可以先在“HKEY_CLASSES_ROOT\folder\shell”主键中删除 explore子键,然后在“HKEY_CLASSES_ROOT\drive\shell”主键中新建“explore\command”子键,令 commmand的键值为“C:\WINDOWS\Explorer.exe/e,/idlist,%I,%L”怎么样,成功了吧! (2).清空回收站 在Windows系统中,只有在回收站的右键菜单中才有“清空回收站”的命令,是不是太不方便了呢,好,我们可以经过一番改造,让所有的文件菜单中都有“清空回收站”的命令,follow me! 我们的思路是先找出“清空回收站”这个命令的来源,然后将其照搬到“HKEY_CLASSES_ROOT\*”下即可。好,还是先来找吧,我找呀找,终于找到了!(图6)——再教你一招,就是一些特殊的命令(特别是第三方提供的软件),都是由应用程序扩展库(.DLL)扩展而来,在注册表的 “shellex\ContextMenuHandlers”中便能找到它的痕迹。我们打开“HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E} \shellex\ContextMenuHandlers”,可以发现其下有一名为“{645FF040-5081-101B-9F08- 00AA002F954E}”的子键,这就是“清空回收站”命令的根源了。 找到了根源,就容易多了,在“HKEY_CLASSES\ROOT\*\shellex\ContextMenuHandlers”下新建一键名为“{645FF040-5081-101B-9F08-00AA002F954E}”的子键,怎么样,够酷吧! (3).新建命令的子命令的添加与删除 不知道有没有遇到这种情况:你经常自己手工编写网页,在单位的机器上的新建命令中有“新建html文档”的命令,但是你的机器上却没有,还有,随着各种软件的不断增加,你的新建命令弹出子命令的时间越来越长,够呛的吧! 不要紧,不用急,让我来帮你把该出来的叫出来,不该来的让它回去! 打开“HKEY_CLASSES\ROOT\.htm”,添加一主键shellnew,然后新建字符串值NullFile ,键值为空,你现在再对桌面点右键,看看新建,是不是多了一点什么? 至于删除,想各位不致让我多说了吧! (4).剪切、复制、粘贴等命令的添加 注意,我只是谈剪切、复制、粘贴等命令的添加,也就是说对右键菜单中没有这些命令的某些对象,可以添加,而对那些本来有就这些命令的对象,就连删除它们,我都无能为力。 好,我现在以回收站为例,来进行剪切、复制、粘贴等命令的添加,具体地说,有“打开、剪切、复制、粘贴、重命名、删除、属性”等命令的添加。先打开“HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}”主键,你会发现有“shellfolder”子键,在该子键下新建二进制值attributes,它的键值就决定了这些命令在右键菜单中的显示与隐藏。具体如下: 命令 键值 打开 00 00 00 20 剪切 02 00 00 00 复制 01 00 00 00 粘贴 00 01 00 00 删除 20 00 00 00 重命名 10 00 00 00 属性 40 00 00 00 如果你要显示某些命令,只需将该命令所对应的键值相加,结果作为attributes的键值即可。例如:当attributes值为00 00 00 00(默认)时,将不显示以上命令,当为73 01 00 20时,将显示所有的命令(如图7)。现在好了,可以将“回收站“改为你所想改的名称了,还可以将“废物”粘贴到回收站了(不过我看这倒没有多大的作用,是吗?) (5).“发送到”及其菜单 有的文件夹(如我的文档)的右键菜单中没有“发送到”这条命令,我们可以给它添加上去,方法可以参考“清空回收站”命令的添加方法。就是打开“ HKEY_CLASSES_ROOT\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\shellex\ ContextMenuHandlers”,在其下新建“{7BA4C740-9E81-11CF-99D3-00AA004AE837}”子键,就可以了。 至于“发送到“的菜单,是不需要在注册表中对其进行操作的,它的根源是“C:\windows\SendTo”这个文件夹,你只需在这个文件夹内新建一个快捷方式,让它指向你所想要发送到的文件夹,就OK了(如图8,其中backup,software为新建的指向文件夹的快捷方式)。 (6).查找 在Windows系统中,普通文件夹及驱动器的右键菜单中有“查找……”这条命令,如果我们要在回收站中寻找误删除的文件,而此时回收站中的文件又多的话,我们就可以在回收站的右键菜单中加入“查找……”这条命令。具体方法可以参考2,5。只是需要新建的子键为“{61E218E0-65D3-101B-9F08-061CEAC3D50D}”。只不过命令变成了“文件或文件夹……”(如图9) 讲了这么多,你现在应该懂如何修改右键菜单了吧?以上所讲均在Windows98中文版下通过。最后祝大家都能把自己的右键菜单改得别具一格,得心应手!! 二、轻松修改鼠标右键菜单 操作过Windows 95/98的朋友们一定知道,通过使用鼠标右键的弹出菜单能简化许多操作,如用WINZIP来压缩文件。因此它也逐渐“发福”起来,先是WINZIP,后是ACDSee,再是Norton AntiVirus……你是否也想对这个弹出菜单进行修改呢?希望本文能给你一些启发。 修改文件的鼠标右键弹出菜单(以下简称弹出菜单) 运行注册表编辑器(regedit.exe),打开“我的电脑\HKEY_CLASSES_ROOT\*\shellex\ ContextMenuHandler”分支。该分支下有两个主键HexWorkshopContextMenu和Winzip(笔者的电脑中装有 Winzip和HexWorkshop),删去后即可发现原来文件的弹出菜单上的Hex edit 和Add to Zip两项不见了。当要在弹出菜单中添加一些可执行文件时(以notepad为例),可进行如下操作: 1.在“我的电脑\HKEY_CLASSES_ROOT\*”下新建一个名为shell的主键。 2.在“shell”下新建名为aaa(aaa即是显示于弹出菜单中的文字,这里假设用“用笔记本打开”代替)的主键。 3.在aaa下新建名为command的主键,修改其右默认的键值为“c:\windows\notepad.exe %1”(%1表示该文件不带参数,而只运行笔记本程序)即可。 4.需再添加新的菜单项重复步骤2、3即可。 这样,在弹出菜单上就出现了“用笔记本打开”这一选项,在打开未与笔记本建立关联的文件时避免了从许多打开方式中去重复选择笔记本的麻烦,而且可以用多种方式打开同一文件而不改变该文件原来的关联(如同时用photoshop和ACDSee打开一图片),增加了文件打开方式的灵活程度。 修改驱动器和文件夹的弹出菜单 1.驱动器弹出菜单的修改 (1)修改方法同上面文件的弹出菜单的修改基本一样,运行注册表编辑器,打开“我的电脑\HKEY_CLASSES_ROOT\DRIVE”,其下有三个主键DefaultIcon、shell和shellex。 (2)打开shell可以看见find和Browse with ACDSee(机器上需装有ACDSee),这也是显示在弹出菜单上的文字,如将Browse with ACDSee改为别的名字,如“用ACDSee浏览”时,则英文变成汉语“用ACDSee浏览”。添加菜单项同样需要在shell下添加新主键,删除菜单项则只要删除对应的主键,如删HexWorkshop,则删去shellex下的ContextMenuHandlers主键下的 HexWorkshopContextMenu主键即可。 2.文件夹弹出菜单的修改 文件夹弹出菜单的修改比较复杂,涉及两个主键Directory和Folder(同样位于“我的电脑\HKEY_ CLASSES_ROOT\”下)的修改。其中修改Folder主键后对驱动器弹出菜单也有影响(修改Drive主键不会影响其他),如在Folder\ Shell主键下添加新主键(设名为aaaa),则同时会在驱动器和文件夹弹出菜单中出现aaaa这一项,删除也同样会对两者产生影响,如删除 Folder\Shell下的explore和open主键,两者弹出菜单的资源管理器和打开两项就会消失。要删除驱动器弹出菜单的winzip项,则删去Folder\Shellex\Context MenuHandlers下的winzip主键即可。而删除文件夹弹出菜单的winzip项,还要删去Directory\Shellex\ ContextMenuHandlers下的winzip主键。只对文件夹弹出菜单进行增删,需对Directory操作就行了(操作主键 Directory不会影响驱动器的弹出菜单)。如删去查找菜单项,只需去掉Directory\Shell下的find主键,添加则在Shell下添新主键。 3.从“文件夹选项”中修改 这种方法比较简单,类似对文件建立关联,方法如下: (1)双击“我的电脑”,打开“查看/文件夹选项”(对于Windows98,还可以单击“开始/设置/文件夹选项”)。 (2)单击“文件类型”标签,从中选中“驱动器”,然后按“编辑”按钮。 (3)在随后的编辑文件类型对话框中,按“新建”按钮,在弹出的新操作对话框中输入一个名字(即弹出菜单上的文字),在用于操作的应用程序文本框中输入应用程序名(也可用浏览来寻找),完成后按“确定”即可。 修改文件夹的步骤相同,只要选中文件夹就可以了。 通过这些方法,你可以将自己制作的软件加入弹出菜单,能和正版软件同占一席之地是不是很有成就感。 三、巧妙用好右键菜单 移动和复制文件是Windows最常用的文件操作,一般都是先选中文件,然后通过鼠标右键,选择“复制”或“剪切”命令,然后打开目标文件夹,再进行“粘贴”;再者,打开并平铺两个资源管理器窗口,然后进行拖放操作,也能达到操作目的。(其实 Windows的“发送到”命令,是一个非常灵活的复制命令,我们可以手动添加“发送到”对象,就可以方便的复制文件了。但是这些方法都不够灵活,或许微软意识到了这一点,在Windows Me/XP中增加了“复制到文件夹”和“移动到文件夹”命令。它就在资源管理器的“编辑”菜单中,不信你自己打开瞧瞧!可惜在实际应用中仍稍嫌不便。这不,笔者介绍的以下的操作方法让你把“复制到文件夹”和“移动到文件夹”命令加到右键菜单中,从而可大大方便操作。 1、运行“注册表编辑器”(RegEdit)。 2、在“注册表编辑器”窗口的左窗格中,依次展开“HKEY_CLASSES_ROOT\AllFilesystem Objects\shellex\ContextMenuHandlers”分支。 3、右键单击“ContextMenuHandlers”,选择“新建→主键”,将新主键命名为“Copy To”。 4、选中“Copy To”主键,在右窗格中,双击“默认”,此时弹出对话框的“数值数据”框中键入“{C2FBB630-2971-11D1-A18C-00C04FD75D13}”。单击“确定”按钮。 5、单击“文件”菜单中的“退出”命令,关闭“注册表编辑器”窗口。 增加“移动到文件夹”命令,方法步骤同上,只是在“ContextMenuHandlers”下,新建一个“Move To”主键,将其值设置为“{C2FBB631- 2971-11D1-A18C-00C04FD75D13}”即可。 现在,右键单击某一文件(夹),在系统弹出的快捷菜单中,出现“复制到文件夹”和“移动到文件夹”两个选项,点击进去试试,此时将弹出一个浏览文件夹的窗口,选择目标文件夹后,点击确定即可实现复制或移动文件的目的。 将注册表展开到HKEY_CURRENT_ USER\Software\Microsoft\Internet Explorer\MenuExt,在IE中显示的附加右键菜单都在这里设置,常见的“网络蚂蚁”和“网际快车”点击右键下载的信息也存放在这里,只需找到显示广告的主键条目删除即可 2008年02月18日 星期一 上午 09:06 注册表的文件关联及应用 喜欢使用Windows右键快捷菜单的朋友可能知道,当你选择了一个文件(或者是文件夹或是系统图标)再单击鼠标右键,系统就会弹出一个菜单,菜单上面的各种“功能”(或称“操作”)任你选择,但是你是否注意到,当你安装一些应用软件之后,你的右键菜单是不是膨胀,以winzip为例,安装winzip之后,文件或文件夹的右键菜单当中就增加了功能选择项"Add to Zip"和"Add to xxx.zip",如图一,看到这个变化,我们不禁要问,这些选择项是怎么加入的,可不可以自己来添加。带着这些问题,我们再来看Windows的文件关联。   什么是文件关联呢?通俗地说,就是选择不同类型的文件时,在其右键菜单上显示的各功能项。每个功能项即对应一个关联。选择了某一功能(操作),系统就去执行相应的处理程序。至于对什么文件的什么操作对应什么样的处理程序,那都记录在系统注册表中。因此,要真正弄清文件关联,必须深入研究注册表。这个问题解决了,我们就可以利用注册表随心所欲地为文件建立,修改,删除关联。   既然关联信息都写在注册表中,那么它在注册表中又是怎样构成的呢?我们不妨打开注册表,观察根键HKEY_CLASSES_ROOT之下的各个主键。(这样或许更易说明这一点)你是不是看到了很多前面有一个点(.),后面好象是文件扩展名的主键,如图二所示   DefaultIcon主键,它的功能是定义该类文件的默认图标。 Shell主键,它的功能是本文讨论的中心——文件关联之“命根”所在。文件的各种关联都寄生在此“根”之下,正是它定义了该类文件与多个程序相关联。它的默认值也很有用,你是否还记得双击文件可以将文件打开(对于已注册的文件),这种打开就是利用了系统注册表所设定的默认打开方式,即由shell主键的默认键值来控制。它之下的每个主键,都可称作是“关联主键”(如图四)。“关联主键”的键名是任意的(建议用英文),它的默认键值也是我们感兴趣的。因为这一默认键值会直接显示在右键菜单中,并且每个“关联主键”之下都有一个command主键,这个主键定义的就是“该关联对应的执行程序”。如图五所示,到此文件关联已昭然若揭。   下面我们就以.reg文件(注册表的脚本文件)为例来说明其关联过程。   首先.reg文件在HKEY_CLASSES_ROOT根键之下有一个“扩展名主键”。.reg其默认值为regfile,说明reg类型文件关联的主键是regfile。再在该根键之下找“标识主键”regfile,regfile主键之下有一个DfaultIcon主键,作用是定义reg文件的默认图标。其默认键就是图标的全路径文件名。如: C:\windows\regedit.exe,1(表示的是regedit.exe中的第2个图标)。regfile主键之下还有一个上文称之为“命根”的主键shell,reg文件的 关联就记录在shell之中。下面我们就为regt建立一个关联。步骤为:在shell主键之下,新建主键xxf(名任意),置其默认值为:“徐喜峰的文 本编辑器”,再在xxf主键之下新建主键command,置其默认值为C:\Windows\Notepad.exe %1,该默认值的意义为:用记事本来打开当前reg文件。若没有%1参数,则只运行记事本程序,而不打开当前文件。设置完毕,你再看看reg文件的“右键菜单”,是不是多了一个“徐喜峰的文本编辑器”选项(如图六),爽吧!~   以上所说的只是作用于普通文件的关联,然而在Windows中,除了文件,还有文件夹及特殊的文档(如我的电脑,驱动器,回收站等)。那么这些又该如何设置关联呢?那就请大家记住在HKEY_CLASSES_ROOT根键之下还有以下几个重要的系统关联主键:   *:作用于所有文件,它与“标识主键”的关联方法一样。   Directory:作用于一般文件夹。   Folder:作用于所有文件夹,包括特殊文件,如:控制面板,回收站等。   Drive:作用于驱动器,如A驱,B驱,C驱。   Unknow:作用于系统不能识别的文件类型,即没有注册的文件类型。   最基本的文件关联就谈到此处,下面来看看文件关联的应用。   应用之一:让MS-DOS方式无处不在。   经常用到DOS方式的朋友可能有些厌烦,因为每次进入DOS方式,都要选择“开始\程序\MS-DOS方式”。利用文件关联,我们可以将MS-DOS方式添加到任何文件的“右键菜单”中,这样就省事多了,方法为: 将注册表展开到HKEY_CLASSES_ROOT\*\shell分支。(在所有文件的“右键菜单”中添加MS-DOS方式)新建主键“MS-DOS",置其默认值为“进入MS-DOS方式”,在MS-DOS主键之下新建command主键,置其默认值为:“C:\Windows\command.com”。 另注册表展开到HKEY_CLASSES_ROOT\Folder\shell分支,(在所有文件夹的“右键菜单”中添加MS-DOS方式)设置同上。   应用之二:隐去快捷方式图标中的小箭头。   如果你觉得快捷方式图标中的小箭头有点障眼,那么利用关联,可以将之去掉,将注册表展开到HKEY_CLASSES_ROOT\lnkfile 分支,将lnkfile主键之下的键值Isshortcut删除,再将注册表展开到HKEY_CLASSES_ROOT\piffile分支,将 piffile主键之下的键值Isshortcut删除,即大功告成。   应用之三:用记事本来编辑bat文件。   有时想编辑bat文件,而习惯性地双击它,这一双击,并没有将它打开编辑,而是将它执行,让人甚为恼火。利用注册表的文件关联,可以将之改变。将注册表展开到HKEY_CLASSES_ROOT\batfile\shell分支,将shell主键的默认值由open改为edit即可。   应用之四:更改某类文件的默认图标。   以txt文件为例,将txt文件的图标改为“我的电脑”的图标。将注册表展开到HKEY_CLASSES_ROOT\txtfile\DefaultIcon分支,将主键DefautIcon的默认键值改为:"C:\Windows\explorer.exe,0" 即可。   应用之五:为所有文件增加“打开方式”。   将注册表展开到HKEY_CLASSES_ROOT\*\shell分支,新建主键open_as,置其默认值为“选择打开方式”,在 Open_As主键之下新建主键command,置其默认值为:"C:Windows\rundll32.exe shell32.dll , openAs_RunDll %1 "   应用之六:将“关机”加入到右键菜单。   将注册表展开到HEKY_CLASSES_ROOT\Directory\shell分支,新建主键close,置其默认值为“关闭系统”,再 在close主键之下,新建主键command,置其默认值为:"C:\Windows\rundll32.exe user.exe, exitwindows"   以上六例应用,总体上能够概述文件关联的基本结构和基本框架,弄清了文件关联的结构与框架,自己再增加关联就是小菜一碟了。只要你有兴趣,你可以将你的右键菜单加得满满的。如果你想了解更深一层次的文件关联,那就请你参阅有关windows注册表方面的书籍与资料,或与我联系,我的Email是soolf@163.com。 在文章结束之前,还告诉大家一点小小的诀窍:那就是注册表在作过修改之后,很多场合需要重新启动才能生效。这里我告诉大家一个不需要重启但又能快速更改注 册表的方法:选择“开始\关闭系统”,在弹出“关闭系统”框之后,按Ctrl+Alt+Del 组合键,出现“结束任务”框,选择其中的“Explorer”,再单击“结束任务”,等待一会儿(10秒左右),就会出现一个“结束任务”确认框,点击“ 结束任务”按钮即可 详解右键关联菜单 注册表中这个键位,它是关联着系统所有文件的 这个键则是对应它的关联右键菜单,在这个键下面添加项目及操作,就是给所有文件添加菜单。在这个键的下面默认有个 键,这是关联菜单中的“打开方式”;一般安装了常用软件Winrar,那么就会多出一个 的键来。 这个键也是关联所有文件的 这个键下面默认有个 键,它就是菜单项目“发送到”。 这个键位,它的默认值数据为‘文件夹’,这样说明,它是关联着系统的所有文件夹,而且在‘文件夹选项’的‘文件类型’中,也可以看到它以及编辑关联菜单等。 这个键,是对应每个文件夹的背景右键菜单,所以在这个键下面添加项目及操作,就等于给‘桌面’和‘文件夹空白处’增加了菜单。它不可以在‘文件类型’中编辑和修改,甚至优化大师等优化软件也不能编辑它。 这个键,是对应右键单击每个文件夹上的菜单,如果在这个键下面添加项目和修改,就修改了文件夹的右键菜单了。‘文件类型’和大多优化软件可以编辑和修改到它。 这个键,也是对应右键单击每个文件夹上的菜单,如果在这个键下面添加项目和修改,就修改了文件夹的右键菜单了。大多优化软件可以编辑和修改到它,但‘文件类型’中无法编辑它。 这个键位,它的默认值数据为‘驱动器’,这样说明,它是关联着系统的所有硬盘分区的,而且在‘文件夹选项’的‘文件类型’中,也可以看到它以及编辑关联菜单等。 这个键,是对应右键单击每个分区上的菜单,如果在这个键下面添加项目和修改,就修改了分区的右键菜单了。‘文件类型’和大多优化软件可以编辑和修改到它。不过默认只有一项“搜索”的菜单,还有就是XP系统在文件夹选项改动这一项时,会导致“搜索”被变为默认菜单,而“打开”却变为次菜单。 这个键,也是对应右键单击每个分区上的菜单,如果在这个键下面添加项目和修改,就修改了分区的右键菜单了。大多优化软件可以编辑和修改到它,但‘文件类型’中无法编辑它。 如果想要删除某一文件类型打开方式列表中的某一条目,在这个键下找对应的.扩展名\OpenWithList把不需要的项目删除, 示例: 如果想删除文本文档(*.txt)的Windows记事本(notepad.exe)打开方式,应该删除下列键 值:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \FileExts\.txt\OpenWithList中值为notepad.exe的字符串值。
个人分类: 脚本|3336 次阅读|0 个评论
[转载]chrome的一些命令
热度 1 onewaystreet 2011-10-23 15:08
Chrome 有很多的特性在界面菜单中是没有体现的,你可以通过 chrome:// 命令来访问。本文介绍 12 个非常有用的 chrome:// 命令: 1. chrome://flags 可用来启用或者关闭某些 chrome 的体验特性 2. chrome://dns 该命令将显示浏览器预抓取的主机名列表 3. chrome://downloads 该命令同时也可以从菜单中的下载来访问,其快捷键是 Ctrl + J 4. chrome://extensions 该命令等同于菜单 - 工具 - 扩展 5. chrome://bookmarks 改名了等同于菜单-书签-书签管理器,快捷键 Ctrl+Shift+O 6. chrome://history 该命令可从菜单-历史直接访问,快捷键 Ctrl+H 7. chrome://memory 该命令将重定向到 “chrome://memory-redirect/”. 它将显示浏览器使用内存的情况,以及系统中运行的其他浏览器,包括 firefox。同时还显示浏览器进程的详细信息。 8. chrome://net-internals 该命令显示网络相关信息,用来捕获浏览器生成的网络事件,可导出数据,可查看DNS主机解析缓存。 其中一个很重要的功能就是“测试”,如果你无法访问某个网址,那么可以使用 “chrome://net-internals” - 点击“Tests” tab - 输入网址,并点击开始测试,Chrome 将报告具体的问题所在。 9. chrome://quota-internals 该命令用来显示浏览器所使用磁盘空间配额的情况。 10. chrome://sessions 该命令用来显示当前运行的浏览器的会话信息数以及详细列表 11. chrome://settings 该命令可通过菜单-选项直接访问,可用来控制浏览器各项设置值 12. chrome://sync-internals 用来显示 chrome 的同步状态 最后,如果你想查看 chrome 所有的命令,可使用 chrome://about/ 另外,请注意,上面提及的所有命令也可使用 about:xxx 命令,将会自动重定向到 chrome://,例如: about:dns chrome://dns 原文地址 http://www.linuxidc.com/Linux/2011-10/45305.htm
个人分类: 浏览器|2274 次阅读|1 个评论
[转载]李双江之子打人构成寻衅滋事罪 被收容教养1年
wliming 2011-9-15 22:16
李双江之子打人构成寻衅滋事罪 被收容教养1年 来源: 新华社 2011年09月15日20:44   新华社中国网事记者卢国强报道,15日,北京市公安局公布“李双江之子打人事件”查处情况称,犯罪嫌疑人李某由政府收容教养1年,犯罪嫌疑人苏楠被提请逮捕。   北京市公安局通报,李某行为构成寻衅滋事犯罪,依照《中华人民共和国刑法》第17条之规定,公安机关决定对李某由政府收容教养1年,已送交执行;另已决定依法对苏楠提请逮捕。   针对京J79272车辆存在多起未处理的非现场违法行为,交管部门曾于2011年1月10日至8月29日依规定向车辆所有人李某邮寄了8次《交通违法行为未处理告知书》。目前,上述违法行为也均已处理完毕。   经晋O00888车牌管理机关山西省公安厅交管局牌照设施所认定,并有其他相关证据佐证,苏楠案发时驾驶机动车上悬挂牌照系伪造。苏文斌(男,45岁,原山西省聚通汽车贸易有限公司董事长,苏楠父亲)因涉嫌伪造国家机关证件罪已被公安机关刑事拘留审查。
个人分类: 社会|993 次阅读|0 个评论
王世襄的菜单
sivaxin 2011-8-25 23:08
王世襄的菜单
北京之行除了游,品尝当地美食自是不可少的,这次去北京大部份餐食是在会议上解决,自已找地方吃饭仅两顿,去的是护国寺小吃和芝麻花。 护国寺小吃是在网上搜的,人气十分高的老北京特色小吃店,就在护国寺大街上,门脸很古色古香,进门挂着一幅长卷描绘的是老北京的街景,京味实足。小吃店内部陈设很有八十年代国营饮食店的感觉,游客和外国人十分多,我那日去得钟点早,待我坐下开吃点餐柜台前已排起了长龙。我根据网友的推荐点了炸豆腐皮汤、碗豆黄、面茶和炸圈,四样东西才十块钱出头,感叹北京小吃价格之亲民啊。不过面茶和炸圈都不太合我的胃口,尤其是面茶,百思不得其解为何北京人爱吃这个甜不甜、咸不咸,汤不像汤,糊不像糊的东西呢,不过碗豆黄和炸豆腐皮汤味道还不错。吃完小吃还逛了下护国寺大街,沿路有不少保护老建筑,最著名的是辅仁大学的旧址。 芝麻花可能一般的老北京人都不会有印象,因为它是家小得不能再小,平凡得不能再平凡的饭店,而且隐藏在居民区内,游客是绝对不易发现的,但我却十分钟情这家店,说起缘由还有一段故事。 2008年与爸爸一起去北京王世襄家拜访所摄的照片, 那时正是爸爸受王老之托撰写《王世襄传》,初稿完成再与王老当面对一些生平经历细节进行挖掘。那也是我第一次有机会走入心向往之许久的“俪松居”, 那时“俪松居”已由王老祖宅芳嘉园移至了芳草地的迪阳公寓。 可王世襄与老伴袁荃猷风雨守护。
个人分类: 忆人忆往|2 次阅读|0 个评论
将PC窗口菜单程序移植到单片机 问题与解决方案
chrujun 2010-9-29 16:40
让基于单片机的仪器具有漂亮的窗口、对话框和菜单,对任何人来说都是一个挑战。特别是多级窗口、菜单和对话框,没有1年功夫是搞不定的。 经过几个月的功夫,我成功将PC环境下运行的一个支持菜单和对话框的C程序移植到8051单片机上,可以显示汉字,输入数字和选择项。 先看看单片机系统的硬件配置。系统核心为新华龙8051系列单片机,64K FLASH程序存储器,9K XRAM。输出为支持汉字显示的320*240显示屏,输入为自制扫描键盘,有10个数字和几个功能键。 窗口菜单程序来自网上公开资料,基于C语言,只能显示西文字符,用BORLAND C编译后可以在DOS环境下运行。 第一个步工作是编写getkey()和putchar()函数,getkey()通过中断扫描用户的键盘输入,返回ASCII码。putchar()函数可以显示汉字字符和西文字符。另外一个函数是光标定位函数,指定输出的位置。 第二步工作是修改原程序,很多DOS下的函数,需要想办法替换或屏蔽掉,全部改成单片机C语言可以支持的函数。编译的时候出了N多错误,花了2周时间全部搞定了。 第三步工作是设计要显示的菜单和对话框,确定每个单元要显示的位置。然后将定义好的菜单和对话框结构体放到窗口程序要求的位置,再加上一些必要的代码,整个移植工作就准备待命了。 第四步工作是运行和调试程序。结果几次调试,大功告成,菜单和窗口可以显示了,多级菜单和多级窗口,也可以搞定。 出现的一个大问题是从子对话框返回时,父对话框的变量变了。将编译器的优化级别设置的最低级,按照大模式(64K)编译后,问题得到全部解决。
个人分类: 地球物理及仪器|6985 次阅读|2 个评论
一个在AutoCAD里添加菜单的类,用COM接口实现(转载)
huguanhu 2009-11-10 12:06
AddCADFrameMenu.h文件如下: /**/ /* ------------------------------------------------------------------------- 作者:RackyYe 该类封装了在AuToCAD上添加菜单及子菜单的方法,使用COM接口实现 大家可以任意修改,添加新功能,希望大家能多交流 Email:yeguixi@126.com -------------------------------------------------------------- 使用方法: CAddCADFrameMenumenu; menu.AddMenu(我的菜单); menu.AddSubMenu(弹出对话框,_DLG); menu.AddSubMenu(绘制线条,_DRAWL); menu.AddSubMenu(*Line);//加*号表示是二级子菜单 menu.AddSubMenu($CIRCLE,_CIRCLE);//加$号表示二级子菜单下的菜单条 menu.AddSubSeparator(); menu.AddSubMenu($PLINE,_PLINE);//加$号表示二级子菜单下的菜单条 menu.AddSeparator(); menu.AddSubMenu(选择文件夹,_SELFOLDER); menu.AddSubMenu(*TEXT);//加*号表示是二级子菜单 menu.AddSubMenu($MTEXT,_TEXT);//加$号表示二级子菜单下的菜单条 menu.CreateMenus(); -------------------------------------------------------------- ---------------------------------------------------------------------------- */ #if !defined(AFX_ADDCADFRAMEMENU_H__153847F5_DE2C_4B6E_83E8_5BE9FE780CD8__INCLUDED_) #define AFX_ADDCADFRAMEMENU_H__153847F5_DE2C_4B6E_83E8_5BE9FE780CD8__INCLUDED_ #if _MSC_VER1000 #pragma once #endif // _MSC_VER1000 #include afxtempl.h #include acad15.h typedef struct CADMenu ... { char name ; char order ; } CADMenu; class CAddCADFrameMenu ... { public : CAddCADFrameMenu(); virtual ~ CAddCADFrameMenu(); // 创建菜单 void CreateMenus(); // 添加菜单 void AddMenu( const char * menuName); // 添加子菜单,menuName-菜单名--为分隔符,command要加空格 void AddSubMenu( const char * menuName, const char * command = NULL); // 添加分隔符 void AddSeparator(); // 添加二级子菜单分隔符 void AddSubSeparator(); static bool IsMenuExist(IAcadPopupMenu * pMnu, long index, const char * mnuname,IAcadPopupMenus * mnus); // 菜单是否存在,避免二次加载addbyzhengzhilin static bool GetAcadApplication(IAcadApplication * pAcadApp); static bool GetAcadMenuGroup(IAcadMenuGroup ** pVal,LPCTSTRmenuname); static bool GetLastMenuFromMenubar(CString sMenu); static void ClearMenu(IAcadPopupMenus * mnus,LPCTSTRmenuname); static bool GetAcadApplication(LPDISPATCH * pVal); static bool GetAcadMenuGroup(IAcadMenuGroup ** pVal); static void CleanUpMenus(); // 创建了Menu一定要调用这个函数 private : class CCADMenuArray: public CArray CADMenu * ,CADMenu * ... { public : int AddMenu(CADMenu menu); int AddMenu( const char * menuName, const char * command); ~ CCADMenuArray(); } ; CArray CCADMenuArray * ,CCADMenuArray * m_menus; int m_menuCount; // 菜单个数 CStringArraym_TopMenuNames; // 菜单名 } ; #endif // !defined(AFX_ADDCADFRAMEMENU_H__153847F5_DE2C_4B6E_83E8_5BE9FE780CD8__INCLUDED_) AddCADFrameMenu.cpp文件如下: /**/ /* ------------------------------------------------------------------------- 作者:RackyYe 该类封装了在AuToCAD上添加菜单及子菜单的方法,使用COM接口实现 大家可以任意修改,添加新功能,希望大家能多交流 Email:yeguixi@126.com -------------------------------------------------------------- */ #include stdafx.h #include resource.h #include AddCADFrameMenu.h #include acad15_i.c #ifdef_DEBUG #undef THIS_FILE static char THIS_FILE ; } } int CAddCADFrameMenu::CCADMenuArray::AddMenu(CADMenu menu) ... { CADMenu * pMenu = new CADMenu; sprintf(pMenu - name,menu.name); sprintf(pMenu - order,menu.order); return Add(pMenu); } int CAddCADFrameMenu::CCADMenuArray::AddMenu( const char * menuName, const char * command) ... { if ( sizeof (menuName) 63 ) ... { #ifdef_DEBUG acutPrintf( menuName'%s'长度超出范围 ,menuName); #endif return - 99 ; } if ( sizeof (command) 63 ) ... { #ifdef_DEBUG acutPrintf( command'%s'长度超出范围 ,command); #endif return - 99 ; } CADMenu * pMenu = new CADMenu; sprintf(pMenu - name,menuName); if (command != NULL) sprintf(pMenu - order,command); return Add(pMenu); } CAddCADFrameMenu::CCADMenuArray:: ~ CCADMenuArray() ... { for ( int i = 0 ;i m_nSize;i ++ ) ... { if (GetAt(i) != NULL) ... { deleteGetAt(i); } } } void CAddCADFrameMenu::AddSubMenu( const char * menuName, const char * command) ... { RXASSERT(menuName != NULL); if (m_menuCount == 0 ) ... { #ifdef_DEBUG acutPrintf( 添加子菜单%s前没有调用AddMenu添加一个菜单条目!无法添加子菜单 ,menuName); #endif return ; } m_menus - AddMenu(menuName,command); } void CAddCADFrameMenu::AddSeparator() ... { m_menus - AddMenu( -- , ); } void CAddCADFrameMenu::AddSubSeparator() ... { m_menus - AddMenu( $-- , ); } void CAddCADFrameMenu::AddMenu( const char * menuName) ... { m_TopMenuNames.Add(menuName); CCADMenuArray * pArr = new CCADMenuArray; m_menuCount = m_menus.Add(pArr) + 1 ; } bool CAddCADFrameMenu::GetAcadApplication(LPDISPATCH * pVal) ... { LPDISPATCHpDispatch = acedGetAcadWinApp() - GetIDispatch(TRUE); if (pDispatch == NULL) return false ; * pVal = pDispatch; return true ; } bool CAddCADFrameMenu::GetAcadApplication(IAcadApplication * pAcadApp) ... { LPDISPATCHpDisp = NULL; if ( ! GetAcadApplication( pDisp)) return false ; HRESULThr = S_OK; hr = pDisp - QueryInterface(IID_IAcadApplication,(LPVOID * ) pAcadApp); if (FAILED(hr)) return false ; return true ; } bool CAddCADFrameMenu::GetLastMenuFromMenubar(CString sMenu) ... { IAcadApplication * pAcad = NULL; if ( ! GetAcadApplication(pAcad)) return false ; IAcadMenuBar * pMenuBar = NULL; IAcadPopupMenu * pPopUpMenu = NULL; pAcad - get_MenuBar( pMenuBar); pAcad - Release(); long numberOfMenus; pMenuBar - get_Count( numberOfMenus); // 得到菜单栏上面的最后一个菜单 BSTRname; VARIANTvIndex; vIndex.vt = VT_I4; vIndex.lVal = numberOfMenus - 1 ; pMenuBar - Item(vIndex, pPopUpMenu); pMenuBar - Release(); pPopUpMenu - get_NameNoMnemonic( name); pPopUpMenu - Release(); sMenu.Format( %S ,name); // debug大写,用于转化LPWSTR类型字符串 SysFreeString(name); return true ; } bool CAddCADFrameMenu::GetAcadMenuGroup(IAcadMenuGroup ** pVal,LPCTSTRmenuname) ... { IAcadApplication * acadApp = NULL; HRESULThr = S_OK; if ( ! GetAcadApplication(acadApp)) return false ; LPDISPATCHpTempDisp = NULL; IAcadMenuGroups * mnuGrps = NULL; long cnt = 0 ,cntmnu = 0 ; // 得到菜单组集 hr = acadApp - get_MenuGroups( mnuGrps); if (FAILED(hr)) ... { acadApp - Release(); return false ; } acadApp - Release(); mnuGrps - get_Count( cnt); // 得到菜单组 IAcadMenuGroup * mnuGrp = NULL; IAcadPopupMenus * mnus = NULL; IAcadPopupMenu * pPopUpMenu = NULL; VARIANTvtName,vtMenu; vtName.vt = VT_I4; vtMenu.vt = VT_I4; BSTRmnuName; bool found = false ; for ( long i = 0 ;i cnt;i ++ ) ... { vtName.lVal = i; hr = mnuGrps - Item(vtName, mnuGrp); if (FAILED(hr)) ... { return false ; } mnuGrp - get_Menus( mnus); mnus - get_Count( cntmnu); for ( long j = 0 ;j cntmnu;j ++ ) ... { vtMenu.lVal = j; hr = mnus - Item(vtMenu, pPopUpMenu); if (FAILED(hr)) continue ; pPopUpMenu - get_Name( mnuName); pPopUpMenu - Release(); CStringsMenuName(mnuName); SysFreeString(mnuName); sMenuName.Replace( , ); // debug if (sMenuName.CompareNoCase(menuname) == 0 ) ... { found = true ; * pVal = mnuGrp; break ; } } mnus - Release(); if (found) ... { break ; } else ... { mnuGrp - Release(); } } mnuGrps - Release(); return found; } bool CAddCADFrameMenu::GetAcadMenuGroup(IAcadMenuGroup ** pVal) ... { IAcadApplication * acadApp = NULL; HRESULThr = S_OK; if ( ! GetAcadApplication(acadApp)) return false ; LPDISPATCHpTempDisp = NULL; IAcadMenuGroups * mnuGrps = NULL; long cnt = 0 ; // 得到菜单组集 hr = acadApp - get_MenuGroups( mnuGrps); if (FAILED(hr)) ... { acadApp - Release(); return false ; } acadApp - Release(); mnuGrps - get_Count( cnt); // 得到菜单组 IAcadMenuGroup * mnuGrp = NULL; VARIANTvtName; vtName.vt = VT_I4; BSTRgrpName; bool found = false ; for ( long i = 0 ;i cnt;i ++ ) ... { vtName.lVal = i; hr = mnuGrps - Item(vtName, mnuGrp); if (FAILED(hr)) continue ; hr = mnuGrp - get_Name( grpName); CStringcgrpName(grpName); SysFreeString(grpName); if (cgrpName.CompareNoCase( Acad ) == 0 ) ... { found = true ; * pVal = mnuGrp; break ; } else ... { mnuGrp - Release(); } } mnuGrps - Release(); return found; } void CAddCADFrameMenu::CreateMenus() ... { CMDIFrameWnd * pMainFrame = acedGetAcadFrame(); pMainFrame - LockWindowUpdate(); // 得到菜单栏上面的最后一个菜单 CStringsName; if ( ! GetLastMenuFromMenubar(sName)) return ; sName.Replace( , ); // debug IAcadMenuGroup * mnuGrp = NULL; if ( ! GetAcadMenuGroup( mnuGrp,sName)) return ; // 得到所有菜单组 IAcadPopupMenus * mnus = NULL; IAcadPopupMenu * mnu = NULL; IAcadPopupMenuItem * mnuitem = NULL; HRESULThr = S_OK; hr = mnuGrp - get_Menus( mnus); long cnt = 0l ; hr = mnus - get_Count( cnt); int i = 0 ; int j = 0 ; int k = 0 ; VARIANTindex; VariantInit( index); V_VT( index) = VT_I4; CArray IAcadPopupMenu * ,IAcadPopupMenu * MnuAdrs; long lIndex = 0 ; WCHARMenuName ; for (i = 0 ;i m_menuCount;i ++ ) ... { CStringtmpMenu = m_TopMenuNames ; tmpMenu.Replace( , ); if (IsMenuExist(mnu,lIndex,tmpMenu,mnus)) // 处理二次加载 ... { V_I4( index) = lIndex; } else ... { MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,m_TopMenuNames , - 1 ,MenuName, 256 ); mnus - Add(MenuName, mnu); V_I4( index) = cnt ++ ; } MnuAdrs.Add(mnu); mnu - InsertInMenuBar(index); } IAcadPopupMenu * MenuItem = NULL; int subMenuNum = 0 ; CCADMenuArray * Menus; WCHARszSubMenu ; WCHARszSubMenuMacro ; CStringMenusName; CStringMenusorder; for (j = 0 ;j m_menuCount;j ++ ) ... { Menus = m_menus.GetAt(j); subMenuNum = Menus - GetSize(); for (k = 0 ;k subMenuNum;k ++ ) ... { mnu = MnuAdrs.GetAt(j); if ( ! strcmp( -- ,Menus - GetAt(k) - name)) ... { V_I4( index) = k; mnu - AddSeparator(index, mnuitem); } else ... { V_I4( index) = k; MenusName = Menus - GetAt(k) - name; Menusorder = Menus - GetAt(k) - order; MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,MenusName, - 1 ,szSubMenu, 256 ); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,Menusorder, - 1 ,szSubMenuMacro, 256 ); if (strcspn(Menus - GetAt(k) - name, * ) (size_t)MenusName.GetLength()) ... { MenusName.TrimLeft( ' * ' ); MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,MenusName, - 1 ,szSubMenu, 256 ); hr = mnu - AddSubMenu(index,szSubMenu, MenuItem); } else if (strcspn(Menus - GetAt(k) - name, $ ) (size_t)MenusName.GetLength()) ... { MenusName.TrimLeft( ' $ ' ); if (MenusName.Compare( -- ) == 0 ) // 添加子菜单的分隔符 ... { hr = MenuItem - AddSeparator(index, mnuitem); } else ... { MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,MenusName, - 1 ,szSubMenu, 256 ); hr = MenuItem - AddMenuItem(index,szSubMenu,szSubMenuMacro, mnuitem); } } else ... { hr = mnu - AddMenuItem(index,szSubMenu,szSubMenuMacro, mnuitem); } } } } for (i = 0 ;i MnuAdrs.GetSize();i ++ ) ... { MnuAdrs - Release(); } mnuitem - Release(); mnus - Release(); mnuGrp - Release(); pMainFrame - UnlockWindowUpdate(); stcMyTopMenuNames.Copy(m_TopMenuNames); // 将顶级菜单名存入静态数组中,卸载时使用 return ; } bool CAddCADFrameMenu::IsMenuExist(IAcadPopupMenu * pMnu, long index, const char * mnuname,IAcadPopupMenus * mnus) ... { ASSERT(mnus != NULL); long cnt = 0l ; HRESULThr = mnus - get_Count( cnt); bool found = false ; int curMenuIndex =- 1 ; BSTRtempName; #ifdef_DEBUG acutPrintf( IsMenuExistcnt=%ld ,cnt); #endif // IAcadPopupMenu * toolsMenu = NULL; for ( long i = 0 ;i cnt;i ++ ) ... { VARIANTvtName; VariantInit( vtName); V_VT( vtName) = VT_I4; V_I4( vtName) = i; hr = mnus - Item(vtName, toolsMenu); if (FAILED(hr)) return false ; hr = toolsMenu - get_NameNoMnemonic( tempName); CStringmnuName(tempName); #ifdef_DEBUG acutPrintf( %d,%s ,i,mnuName); #endif if (mnuName.Compare(mnuname) == 0 ) ... { index = i; pMnu = toolsMenu; return true ; } } pMnu = NULL; return false ; } void CAddCADFrameMenu::CleanUpMenus() ... { IAcadMenuGroup * mnuGrp = NULL; for ( int i = 0 ;i stcMyTopMenuNames.GetSize();i ++ ) ... { CStringsMenu = stcMyTopMenuNames.GetAt(i); sMenu.Replace( , ); if ( ! GetAcadMenuGroup( mnuGrp,sMenu)) ... { #ifdef_DEBUG acutPrintf( 没有找到%s所属的菜单组,无法卸载。 ,sMenu); #endif // mnuGrp-Release(); continue ; } // 得到所有菜单组 IAcadPopupMenus * mnus = NULL; HRESULThr = S_OK; hr = mnuGrp - get_Menus( mnus); ClearMenu(mnus,sMenu); mnus - Release(); mnuGrp - Release(); } stcMyTopMenuNames.RemoveAll(); } void CAddCADFrameMenu::ClearMenu(IAcadPopupMenus * mnus,LPCTSTRmenuname) ... { long cnt = 0l ; HRESULThr = mnus - get_Count( cnt); // nowgetToolsmenu IAcadPopupMenu * toolsMenu = NULL; BSTRtempName; VARIANTvtName; VariantInit( vtName); bool found = false ; for ( long i = 0 ;i cnt;i ++ ) ... { vtName.vt = VT_I4; vtName.lVal = i; hr = mnus - Item(vtName, toolsMenu); if (FAILED(hr)) return ; hr = toolsMenu - get_NameNoMnemonic( tempName); CStringmnuName(tempName); SysFreeString(tempName); if (mnuName.CompareNoCase(menuname) == 0 ) ... { found = true ; break ; } } if ( ! found) ... { acutPrintf( 没有找到菜单:%s ,menuname); return ; } hr = toolsMenu - get_Count( cnt); VARIANTvIndex; vIndex.vt = VT_I4; vIndex.lVal = cnt; IAcadPopupMenuItem * cmd1 = NULL; while (cnt -- ) ... { vIndex.lVal = cnt; hr = toolsMenu - Item(vIndex, cmd1); hr = cmd1 - Delete(); cmd1 - Release(); } toolsMenu - RemoveFromMenuBar(); toolsMenu - Release(); mnus - RemoveMenuFromMenuBar(vtName); return ; }
个人分类: 生活点滴|6030 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-3 14:32

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部