精华内容
下载资源
问答
  • windows快速文件查找工具,利用此工具可快速定位查找文件、文件夹。比windows自带的查找功能不知道快了多少。
  • 摘要:Delphi源码,字符处理,TReplaceDialog,查找替换 Delphi编程,利用TReplaceDialog组件属性实现字符串的查找替换,这在Windows中看似简单实用的功能,真正到自己去编写实现的的时候,觉得还真不是那么顺利,请看...
  • 最近公司的一个项目要在windows下实现MD5的函数功能,所以查阅了一些资料,实现了这个功能。因为其中一些代码源自网上,所以我将完整实现发布,希望对有需要的人有帮助 #include "windows.h" #include #include ...

    最近公司的一个项目要在windows下实现MD5的函数功能,所以查阅了一些资料,现在我将完整实现发布,希望对有需要的人有帮助

    实现就是这样子,大家如有需要直接用就可以,没怎么有必要去研究那几个Windows API,具体就不再细说了,有问题欢迎提问。


    #include "windows.h"
    #include <tchar.h>  
    #include <stdio.h>
    
    /*调用Windows API 获得 MD5 码 */
    void GetMd5(LPCWSTR FileDirectory,char *pMD5 )  
    {
    	HANDLE hFile=CreateFile(FileDirectory,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
    	if (hFile==INVALID_HANDLE_VALUE)                                        //如果CreateFile调用失败
    	{
    		printf("CreateFile go wrong \n ");               //提示CreateFile调用失败,并输出错误号。visual studio中可在“工具”>“错误查找”中利用错误号得到错误信息。
    		CloseHandle(hFile);
    	}
    	HCRYPTPROV hProv=NULL;
    	if(CryptAcquireContext(&hProv,NULL,NULL,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT)==FALSE)       //获得CSP中一个密钥容器的句柄
    	{
    		printf("CryptAcquireContext go wrong \n ");
    	}
    	HCRYPTPROV hHash=NULL;
    	if(CryptCreateHash(hProv,CALG_MD5,0,0,&hHash)==FALSE)     //初始化对数据流的hash,创建并返回一个与CSP的hash对象相关的句柄。这个句柄接下来将被CryptHashData调用。
    	{
    		printf("CryptCreateHash go wrong \n ");
    	}
    	DWORD dwFileSize=GetFileSize(hFile,0);    //获取文件的大小
    	if (dwFileSize==0xFFFFFFFF)               //如果获取文件大小失败
    	{
    		printf("GetFileSize go wrong \n ");
    	}
    	byte* lpReadFileBuffer=new byte[dwFileSize];
    	DWORD lpReadNumberOfBytes;
    	if (ReadFile(hFile,lpReadFileBuffer,dwFileSize,&lpReadNumberOfBytes,NULL)==0)        //读取文件
    	{
    		printf("ReadFile go wrong \n ");
    	}
    	if(CryptHashData(hHash,lpReadFileBuffer,lpReadNumberOfBytes,0)==FALSE)      //hash文件
    	{
    		printf("CryptHashData go wrong \n ");
    	}
    
    
    	delete[] lpReadFileBuffer;
    	CloseHandle(hFile);          //关闭文件句柄
    	BYTE *pbHash;
    	DWORD dwHashLen=sizeof(DWORD);
    
    
    	if (CryptGetHashParam(hHash,HP_HASHVAL,NULL,&dwHashLen,0))      //我也不知道为什么要先这样调用CryptGetHashParam,这块是参照的msdn       
    	{
    	}
    	else
    	{
    		printf("get length wrong\n");
    	}
    	if(pbHash=(byte*)malloc(dwHashLen))
    	{}
    	else
    	{
    		printf("allocation failed\n");
    	}
    	if(CryptGetHashParam(hHash,HP_HASHVAL,pbHash,&dwHashLen,0))            //获得md5值
    	{
    		DWORD i;
    		for( i=0;i<dwHashLen;i++)         //输出md5值
    		{
    			//printf("%02x",pbHash[i]);
    			sprintf(pMD5+i*2,"%02x",pbHash[i]);
    		}
    	//	printf("\n");
    	}
    
    	//善后工作
    	if(CryptDestroyHash(hHash)==FALSE)          //销毁hash对象
    	{
    		printf("CryptReleaseContext go wrong: [%d] \n");
    	}
    	if(CryptReleaseContext(hProv,0)==FALSE)
    	{
    		printf("CryptReleaseContext go wrong: [%d] \n");
    	}
    }
    /*将char 转换成 WCHAR并调用GetMd5  */  
    void C2W_GetMD5(char *FilePath,char *pMD5)  //因为在Windows API中的WCHAR是宽字符(16位)的,而C语言中的是短字符(8位)的所以要进行转换,具体区别请查阅其他资料
    {
    	int    textlen ;
    	wchar_t * wDest;
    	//MultiByteToWideChar() 函数是将短字符转成宽字符的关键,如要细究请百度。
    	textlen = MultiByteToWideChar(CP_ACP, 0, FilePath,-1,NULL,0 ); 
    	wDest = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t)); 
    	if (wDest == NULL)
    	{
    		return ;
    	}
    
    
    	memset(wDest,0,(textlen+1)*sizeof(wchar_t)); 
    	MultiByteToWideChar(CP_ACP, 0,FilePath,-1,(LPWSTR)wDest,textlen); 
    	GetMd5(wDest,pMD5);
    	free(wDest);
    
    
    }
    
    //main函数,实现例子
    void main()
    {
    	char *hello1 = "C:\\Users\\Chen\\Desktop\\world.txt";  //文件的绝对路径
    	char hello[33]; //转换后的MD5是32位的
    	C2W_GetMD5(hello1,hello);
    	printf("%s\n",hello); //打印出该文件的MD5
    
    }



    展开全文
  • 利用JAVA实现WINDOWS中的dir/s查找

    千次阅读 2007-10-12 16:39:00
    import java.io.File; import java.util.regex.Matcher; import java.util.regex.MatchResult; import java.util.regex.Pattern;...import java.util.regex.PatternSyntaxException;... *利用JAVA实现WINDOWS中的dir
     
    import
     java.io.File; 
    
    import java.util.regex.Matcher;
    import java.util.regex.MatchResult;
    import java.util.regex.Pattern;
    import java.util.regex.PatternSyntaxException;
    /**
      * 利用 JAVA 实现 WINDOWS 中的 dir/s 查找
      * 这里采用正则达式解决了通配符的问题,但是有一点就是不能够通过命令行传参数
      * 因为如果你通过命令行传数, JAVA 会自动把你的带通过的文件名,换成当前目录匹配的文件名,
      * 如你在命令行以这样传入 :java FileSearch a*, 如果当前目录下有 a.jpg,a1.jpg ,那么 a*
      * 会被自动换成 a.jpg, a1.jpg ,如果在当前目录下有目录,并且子目录中有 a2.jpg ,那这个就查
      * 不出来。所有现在只能通过其它的方式调用才行,而不能够通过命令行传参数
      * 这个可能需要拦截器才能够解决这个问题,不过,这个我不会,如果会的并且有兴趣,可以试试
      * 作者: blog.csdn.net/fenglibing
      * 注:可以直接运行该程序 , 不过,你最好把该程序拷到你需要的根目录下执行。
      */
    publicclass FileSearch {
        String fileName ;
        String currentPath ;
        boolean regStr ;
        Pattern pattern ;
        public FileSearch(String fileName) {  
            /********************* 用正则表达式解决通配符 ***************************/
            if (fileName.indexOf( "*" )!=-1 || fileName.indexOf( "?" )!=-1) {
            regStr = true ;
                if (fileName.indexOf( "?" )!=-1) {
                    fileName=fileName.replace( "?" , ".{0,1}" );
                }
            /********** 因为正则表式中的 '*' DOS 中的功能差不多,所以不换 ***********/
                pattern =Pattern.compile(fileName);
            }       
            this . fileName =fileName;
            File f= new File( "" ); // 从当前路径开始查找
            currentPath =f.getAbsolutePath();
            doSearch( currentPath );
        } 
     
        privateboolean doSearch(String path) {
            if (path== null )
                returnfalse ;
            File F = new File(path);
            File[] allFile = F.listFiles(); // 取得當前目錄下面的所有文件,將其放在文件數組中
            int totalNum = allFile. length ; // 取得當前文件夾中有多少文件(包括文件夾)
            int currentFile = 0;
            for (currentFile = 0; currentFile < totalNum; currentFile++) {
                if (!allFile[currentFile].isDirectory()) {
                    // 如果是文件是采用處理文件的方式
                    if ( regStr == true ) {
                        Matcher matcher= pattern .matcher(allFile[currentFile].getName());
                        boolean result=matcher.find();
                        if (result) {
                            System. out .println(allFile[currentFile].getAbsolutePath());
                        }
                    }
                    elseif (allFile[currentFile].getName().equals( fileName )) {
                        System. out .println(allFile[currentFile].getAbsolutePath());
                    }
                }
                // 如果是文件夾就采用遞歸處理
                else {
                    doSearch(allFile[currentFile].getPath());
                }
            }
            returntrue ;
        }
        publicstaticvoid main(String[] args) {
            FileSearch fileSearch = new FileSearch( "t?.jpg" );
        }
    }

    本文出自:冯立彬的博客




    展开全文
  • 遍历指定目录,查找到包含所需文件名称的文件,并获取所有满足条件的文件路径。 测试程序如下: package mytest; import java.io.File; import java.io.IOException; import java.util.ArrayList; import...

    今天突然想复习以下File API的相关用法,发现了不少之前没注意到的问题。遂记录如下:

    要求:

    遍历指定目录,查找到包含所需文件名称的文件,并获取所有满足条件的文件路径。

    测试程序如下:

    package mytest;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class FileTest
    {
    	//main方法,调试使用。
    	public static void main(String[] args)
    	{
    		File file = new File("c:/");
    		List<String> list = new ArrayList<String>();
    		String fileName = "font";
    		scanFile(file, fileName, list);
    		if (list.size() == 0)
    		{
    			System.out.println("没有找到文件。");
    		} else
    		{
    			for(String s : list)
    			{
    				System.out.println("找到文件" + s);
    			}
    			System.out.println("共有文件" + list.size() + "个");
    		}
    		
    		
    	}
    	
    	//thefile为需要扫描的路径;fileName为需要获取的文件名,支持模糊查找;list为获取到的符合条件的File路径.
    	public static void scanFile(File thefile, String fileName, List<String> list)
    	{
    		//这一句也是调试用的,可以直接将thefile传入下面的语句。
    		File file = thefile;
    		File[] files = file.listFiles();
    		//正常情况下如果文件夹为空,file.listFiles();得到的值应该是files = [];这样的话程序是无误的,
    		//但是有时候会出现返回为Null的情况。暂时不知道是什么原因,但是我们依然可以把它当作[]来处理进行跳过。
    		//所以需要加这样一句话。将null变成File[0];
    //		if(files == null)
    //		{
    //			files = new File[0];
    //		}
    		//上面是其中一种思路,其实直接采用下面的思路即可。
    		//之前没用采用下面这种思路,是担心遇到file == null的时候递归会中断。
    		//看来还是对递归的了解不够深入。
    		if(files != null)
    		{
    		for(File f : files)
    		{
    			if(f.isFile())
    			{
    				//这一段是测试在console里面打印输出所有扫描到的文件,仅作调试使用。
    				try
    				{
    					System.out.println("查找中:" + f.getCanonicalPath());
    				} catch (IOException e1)
    				{
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    				
    				//若有需要,可以同时传入参数,限制文件的名字。或者用FileFilter也行。
    //				if(f.getName().substring(f.getName().length()-3).equals("xml"))
    				
    				//使用str1.indexOf(str2),只要文件名中包含str2就可以了。
    				//用于模糊查找。
    				if(f.getName().indexOf(fileName) >= 0)
    				{
    					try
    					{
    						list.add(f.getCanonicalPath());
    					} catch (IOException e)
    					{
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    				}
    			} else if(f.isDirectory())
    			{
    				scanFile(f, fileName, list);
    			}
    		}
    		}
    	}
    }
    

    遇到的问题归结如下:     

    1.刚开始是希望通过return 返回获取到的List<String>。但是因为整个方法是递归调用,若在for()语句外面添加return 的话,则在第一次递归时,该方法就会被return。而且确实想不到怎样使用return返回需要的结果。所以直接在参数列表里面传入了我们需要返回的值。利用对象的引用关系,来达到所需的目的。

    2.在遍历文件使用.listFiles()方法时遇到大坑。在自己组织的文件路径内程序运行正常,在系统文件范围下比如扫描整个"d:/"盘,总会出现NullPointerExceeption。单步调试后发现,某一些空文件夹.listFiles()会返回null,本以为在遇到空文件夹时.listFiles()均会返回null。单经过自己构造空文件夹的方式测试发现,并非如此。正常情况下空文件夹.listFiles()会返回一个空的数组类似于new File[0]; 经查询似乎和文件夹的访问权限有关系。不过经测试某文件夹.listFiles(); 为null 但是.canRead();为true;所以暂时不太清楚原因。不过确有其结论,所以在遍历前需要判断.listFiles()是否为null以避免出现空指针错误。同时新手恳请赐教,.listFiles(); 为null具体会是什么原因导致的呢。

    3.可以同时搭配FileFilter 或者 FileNameFileter 等过滤器来进行更多的筛选。

    总结:

            要得到返回值不一定需要用return且可能有的情况下无法使用return;注意.目录路径无误的情况下,listFiles();可能会出现null错误;

    展开全文
  • Windows 10新功能

    千次阅读 2015-08-31 19:34:03
    Windows 10 中面向开发人员的新增功能 Windows 10 及新增的开发人员工具将提供新通用 Windows 平台支持的工具、功能和体验。在 Windows 10 上安装完工具和 SDK 后,你可以随时创建新的通用 ...

    Windows 10 中面向开发人员的新增功能

    Windows 10 及新增的开发人员工具将提供新通用 Windows 平台支持的工具、功能和体验。在 Windows 10 上安装完工具和 SDK 后,你可以随时创建新的通用 Windows 应用,或了解如何使用 Windows 上的现有应用代码

    运行 Windows 10 的多台设备

    针对 Windows 10 进行生成

    凯文·盖洛提供系统的快速纲要以及直接支持新的 Windows 10 开发体验的工具更新。

    Visual Studio 2015 的屏幕截图

    通用 Windows 平台指南

    了解通用 Windows 平台如何将自适应 UI 控件用于不同的设备类型,以及它如何使用运行 Windows 10 的所有设备上必须具有的通用 API 集。

    Windows 10 设备上的 Xbox

    Windows 10 上的游戏

    了解玩家如何才能进行连接和玩游戏 - 玩家的游戏、好友和成就将在其所有 Windows 设备上保持一致。

    自适应布局
    返回页首

    适用于定制内容的多个视图

    XAML 针对定义用于共享相同代码文件的定制视图(.xaml 文件)提供了新的支持。这使你可以更加方便地创建和保留已定制为特定设备系列或方案的不同视图。如果你的应用具有不同的 UI 内容、布局或导航模型(与对应的方案截然不同),应构建多个视图。例如,对于针对移动版应用的单手使用模式进行优化的导航菜单,你可以使用 Pivot;而对于针对桌面版应用的鼠标输入进行优化的导航菜单,你可以使用 SplitView

    StateTriggers

    使用新的 VisualState.StateTriggers 功能,你可以基于窗口高度/宽度或者基于自定义触发器有条件地设置相关属性。之前,你必须在代码中处理 Window SizeChanged 事件并调用 VisualStateManager.GotoState

    Setters

    使用新的 VisualState.Setters 语法,你可以使用简化的标记定义 VisualStateManager 中的属性更改。之前,你必须使用情节提要并创建动画来应用属性更改,例如将 StackPanel 的方向从水平更改为垂直。在通用 Windows 应用中,你可以使用以下更加简单的 Setter 语法:

    <setter target="stackPanel1.Orientation" value="Vertical" />
    XAML 功能
    返回页首

    已编译的数据绑定 (x:Bind)

    在通用 Windows 应用中,你可以使用基于编译器的新绑定机制,该机制可通过 x:Bind 属性进行启用。基于编译器的绑定将在编译时严格设置类型并进行处理,这将非常快速并且会在绑定类型不匹配时提供编译时错误。因为绑定已转换为编译的应用代码,所以你现在就可以调试绑定,方法是在 Visual Studio 中逐步执行代码以诊断特定的绑定问题。你还可以使用 x:Bind 绑定到某一方法,如下所示:

    <textblock text="{x:Bind Customer.Address.ToString()}" />

    对于典型的绑定方案,你可以使用 x:Bind 替代绑定,从而获得改进的性能和可维护性。

    列表的声明性增量呈现 (x:Phase)

    在通用 Windows 应用中,新的 x:Phase 属性允许你借助 XAML(而非代码)执行列表的增量呈现或阶段性呈现。当平移带有复杂项目的较长列表时,你的应用呈现项目的速度可能不足以跟上平移的速度,致使你的用户获得了一次槽糕的体验。阶段性呈现让你可以在某一列表项目中指定个别元素的呈现优先级,以便仅该列表项目中最重要的部分才能在快速平移方案中呈现。这将为你的用户提供一次较为顺畅的平移体验。

    在 Windows 8.1 中,你可以处理 ContainerContentChanging 事件,并编写用于分阶段呈现列表项目的代码。在 UWP 应用中,你可以使用 x:Phase 属性以声明方式完成阶段性呈现。通过将 x:Phase 与已编译的绑定 x:Bind 结合使用,你可以在数据模板中为每个绑定元素轻松指定呈现优先级。在进行平移时,呈现项目所需执行的操作是基于阶段按时间进行分片,这将支持增量项目呈现。

    UI 元素的延迟加载 (x:DeferLoadingStrategy)

    在通用 Windows 应用中,新的 x:DeferLoadingStrategy 指令允许你指定要延迟加载的用户界面部分,从而改进启动性能并减少应用的内存使用量。例如,如果你的应用 UI 中存在一个仅在输入错误数据时才显示的数据验证元素,则你可以根据需要延迟该元素的加载。随后,这些元素对象将不会在加载页面时创建,它们只会在发生数据错误或者需要添加到页面的可视树时才会进行创建。

    SplitView

    借助新的 SplitView 控件,你可以轻松显示和隐藏瞬态内容。该控件通常用于“汉堡包菜单”之类的顶级导航方案,其中导航内容处于隐藏状态,可按需滑入作为用户操作的结果。

    RelativePanel

    RelativePanel 是一种新型的布局面板,该面板允许你放置子对象并使其相互对齐或与父面板对齐。例如,你可以指定某些文本应始终置于该面板的左侧,并指定按钮应始终向下对齐文本。当创建没有明确的线性模式的用户模式但却要求使用 StackPanel 或 Grid时,可使用 ReleativePanel。

    CalendarView

    借助 CalendarView 控件,可使用基于月份的自定义视图轻松查看和选择日期以及日期范围。CalendarView 支持相关功能,例如可将最小日期、最大日期和截止日期限制在可选的日期范围内。你还可以设置自定义密度栏,这些密度栏可用于显示某一天的计划的一般“细节”。

    CalendarDatePicker

    CalendarDatePicker 是一个下拉式控件,该控件已针对从CalendarView 选取某个日期进行了优化,尤其是能够显示诸如星期几或丰富的日历信息等上下文信息。它类似于 DatePicker 控件,不过 DatePicker 是针对选取一个已知日期(例如出生日期)进行优化的。

    MediaTransportControls

    借助新的 MediaTransportControls 类,可更轻松地自定义 MediaElement 的传输控件。在 Windows 8.1 中,你可以启用 MediaElement 的内置传输控件,或通过调用 MediaElement 方法创建你自己的传输控件。现在,你可以使用 MediaTransportControls 的内置功能,并且仍然可以轻松地自定义其外观,以适合你的应用。

    属性更改通知

    在通用 Windows 应用中,你可以听 DependencyObjects 上的属性更改,即便是属性没有对应的更改事件也是如此。

    通知的操作行为类似于事件,但实际上显示为回调。与事件处理程序一样,回调将提取一个发件人参数,但不会提取事件参数。而是,将仅传递属性标识符来指示是哪个属性。借助此信息,你的应用可以定义多个属性通知的单个处理程序。有关详细信息,请参阅 RegisterPropertyChangedCallback 和 UnregisterPropertyChangedCallback

    地图

    已更新为提供 3D 鸟瞰图和街景视图的 MapControl 类。这些新功能和早期的映射功能现在可用于 Universal Windows App。使用以下 API 将映射添加到你的应用:

    若要立即开始在 Universal Windows App 中使用这些 API,请从必应地图开发人员中心请求一个密钥。有关详细信息,请参阅如何验证地图应用。同样作为 Windows 10 中的新增功能,电脑用户和手机用户可以从“设置”应用下载脱机地图。当 Internet 访问不可用时,MapControl 可使用脱机地图(如果可用)来显示地图。

    输入按钮映射

    Windows.UI.Xaml.Input.KeyEventArgs 类具有新的 OriginalKey 属性以及对 Windows.System.VirtualKey 所做的相应更新,从而让你可以获取与键盘输入事件关联的原始且未映射的输入按钮。

    墨迹书写

    借助 InkCanvas 控件和基础 InkPresenter 类,现在可以更容易地使用采用 C++、C# 或 Visual Basic 的 Windows 运行时应用中功能强大的墨迹功能。

    InkCanvas 控件定义了一个用于绘制和呈现墨迹笔划的覆盖区域。此控件的功能(输入、处理和呈现)源自InkPresenterInkStrokeInkRecognizers 和 InkSynchronizer 类。

    重要提示这些类在使用 JavaScript 的 Windows 应用中不受支持。

    已更新的 XAML 功能
    返回页首

    CommandBar 和 AppBar 更新

    CommandBar 和 AppBar 控件已针对跨设备系列的 UWP 应用更新为具有一致的 API、行为和用户体验。

    适用于通用 Windows 应用的 CommandBar 控件已得到了改进,从而可提供 AppBar 功能的超集,并且针对如何将其用于你的应用提供了更大的灵活性。对于 Windows 10 上所有新的通用 Windows 应用,应使用 CommandBar。在 Windows 8.1 的 CommandBar 中,你只能使用已实现 ICommandBarElement 的控件,如 AppBarButton。在通用 Windows 应用中,除了 AppBarButtons 外,你现在还可以将自定义内容放入 CommandBar 中。

    AppBar 控件已得到了更新,以便你可以更加轻松地将使用 AppBar 的 Windows 8.1 应用移动到通用 Windows 平台。AppBar 设计为可与全屏应用一起使用并且可通过边缘手势进行调用。针对诸如 Window 应用以及 Window 10 中缺少边缘手势等问题对控件帐户进行更新。

    之前仅在 Windows Phone 上提供的隐藏 AppBar.ClosedDisplayMode 现在在所有设备系列上均受支持,从而让你可以在不同的命令提示级别之间选择。AppBar 默认情况下显示最少内容的提示,以便在将你的 Windows 8.1 应用升级到通用 Windows 应用时能为你提供一致性,不过你将无法再依赖平台中的边缘手势支持。

    新的 AppBar API: ClosingOnClosingOpeningOnOpeningTemplateSettings

    新的 CommandBar API: CommandBarOverflowPresenterStyle 和 CommandBarOverflowPresenter

    GridView 更新

    在 Windows 10 之前的版本中,默认的 GridView 布局方向在 Windows 上为水平方向,而在 Windows Phone 上为垂直方向。在 UWP 应用中,GridView 默认情况下针对所有设备系列使用垂直布局,以确保你能获得一致的默认体验。

    AreStickyGroupHeadersEnabled 属性

    当你在 ListView 或 GridView 中显示分组数据时,组标头将在列表滚动时保持可见状态。这对于大型数据集很重要,其中标头为用户正在查看的数据提供了上下文。不过,在每个组中仅具有少数几个元素时,你可能会希望标头随着项目滚动至屏幕外。你可以通过设置 ItemsStackPanel 和 ItemsWrapGrid 上的 AreStickyGroupHeadersEnabled 属性控制此行为。

    GroupHeaderContainerFromItemContainer 方法

    当你在 ItemsControl 中显示分组数据时,你可以通过调用 GroupHeaderContainerFromItemContainer 方法,获取对该组父标头的引用。例如,如果用户要在某组中删除最后一项,你可以获取对该组标头的引用,并同时删除该项和组标头。

    ChoosingGroupHeaderContainer 事件

    借助 ListViewBase 上的新 ChoosingGroupHeaderContainer 事件,你可以在 ListView 或 GridView 中设置组标头的状态。例如,你可以通过处理此事件,将组标头上的 AutomationProperties.Nameproperty 设置为借助辅助技术来标识该组。

    ChoosingItemContainer 事件

    借助 ListViewBase 上的新 ChoosingItemContainer 事件,你可以更好地控制 ListView 或 GridView 中的 UI 虚拟化。将此事件与ContainerContentChanging 事件结合使用,以保持你自己的要根据需要利用的回收容器的队列。例如,如果数据源因需筛选而被重置,你可以通过快速将一组已创建的视觉对象 (ItemContainers) 与其对应的数据匹配获取最佳性能。

    列表滚动虚拟化

    XAML ListView 和 GridView 控件中有一个新 ListViewBase.ChooseingItemContainer 事件,该事件可在数据集合中发生更改时改进控件的性能。

    系统现在将当前项与焦点状态和选择状态保留在视图中,而不是执行该列表的完全重置,这将重新播放 Entrance 动画;视口中的新项和已删除的项将流畅地闪烁。一旦未破坏的容器中的数据集合发生变化,应用即可快速将所有“旧”项与其之前的容器匹配,并跳过容器生命周期替代方法的进一步处理。仅“新”项得到处理并与回收的容器或新容器相关联。

    SelectRange 方法和 SelectedRanges 属性

    在通用 Windows 应用中,借助 ListView 和 GridView 控件,你现在可以根据项目索引的范围(而非项目对象引用)选择相应项目。这对于描述项目选项而言是一种非常有效的方式,因为无需针对每个选定项目创建项目对象。有关详细信息,请参阅ListViewBase.SelectedRangesListViewBase.SelectRange 和 ListViewBase.DeselectRange

    新 ListViewItemPresenter API

    ListView 和 GridView 使用项目表示器来提供默认的视觉对象,以供选择和着重显示。在 UWP 应用中,ListViewItemPresenter 和GridViewItemPresenter 具有新的属性,以便你可以针对列表项目进一步自定义视觉对象。新增的属性为 heckBoxBrush、CheckMode、FocusSecondaryBorderBrush、PointerOverForeground、PressedBackground 和 SelectedPressedBackground。

    SemanticZoom 更新

    对于跨所有设备系列的 UWP 应用,SemanticZoom 控件现在具有一致的行为。

    在放大视图和缩小视图之间切换的默认操作是,点击放大视图上的组标头。这与 Windows Phone 8.1 上的此类行为相同,不过在 Windows 8.1 上有所变动,因为其中使用了收缩手势进行缩放。若要使用收缩手势更改视图,应在 SemanticZoom 的内部 ScrollViewer 上设置 ScrollViewer.ZoomMode="Enabled"。

    对于通用 Windows 应用,缩小视图将替代放大视图,并且前者与所替换的视图的大小相同。这与 Windows 8.1 上的此类行为相同,不过在 Windows Phone 8.1 上有所变动,因为其中缩小视图会占用整个屏幕,并且会在其他所有内容的顶部呈现。

    DatePicker 和 TimePicker 更新

    对于跨所有设备系列的通用 Windows 应用,DatePicker 和 TimePicker 控件现在具有一个一致的实现。此外,它们在 Windows 10 中有了新的外观。弹出部分现在可在所有设备上使用 DatePickerFlyout 和 TimePickerFlyout 控件。这与 Windows Phone 8.1 上的此类行为相同,不过在 Windows 8.1 上有所变动,因为其中可使用 ComboBox 控件。通过使用浮出控件,你可以更轻松地创建自定义的日期和时间选取器。

    新的 ScrollViewer API

    ScrollViewer 具有新的 DirectManipulationStarted 和 DirectManipulationCompleted 事件,可在触摸平移开始和停止时通知应用。你可以处理这些事件,以通过这些用户操作调整 UI。

    MenuFlyout 更新

    通用 Windows 应用提供了可更轻松地构建更好的上下文菜单的全新 API。新 MenuFlyout.ShowAt 方法可用于指定浮出控件相对于其他元素的出现位置。(并且,你的 MenuFlyout 甚至可以覆盖应用窗口边界。) 若要创建层叠菜单,请使用新的 MenuFlyoutSubItem类。

    ContentPresenter、Grid 和 StackPanel 的新边框属性

    常用容器控件具有新的边框属性,可用于在其周围绘制边框,而无需向你的 XAML 添加额外的边框元素。ContentPresenterGrid 和StackPanel 具有以下新属性: BorderBrush、BorderThickness、CornerRadius 和 Padding。

    ContentPresenter 上的新文本 API

    ContentPresenter 具有可更好地控制文本显示的新 API: LineHeight、LineStackingStrategy、MaxLines 和 TextWrapping。

    系统焦点视觉对象

    XAML 控件的焦点视觉对象现在由系统创建,而不是在控件模版中被声明为 XAML 元素。移动设备通常不需要焦点视觉对象,让系统按需创建并管理它们可改进应用性能。如果你需要更好地控制焦点视觉对象,可以替换该系统行为并提供定义焦点视觉对象的自定义控件模板。有关详细信息,请参阅 UseSystemFocusVisuals 和 IsTemplateFocusTarget

    PasswordBox.PasswordRevealMode

    在通用 Windows 应用中,PasswordRevealMode 属性将替换 IsPasswordRevealButtonEnabled 属性,以跨设备系列提供一致的行为。

    警告: 在 Windows 10 之前的版本中,密码显示按钮默认处于不显示状态;在通用 Windows 应用中,它默认处于显示状态。如果设备安全要求始终掩盖密码,请务必将 PasswordRevealMode 设置为 Hidden。

    Control.IsTextScaleFactorEnabled

    以前可在 Windows Phone 8.1 上使用的 IsTextScaleFactorEnabled 属性现在可用于所有设备系列上的通用 Windows 应用。

    AutoSuggestBox

    Windows Phone 8.1 中的 AutoSuggestBox 控件现在可用于所有设备系列上的通用 Windows 应用,你应使用它而不是 SearchBox。AutoSuggestBox 在用户键入时即提供建议,与各种输入类型相辅相成,如触摸、键盘和输入法编辑器。它还具有一些可使之更好地发挥搜索框作用的新成员:QueryIcon 属性和 QuerySubmitted 事件。

    ContentDialog

    Windows Phone 8.1 中的 ContentDialog 控件现在可用于所有设备系列上的通用 Windows 应用。ContentDialog 可用于显示可在所有系列的设备上完美运行的自定义模式对话框。

    Pivot

    Windows Phone 8.1 中的 Pivot 控件现在可用于所有设备系列上的通用 Windows 应用。现在,你可以将相同的 Pivot 控件用于你的移动和桌面设备应用。Pivot 基于屏幕大小和输入类型提供自适应行为。你可以设置 Pivot 控件的样式,以提供类似选项卡的行为,每个透视项中包含不同的信息视图。

    文本
    返回页首

    Windows 内核文本 API

    新的 Windows.UI.Text.Core 命名空间具有一个客户端-服务器系统功能,该系统可将键盘输入处理集中到单个服务器。

    你可以使用它来操作自定义文本输入控件的编辑缓冲区。通过应用和服务器之间的异步通信通道,文本输入服务器可确保你的文本输入控件及其本身的编辑缓冲区内容始终保持同步。

    矢量图标

    Glyphs 元素具有新的 IsColorFontEnabled 和 ColorFontPalleteIndex 属性,可支持彩色字体;现在,你可以使用字体文件呈现基于字体的图标。在将 ColorFontPalleteIndex 用于调色板切换时,可使用不同的颜色组合呈现一个图标;例如,显示该图标的启用和禁用版本。

    “输入法编辑器”窗口事件

    用户有时通过“输入法编辑器”输入文本,该编辑器显示在窗口中文本输入框的正下方(通常用于东亚语言)。若要使你的应用 UI 与 IME 窗口相得益彰,你可以对 TextBox 和 RichEditBox 使用 CandidateWindowBoundsChanged 事件和 DesiredCandidateWindowAlignment 属性。

    文本撰写事件

    TextBox 和 RichEditBox 具有以下新事件,可在使用“输入法编辑器”撰写文本时通知应用: TextCompositionStarted、TextCompositionEnded 和 TextCompositionChanged。你可以处理这些事件,以通过 IME 文本撰写进程调整应用代码。例如,你可以为东亚语言实现内联自动完成功能。

    改进的双向文本处理

    XAML 文本控件具有全新 API,可改进双向文本处理,从而针对各种输入语言生成更好的文本对齐方式和段落方向。

    TextReadingOrder 属性的默认值已更改为 DetectFromContent,因此对检测读取顺序的支持在默认情况下处于启用状态。TextReadingOrder 属性也已添加到 PasswordBox、RichEditBox 和 TextBox。

    若要选择从内容自动检测对齐方式,可以将文本控件的 TextAlignment 属性设置为新的 DetectFromContent 值。

    文本呈现

    在 Windows 10 中,在大多数情况下,现在 XAML 应用中的文本的呈现速度几乎是 Windows 8.1 的两倍。在大多数情况下,你的应用将受益于此改进而无需任何更改。除了更快的呈现速度以外,这些改进还使 XAML 应用的常规内存消耗减少了 5%。

    应用程序模型
    返回页首

    Cortana

    通过语音命令扩展 Cortana 的基本功能,这些命令用于在外部应用程序中启动并执行一个单独操作。

    通过集成应用的基本功能,并通过为用户提供中心入口点以便在无需直接打开应用的情况下完成大多数任务,Cortana 可以充当应用和用户之间的联络人。在大多数情况下,这可以为用户节省大量时间和精力。

    了解如何将应用集成到 Cortana Canvas。如果你需要创意,可以参考通用 Windows 应用设计基础知识中特定于 Cortana 的设计建议和 UX 指南。

    文件资源管理器

    新的 Windows.System.Launcher.LaunchFolderAsync 方法允许你启动文件资源管理器并显示所指定的文件夹的内容。

    共享存储

    新的 Windows.ApplicationModel.DataTransfer.SharedStorageAccessManager 类及其方法允许你与另一个应用共享文件,方法是当通过使用 URI 激活启动另一个应用时,传递一个共享标记。目标应用通过兑换该令牌来获取由源应用共享的文件。

    设置

    通过将 ms-settings 协议与 LaunchUriAsync 方法结合使用,显示内置的设置页面��例如,以下代码可用于显示 Wi-Fi 设置页面。

    bool result = await Launcher.LaunchUriAsync(new Uri("ms-settings://network/wifi"));

    有关可以显示的设置页面列表,请参阅如何使用 ms-settings 协议显示内置设置页面

    应用到应用的通信

    通过 Windows 10 中新增的应用到应用的通信 API,Windows 应用程序(以及 Windows Web 应用程序)可以相互启动并交换数据和文件。

    利用这些新 API,使得原本需要用户使用多个应用程序才能完成的复杂任务现在可以无缝地进行处理。例如,你的应用可启动社交网络应用来选择联系人,或启动结算应用程序来完成支付流程。

    应用服务

    在 Windows 10 中,应用可以使用应用服务为其他应用提供服务。应用服务采用后台任务形式。前台应用可通过在其他应用中调用应用服务,在后台执行任务。有关应用服务 API 的参考信息,请参阅 Windows.ApplicationModel.AppService

    应用包清单

    对 Windows 10 的程序包清单架构参考的更新包括已添加、已删除和已更改的元素。

    有关该架构中所有元素、属性和类型的参考信息,请参阅元素层次结构

    设备
    返回页首

    Microsoft Surface Hub

    Microsoft Surface Hub 是一个功能强大的团队协作设备,也是一个适用于 Universal Windows App(可在 Surface Hub 上本机运行也可在连接设备上运行)的大屏幕平台。

    Universal Windows App
    构建你自己的应用(专为你的企业设计),从而充分利用大屏幕、触摸和墨迹输入以及相机和传感器等丰富的板载硬件。

    请参阅 Universal Windows App 设计基础知识中特定于 Surface Hub 的设计建议和 UX 指南。这些文档介绍了面向 Universal Windows App 的响应式设计技术。

    位置

    Windows 10 引入了一个新方法 RequestAccessAsync 来提示用户提供其位置的访问权限。

    用户可通过“设置”应用中的“位置隐私设置”,设置其位置数据的隐私。仅当出现以下情况时你的应用才可以访问用户的位置:

    • “该设备的位置”已打开(不适用于手机版 Windows 10)
    • 位置服务设置中的“位置”已“打开”
    • 在“选择可以使用你的位置的应用”下,你的应用已设置为“打开”

    在访问用户的位置之前,务必调用 RequestAccessAsync。此时,你的应用必须在前台,并且 RequestAccessAsync 必须从 UI 线程中进行调用。除非用户向你的应用授予访问其位置的权限,否则你的应用无法访问位置数据。

    AllJoyn

    Windows.Devices.AllJoyn Windows 运行时命名空间引入了 Microsoft 实现的 AllJoyn 开放源代码软件框架和服务。这些 API 使通用 Windows 设备应用可以在 Internet of Things (IoT) 应用场景中参与到 AllJoyn 驱动的其他设备中。有关 AllJoyn C API 的详细信息,请在 AllSeen Alliance 处下载相关文档。

    使用该版本中所包含的 AllJoynCodeGen 工具,生成可用于在设备应用中启用 AllJoyn 方案的 Windows 组件。

    注意: Windows 10 IoT Core 当前适用于一类新的小型设备,并且允许你使用 Windows 和 Visual Studio 创建“物联网”(IoT) 设备。了解有关 Windows IoT 的详细信息,网址为 WindowsOnDevices.com

    移动设备上的打印 API (XAML)

    你可以使用一个统一的 API 组,在设备系列(包括移动设备)上通过基于 XAML 的 UWP 应用进行打印。现在,你可以从 Windows.Graphics.Printing 和 Windows.UI.Xaml.Printing 命名空间使用熟悉的与打印相关的 API,将打印添加到你的移动应用。

    电池

    通过 Windows.Devices.Power 命名空间中的电池 API,你的应用可了解连接到正在运行该应用的设备的所有电池的详细信息。

    • 通过创建 Battery 对象来表示单个电池控制器或聚合的所有电池控制器(在它们分别由 FromIdAsync 或 AggregateBattery创建后)。
    • 使用 GetReport 方法返回 BatteryReport 对象,该对象可指示相应电池的充电、容量和状态。

    MIDI 设备

    新的 Windows.Devices.Midi 命名空间允许你创建以下内容:

    • 可以与外部 MIDI 设备通信的应用。
    • 可直接与 Microsoft GS MIDI 软件合成��通信的应用和外部设备。
    • 多个客户端同时访问单个 MIDI 端口的场景。

    自定义传感器支持

    Windows.Devices.Sensors.Custom 命名空间允许硬件开发人员定义新的自定义传感器类型,例如 CO2 传感器。

    基于主机的卡片模拟 (HCE)

    使用主机卡模拟,可实现操作系统中所托管的 NFC 卡片模拟服务,并且仍然可以通过 NFC 射频硬件与外部读取器通信。

    实现后台任务需通过 NFC 模拟智能卡。若要触发后台任务,请使用 SmartCardTrigger 类。

    SmartCardTriggerType 枚举中的 EmulatorHostApplicationActivated 值会让你的应用知道 HCE 事件已发生。

    图形
    返回页首

    DirectX

    Windows 10 中的 DirectX 12 在 DirectX 的核心处引入了下一代版本的 Microsoft Direct3D,即 3D Graphics API。Direct3D 12 Graphics 能使低级别、类似控制台的 API 发挥效率和性能。Direct3D 12 现在比以往更快、更有效。它提供更丰富的场景、更多的对象、更复杂的效果,并且能更好地利用现代图形硬件。

    SoftwareBitmapSource

    在通用 Windows 应用中,可将新的 SoftwareBitmapSource 类型用作 XAML 图像源。这可将未编码的图像传递到 XAML 框架,从而立即显示在屏幕上,同时避免 XAML 框架对图像进行编码。你可以实现更快速的图像呈现,如直接通过相机呈现低延迟照片、使用自定义图像解码器、从 DirectX 图面捕获帧,或者甚至从零开始创建内存中图像并直接使用 XAML 呈现所有这些图像,延迟和内存开销均较低。

    透视相机

    在通用 Windows 应用中,XAML 具有全新 Transform3D API,它可用于将透视转换应用到 XAML 树(或场景),后者再根据该单一场景范围的转换(或相机)来转换所有 XAML 子元素。虽然在以前,你可以通过使用 MatrixTransform 和复杂的数学运算来实现此转换,但是 Transform3D 显著地简化了此效果,同时还可以动画方式呈现该效果。有关详细信息,请参阅 UIElement.Transform3D 属性、Transform3DCompositeTransform3D 和 PerspectiveTransform3D

    媒体
    返回页首

    HTTP 实时流

    你可以使用新的 AdaptiveMediaSource 类将自适应视频流功能添加到你的应用。通过将对象指向流清单文件对其进行初始化。受支持的清单格式包括 HTTP 实时流 (HLS) 和基于 HTTP 的动态自适应流 (DASH)。一旦将对象绑定到 XAML 媒体元素,将开始自适应播放。可以在适当情况下查询和设置流的属性,例如可用比特率、最小和最大比特率。

    媒体基础转换代码视频处理器 (XVP) 支持媒体基础转换 (MFT)

    使用媒体基础转换 (MFT) 的 Windows 应用现在可以使用媒体基础转换代码视频处理器 (XVP) 来转换、缩放和转化原始视频数据:

    • 新 MF_XVP_CALLER_ALLOCATES_OUTPUT 属性支持输出到调用方分配的纹理,即使在 Microsoft DirectX 视频加速 (DXVA) 模式下也是如此。
    • 新 IMFVideoProcessorControl2 接口允许你的应用启用硬件效果、查询支持的硬件效果以及替代由视频处理器执行的旋转操作。

    转码

    新 MediaProcessingTrigger API 让你的应用在后台任务中执行媒体转码,这样即使当前台应用已终止,也可以继续进行转码操作。

    MediaElement 媒体失败事件

    在通用 Windows 应用中,MediaElement 将播放包含多个流的内容,即使其中一个流具有解码错误,只要媒体内容包含至少一个有效流即可。例如,如果包含音频流和视频流的内容中的视频流失败,MediaElement 仍将播放音频流。 PartialMediaFailureDetected会通知你流内的其中一个流无法解码。它还允许你知道哪种类型的流失败,以便你可以在 UI 中反映该信息。如果在媒体流内的所有流失败,将引发 MediaFailed 事件。

    通过 MediaElement 支持自适应视频流

    MediaElement 具有新的 SetPlaybackSource 方法,可支持自适应视频流。若要将你的媒体源设置为 AdaptiveMediaSource,请使用此方法。

    通过“MediaElement 和图像”进行强制转换

    MediaElement 和图像”控件具有新的 GetAsCastingSource 方法。你可以使用此方法,以编程方式将任何媒体或图像元素中的内容发送到更多远程设备,如 Miracast、蓝牙和 DLNA。当你将 MediaElement 的 AreTransportControlsEnabled 设置为 true 时,此功能将自动启用。

    桌面应用的媒体传输控件

    ISystemMediaTransportControls 接口和相关的 API 允许桌面应用与内置的系统媒体传输控件交互。这包括使用传输控件按钮响应用户交互,以及更新传输控件显示,以显示有关当前正在播放的媒体内容的元数据。

    随机访问 JPEG 编码和解码

    新的 WIC 方法 IWICJpegFrameEncode 和 IWICJpegFrameDecode 支持 JPEG 图像的编码和解码。你现在还可以编制图像数据的索引,它以较大的内存占用为代价提供对大型图像的高效随机访问。

    媒体组合的重叠

    新 MediaOverlay 和 MediaOverlayLayer API 更便于向媒体组合添加静态或动态媒体内容的多个层。可以为每个层调整不透明度、位置和计时,你甚至可以为输入层实现你自己的自定义复合器。

    新效果框架

    Windows.Media.Effects 命名空间提供了简单、直观的框架,以便将效果添加到音频和视频流。框架包含可以实现创建自定义的音频和视频效果并将它们插入到媒体管道的基本接口。

    网络
    返回页首

    套接字

    套接字更新包括:

    • 套接字代理。套接字代理可以代表处于应用生命周期中任意状态的应用建立和关闭套接字连接。这使应用和它们提供的服务更容易被发现。例如,通过套接字代理,Win32 服务仍可接受传入的套接字连接,即便是该服务不在运行也是如此。
    • 吞吐量改进。套接字吞吐量已针对使用 Windows.Networking.Sockets 命名空间的应用进行了优化。

    后台传输后续处理任务

    你可以利用 Windows.Networking.BackgroundTransfer 命名空间中的新 API 注册后续处理的任务组。这样你的应用便可以立即根据后台传输的成功或失败执行操作,而不是等待下次用户恢复它,即使该应用不在前台运行也是如此。

    广告的蓝牙支持

    借助 Windows.Devices.Bluetooth.Advertisement 命名空间,你的应用可以发送、接收并筛选蓝牙 LE 广告。

    Wi-Fi Direct API 更新

    更新设备代理,以实现在不离开应用的情况下与设备匹配。除此之外,Windows.Devices.WiFiDirect 命名空间还可以让某个设备能够检测到其他设备,并让该设备侦听传入的连接通知。

    注意在此版本中,Wi-Fi Direct 功能改进未内置于 UX 中,并且它们仅支持一键配对。此外,此版本仅支持一个活动连接。

    JSON 支持改进

    在调试会话期间,转换 JSON 对象时,Windows.Data.Json 命名空间现在能更好地支持已有的标准定义和开发人员体验。

    安全性
    返回页首

    ECC 加密

    Windows.Security.Cryptography 命名空间中的新 API 支持椭圆曲线密码 (ECC),后者是基于有限域上椭圆曲线的公共密钥加密实现。在算法上,ECC 比 RSA 更为复杂,它提供更小的密钥大小、可减少内存占用并且可提高性能。它提供 Microsoft 服务并且向客户提供 RSA 密钥和 NIST 批准曲线参数的替代方法。

    Microsoft Passport

    Microsoft Passport 是身份验证的替代方法,它使用非对称加密和手势来替代密码。“凭据”命名空间中的类(如KeyCredentialManger)让开发人员可以轻松通过 Microsoft Passport 来创建应用程序,而无需使用复杂的加密或生物识别。

    Microsoft Passport for Work

    Microsoft Passport for Work 是使用 Azure Active Directory 帐户登录 Windows 的替代方法,它无需使用密码、智能卡和虚拟智能卡。你可以选择是禁用还是启用此策略设置。

    令牌代理

    令牌是一个新型的身份验证框架,可让应用更加轻松地连接到联机标识提供程序(例如 Facebook)。通过诸如帐户用户名和密码管理以及简化的 UI 等功能,将大幅度改善为用户提供的身份验证体验。

    系统服务
    返回页首

    电源

    现在,当节电模式处于启用或未启用状态时,你的 Windows 桌面应用程序将得到通知。通过响应电源条件更改,你的应用程序将有机会帮助延长电池使用时间。

    版本

    你可以使用版本帮助程序函数确定操作系统的版本。在 Windows 10 中,这些帮助程序函数包括一个新函数 IsWindows10OrGreater。如果你想要确定系统版本,则应该使用帮助程序函数,而不是使用已弃用的 GetVersionEx 和 GetVersion 函数。有关如何获取系统版本的详细信息,请参阅获取系统版本

    如果你使用已弃用的 GetVersionEx 或 GetVersion 函数在 OSVERSIONINFOEX 或 OSVERSIONINFO 结构中获取版本信息,请注意,这些结构包含的版本号将从适用于 Windows 8.1 和 Windows Server 2012 R2 的 6.3 版增加到适用于 Windows 10 的 10.0 版。有关操作系统版本号的详细信息,请参阅操作系统版本

    你还需要在你的应用程序中明确定向到 Windows 8.1 或 Windows 10,以使用 GetVersionEx 或 GetVersion 函数获取有关这些版本的正确版本信息。有关如何针对这些版本的 Windows 定向你的应用程序的信息,请参阅针对 Windows 定向你的应用程序

    用户信息

    Windows.System 命名空间中的新 API 使你可以轻松访问用户相关信息,例如其用户名和头像。它还提供响应诸如登录和注销等用户事件的功能。

    内存管理和分析

    对 Windows.System 中内存分析 API 的支持已扩展至所有平台,并且其整体功能已通过新的类和函数进行增强。

    存储
    返回页首

    文件搜索 API 可用于 Windows Phone

    作为应用发布者,你可以注册你的应用,以便通过将扩展添加到应用清单,与其他应用共享存储文件夹。然后,调用Windows.Storage.ApplicationData.GetPublisherCacheFolder 方法来获取共享的存储位置。

    Windows 运行时应用的强大安全模型通常可防止应用在它们自己间共享数据。但是,在来自同一个发布者的应用基于每个用户共享文件和设置时,这可能会很有用。

    工具
    返回页首

    Visual Studio 中的 Live Visual Tree

    Visual Studio 具备全新的 Live Visual Tree 功能。你可以在调试时用它来快速地了解应用可视化树的状态,并发现设置元素属性的方式。它还可用于在应用运行时更改属性值,以便在无需重新启动的情况下进行调整和实验。

    跟踪日志记录

    跟踪日志记录是适用于用户模式应用和内核模式驱动程序的全新事件跟踪 API;它构建在 Windows 事件跟踪 (ETW) 的基础之上。此 API 提供了一种简化方式来检测代码和在结构数据中包括事件,而无需要求单独的检测清单 XML 文件。

    WinRT、.NET 和 C/C++ 跟踪日志记录 API 可为不同的开发人员受众提供服务。

    用户体验
    返回页首

    语音识别

    通用 Windows 平台现已支持针对长篇听写场景的连续语音识别。请参阅“语音交互”文档中的“如何启用连续听写”。

    不同应用程序平台之间的拖放功能

    新 Windows.ApplicationModel.DataTransfer.DragDrop 命名空间为通用 Windows 应用提供拖放功能。以前,桌面程序中的常见拖放方案(例如将文档从文件夹拖动到需要附加它的 Outlook 电子邮件中)不适用于通用 Windows 应用。通过使用这些新的 API,你的应用可以让用户轻松地在不同的通用 Windows 应用和桌面之间移动数据。

    为支持在应用间拖放,已向 XAML 添加以下新 API:

    自定义窗口标题栏

    对于适用于桌面设备系列的 UWP 应用,现在可以将 ApplicationViewTitleBar 类与 ApplicationView.TitleBar 属性和Window.SetTitleBar 方法结合使用,以便将默认 Windows 标题栏内容替换为你自己的自定义 XAML 内容。你的 XAML 将被视为“系统镶边”,因此 Windows(而不是你的应用)将处理输入事件。这意味着用户仍可拖动窗口并调整大小,即使在单击自定义标题栏内容时也是如此。

    Web
    返回页首

    Internet Explorer

    Internet Explorer 中引入了边缘模式,这是一种新的“动态”文档模式,旨在实现与其他现代浏览器和现代 Web 内容的最大互操作性。正在逐渐将此实验模式推广给随机选择的一组 Windows 10 用户。你可以通过新的 IE about:flags 机制手动启用或禁用边缘模式。有关详细信息,请参阅:

    WebView Edge 模式浏览

    WebView 控件与新的 Edge 浏览器使用相同的呈现引擎。这提供了最精确、最符合标准的 HTML 呈现模式。

    线程外 WebView

    若要允许处理和显示单独后台线程上的 Web 内容,可以指定 WebView.ExecutionMode。这可以改进某些特定方案的性能。

    WebView.UnsupportedUriSchemeIdentified 事件

    新 WebView.UnsupportedUriSchemeIdentified 事件可用于确定你的应用处理不受支持的 URI 方案的方式。若要让你的应用提供用于不受支持的 URI 方案的自定义处理方式,你可以处理此事件。

    有关 HTML WebView 控件,请参阅 MSWebViewUnsupportedUriSchemeIdentified 事件。

    WebView.NewWindowRequested 事件

    新 WebView.NewWindowRequested 事件使你可以在 WebView 中的脚本请求新浏览器窗口时做出响应。

    有关 HTML WebView 控件,请参阅 MSWebViewNewWindowRequested 事件。

    WebView.PermissionRequested 事件

    新 WebView.PermissionRequested 事件允许 WebView 内容使用丰富的全新 HTML5 API,它们需要获得特殊的用户权限,如地理位置。

    有关 HTML WebView 控件,请参阅 MSWebViewPermissionRequested 事件。

    WebView.UnviewableContentIdentified 事件

    新 WebView.UnviewableContentIdentified 事件使你可以在 WebView 导航到 PDF 文件或 Office 文档等非 Web 内容时做出响应

    有关 HTML WebView 控件,请参阅 MSWebViewUnviewableContentIdentified 事件。

    WebView.AddWebAllowedObject 方法

    你可以通过调用新 WebView.AddWebAllowedObject 方法,将 WinRT 对象注入 XAML WebView 中,然后通过托管在该 WebView 中的可信 JavaScript 来调用其函数。例如,Web 内容可以通过请求其父应用调用 ToastNotificationManager WinRT API,显示系统通知。

    有关 HTML WebView 控件,请参阅 addWebAllowedObject 方法。

    WebView.ClearTemporaryWebDataAync 方法

    当用户与 XAML WebView 中的 Web 内容交互时,WebView 控件将根据该用户的会话缓存数据。若要清除此缓存,可以调用新的ClearTemporaryWebDataAsync 方法。例如,你可以在某位用户注销应用后清除缓存,这样另一位用户便无法访问上一会话中的任何数据。

    展开全文
  • 今天刚好在知乎刷到有关 Windows terminal 的话题,忽然想起就没怎么管当时脑袋一热买的服务器了,简直就是花了钱在放在马老板那里吃灰,本着探索精神,前前后后弄了一会儿,主要是网络上几乎没有这个的帖子(新产品...
  • Windows API 文件查找的函数

    千次阅读 2010-08-26 23:55:00
    Windows API 文件查找的函数2009-12-07 21:31此文章来源于http://uggs852.blog.163.com/blog/static/12777343020091018112214237/衷心感谢uggbootsblog096HANDLE FindFirstFile( LPCTSTR lpFileName, // file name...
  • 简介承接上文,上文中使用cuckoo沙箱的时候提到过,分析恶意代码的时候,首先利用沙箱做粗略分析,然后可以目标程序进行动态分析(OD,Windbg调试)或者静态分析(IDA静态反汇编).如果嫌每次逆向麻烦的话,同样可以借助...
  • Everything快速查找文件

    2016-11-29 10:51:29
    Everything利用关键字可以快速查找电脑中的文件,比windows自带查找功能强大太多,可以过滤及高亮显示关键字
  • 多时候我们要调整一项 Windows功能时只需更改一下注册表即可实现。而很多大家眼中所谓的高手,对 Windows 注册表更是玩得出神入化。难道这些高手把 Windows 注册表都记下来了?答案是当然不可能。那么,我们怎么...
  • 关于如何查找利用PCL库学习资源的一些心得

    万次阅读 多人点赞 2018-02-08 11:43:28
    前言学习PCL库的两个月左右时间里,从刚开始的无从下手到慢慢地摸清一些门道,走了很多弯路,也遇到过很多困惑,逐渐有了一些如何查找利用PCL库学习资源的心得。所以把这些心得记录下来,一是为了给自己以后学习...
  • Windows 10 系统自带搜索功能详解

    千次阅读 2020-08-19 17:19:22
    原标题:在 Windows 10 上高效搜文件,自带搜索功能其实就够了 快速搜索和效率启动,是大多数用户的刚需,为此也诞生了一大波启动器应用,如 macOS 平台的Alfred、LaunchBar,Windows 平台的Wox、Listary等。其实...
  • 在视频聊天、视频会议、在线监控和视频展台等项目中,需要查找出本地电脑上连接的所有摄像头,网上流传比较多的方式是ffmpeg的方式,这种方式可以跨平台,不同的平台下调用不同的库。这种方式在控制台直接打印了...
  • Windows XP Professional 和 Windows .NET Server 中的 PKI 增强功能 第1页(共6页):简介 2001年8月24日 Microsoft Windows XP Professional 和 Microsoft Windows .NET
  • 利用脱机属性设置处理文件。 /f:file 从指定文件中读取文件列表。 /c:string 使用指定的文本作为文字搜索字符串。 /g:file 从指定文件得到搜索字符串。 /d:dirlist 搜索以逗号分隔的目录列表。 /a...
  • 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战和Windows漏洞利用等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。前文介绍了Windows远程桌面服务漏洞(CVE-2019-0708),该...
  • Posted on 2010-08-01 13:22 Frank Xu Lei 阅读(436) 评论(0)编辑收藏 所属分类: Windows 7新功能体验在Windows 7许多的新功能里,娱乐功能也做了很大的改进: 更详细的内容可以参考这里:...
  • 使用Windows7的索引与搜索功能

    千次阅读 2011-04-10 09:01:00
    这样高级的搜索功能有目前有很多中方式实现:windows7(其他版本应该也可以)自带的索引加搜索功能、Google桌面[1]。其他还有如paperport等可以索引pdf,但是与系统集成度不高,用起来感觉很不爽
  • Volatility中Windows有关的插件功能说明

    千次阅读 2018-03-02 17:17:27
    Windows Core镜像识别插件:imageinfo:显示目标镜像的摘要信息kdbgscan:kernel debugger block,KDBG是由Windows内核维护的用于调试目的的结构。它包含正在运行的进程和加载的内核模块的列表。它还包含一些版本...
  • 简介基于 Windows Mobile 的设备(包括 Pocket PC 和 Smartphone)在全世界得到了广泛部署。是什么原因使这些具有高度可移动性的...Windows Mobile 5.0 使开发人员能够轻松地利用这些强大的设备功能和其他更多的功能
  • 标 题: 深入探究Windows平台客户端安全问题-进程地址空间入侵和白加黑高阶利用 时 间: 2014-09-08,00:03:51 前言 为了避免被读者骂“标题党”,笔者在文章开头先澄清一下这个高大尚的“进程地址空间入侵”的可...
  • 『飞秋』Windows7新功能体验(1):为Windows 7 Media Center安装网络电视(Internet TV) 在Windows 7许多的新功能里,娱乐功能也做了很大的改进: DirectX 11 小工具 游戏资源管理器 ...
  • 经过讨论,由于swf类型的文档是直接能在浏览器中查看的,初步设想是利用openoffice将word类型转变为pdf文件,然后利用swftools工具将pdf转为swf类型。 WordPress:一个以php开发的博客类型网站构架,功能比较全面。...
  • c# wpf 利用截屏键实现截屏功能

    千次阅读 2016-08-01 22:12:47
    最近做一个wpf程序需要截图功能查找资料费了一些曲折,跟大家分享一下。
  • 利用Win10自带功能,玩转系统备份&amp;恢复 – 系统备份 不知不觉,Windows 10系统已经进入秋季创意者更新版本(1709)了, 之前类似一键还原精灵之类的软件,对win10及SSD硬盘的支持越来越吃力, 索性就丢开第三...
  • 七大查找算法

    万次阅读 2017-11-07 20:13:30
    阅读目录 1. 顺序查找2. 二分查找3. 插值查找4.... 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种
  •  动态:这种方式是在Windows Server 2012 R2中新引入的方式,也是最优化的方式,数据会被平分到所有的成员网卡上,最大效率的利用带宽。  创建一个NIC Teaming的方法很简单,只需要简单的鼠标动几下...
  • 第 2 部分:网络保护技术更新日期: 2005年03月02日发布者 Starr Andersen(技术作者),Vincent Abella(技术编辑)本文档是“Windows XP Service Pack 2 中的功能变更”的第 2 部分,提供了 Microsoft® Windows ...
  • 也谈一下TCP segment of a reassembled PDU

    万次阅读 2012-04-11 17:26:41
    今天利用windows查找功能对网络上的一个共享文件夹里的内容 进行查找,发现查找网络文件时流量巨大。好奇用wireshark抓包发现 wireshark Info栏里有很多“TCP segment of a reassembled PDU”提示信息。不解百度了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,753
精华内容 55,101
关键字:

利用windows的查找功能