首页 文章 精选 留言 我的

精选列表

搜索[ThingsVis嵌入],共8603篇文章
优秀的个人博客,低调大师

(C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令

(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢~)接上一节:(C#)Windows Shell 外壳编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单上一节说到如何弹出 IShellFolder 的上下文菜单,也就是 IContextMenu。有时候我们需要在这个菜单上面,加入一些属于自己的菜单项。举个例子,你打开资源管理器,查看左边目录树的右键菜单,会发现顶层多了一个折叠/展开的菜单项。好,我们也动手来加入这个菜单项。修改例子3,我们找到 QueryContextMenu 处,这时候提供了一个菜单句柄: //提供一个弹出式菜单的句柄 IntPtrcontextMenu=API.CreatePopupMenu(); iContextMenu.QueryContextMenu(contextMenu,0, API.CMD_FIRST,API.CMD_LAST,CMF.NORMAL|CMF.EXPLORE); 然后增加以下代码: /////////////////////////增加一个自定义菜单stringtopInvoke=Tree1.SelectedNode.IsExpanded?"折叠(&A)":"展开(&A)";MFTextraFlag=(Tree1.SelectedNode.Nodes.Count>0)?0:MFT.GRAYED;API.InsertMenu(contextMenu,0,MFT.BYPOSITION|extraFlag,(int)(API.CMD_LAST+1),topInvoke);//增加分隔线API.InsertMenu(contextMenu,1,MFT.BYPOSITION|MFT.SEPARATOR,0,"-");//把第一项菜单设置为默认菜单,也就是加粗API.SetMenuDefaultItem(contextMenu,0,true);///////////////////////// 这里我们用到了 InsertMenu 这个 API: [DllImport("user32", SetLastError=true, CharSet=CharSet.Auto)] publicstaticexternboolInsertMenu( IntPtrhmenu, uintuPosition, MFTuflags, uintuIDNewItem, [MarshalAs(UnmanagedType.LPTStr)] stringlpNewItem); 参数2表示增加菜单项的位置,从0开始。参数3表示flag,这里提供了菜单状态,以及位置的计算方法,它是一个枚举: public enum MFT MF_BYPOSITION 表示位置的计算方法是使用索引项,第一个菜单就是0,第二个菜单就是1,如此类推...参数4表示命令值。我们可以根据这个命令值来执行对应的功能。然后就可以弹出菜单了: //弹出菜单 uintcmd=API.TrackPopupMenuEx(contextMenu,TPM.RETURNCMD, MousePosition.X,MousePosition.Y,this.Handle,IntPtr.Zero); 可以看到弹出菜单的效果。当然,我们还必须做点事情来响应这个菜单的执行: //获取命令序号,执行菜单命令 if(cmd>=API.CMD_FIRST) {//自定义菜单命令if(cmd==API.CMD_LAST+1){if(Tree1.SelectedNode.IsExpanded)Tree1.SelectedNode.Collapse();elseTree1.SelectedNode.Expand();}} 如图:执行菜单命令能不能不弹出菜单直接调用菜单项相应的命令?答案是肯定的。 大家还记得怎么显示一个文件或文件夹的属性对话框吗? Yes,用ShellExecuteEx并指定SHELLEXECUTEINFO的lpVerb域为properties就可,但是这种方法只能查看一个文件的属性,怎么同时查看多个的? 要知道ShellExecuteEx查看文件属性最终也是靠IContextMenu帮忙的,所以答案还是在IContextMenu上,我们只要在调用GetUIObjectOf时把想查看的文件或文件件的PIDL做为参数传进去,然后直接调用InvokeCommand方法就OK啦。 当然,我们做的例子,还是弹出一个对象的属性,靠你自己修改了。 我们必须先得到 IContextMenu 接口: //得到IContextMenu接口 IntPtriContextMenuPtr=IntPtr.Zero; iContextMenuPtr=IParent.GetUIObjectOf(IntPtr.Zero,(uint)pidls.Length, pidls,refGuids.IID_IContextMenu,outiContextMenuPtr); IContextMenuiContextMenu=(IContextMenu)Marshal.GetObjectForIUnknown(iContextMenuPtr); 但我们不弹出这个菜单,仅仅是调用 InvokeCommand 来执行命令而已: //直接执行命令 CMINVOKECOMMANDINFOEXinvoke=newCMINVOKECOMMANDINFOEX(); invoke.cbSize=Marshal.SizeOf(typeof(CMINVOKECOMMANDINFOEX)); invoke.lpVerb=Marshal.StringToHGlobalAnsi("properties"); invoke.lpDirectory=string.Empty; invoke.fMask=0; invoke.nShow=1; iContextMenu.InvokeCommand(refinvoke); 关于verb的更多信息请参考MSDN。我这里做的是执行“属性”,如果你要执行其他命令,或者按照索引来执行,也是可以的。这里不做深入研究。源代码:/Files/lemony/WinShell4.rar我正在考虑下一节是讲图标,还是继续讲iContextMenu。大家也知道,某个文件的右键菜单里面,往往会有几个 winrar 的选项,还带着可爱的图标。很有可能下一节就讲述如何在C#中也实现这样的效果哦。希望大家多多支持^_^。

优秀的个人博客,低调大师

嵌入式:微软将推出第二代AI处理器 应对海量数据处理

物联网科技公司热衷于让手机和增强现实设备具备AI功能。但是,这些公司面临一个很大的挑战:如何管理海量数据,以使AI功能在这些设备上成为可能,同时又不至于使设备运行速度变得太慢或者在几分钟内耗尽电池。 据外媒报道,微软最近宣称,该公司已经找到了应对方案。将发布第二代HoloLens全息处理器,即一款新的AI处理器。这种AI处理器将使HoloLens能够实时分析看到的和听到的内容,而不必将数据传输到云端来处理。这款新的处理器是微软全息处理器(HolographicProcessingUnit)一个新版本,已经于周一在夏威夷檀香山的一个新闻发布会上推出。 目前,这款芯片还在开发中,它将出现在微软下一个版本的HoloLens中。微软没有提供该版本HoloLens的具体发布日期。 自制芯片越来越流行,因为企业认为现成的芯片不能充分发挥AI的潜力。一名知情人士在今年5月份透露,苹果正在测试一款iPhone原型,该原型中包含一个旨在处理AI任务的芯片。谷歌正在开发自己的新版AI芯片。同时,谷歌已经研制出自己的定制化芯片——TensorProcessingUnits(TPU),并已经交付给客户使用。 多年来,人们一直使用英特尔和其他公司制造的芯片。但是,AI的快速发展使一些传统的芯片制造商在十多年来首次面临着真正的挑战。 微软近年来一直在研发自己的芯片。微软为XboxKinect开发了一款运动跟踪处理器。最近,为了在云服务领域挑战谷歌和亚马逊,微软采用了称为现场可编程门阵列(fieldprogrammablegatearray,FPGA)的定制芯片。微软还从英特尔的子公司Altera购买芯片,并将其改造,以使它具备独有的功能。 接下来,微软将让其云客户使用这些芯片来加速执行自己的AI任务,该服务将在明年推出。购买了该服务的客户可以使用它来执行图像识别任务,或使用机器学习算法来预测客户购买模式,等等。自主研制芯片是昂贵的。但微软表示,公司没有任何选择,因为技术变化如此之快,跟不上步伐就很容易被淘汰。 本文由朗锐智科编辑整理(www.lrist.com),如有侵权请联系本站。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册