我们有一个专有的文件格式,其中嵌入了一个product-code。我刚刚开始“使最终用户能够在打开文件时按product-code排序/过滤”的路径。对我们来说,最简单的方法可能是在我们自定义的“打开文件”对话框中简单地添加另一个下拉菜单,在其中选择一个product-code作为过滤依据。但是,我认为如果我们可以将此信息显示为该文件类型的详细信息View中的一列,我认为这对最终用户可能更有用——就像名称、修改日期、类型、大小等一样,也是文件类型的详细属性(或者可能是所有文件的通用属性)。我的模糊理解是XP和之前的Windows操作系统在NTFS的备用数据流中嵌入了某种元数据。但是,从
有很多关于如何获取目录大小的问题和答案-递归地求和文件的长度-很简单。然而,我看到的所有答案都不完整。在您递归遍历卷的地方,有些目录会引发异常-例如UnauthorizedAccessException。我还注意到在Win7中有超过260个字符的路径,这会引发PathTooLongException。所有这一切意味着,至少在C#中,您无法扫描C:\驱动器并获得有关卷大小的真实数字,因为您必须跳过任何引发异常的目录或文件。我正在寻找一种方法来为给定目录的磁盘上存储的字节数获取正确、真实、准确的数字。我不在乎我是否必须进入低级别并编写一些C++,或调用WinAPI。如何实现?谢谢。
我有一个(某种过滤器)驱动程序,它应该与用户模式组件通信。它通过调用IoCreateDevice创建一个设备对象,然后通过IoCreateSymbolicLink为它创建一个所谓的MS-DOS符号链接(symboliclink),使用户可以访问它-模式代码(通过CreateFile)。这或多或少是一种标准技术。驱动程序创建一个形式为\DosDevices\mydevicename的符号链接(symboliclink),而用户模式代码打开一个名为\\.\mydevicename的文件。现在,当驱动程序在终端服务器session的上下文中创build备时,问题就开始了。创建的符号链接(sy
我正在学习NeHegamedev教程(同时将它们更改为面向对象),但我遇到了CreateWindowEx演示(http://nehe.gamedev.net/tutorial/creating_an_opengl_window_(win32)/13001)的问题/).我试图通过lpParam向WndProc传递指向我的Window对象的指针(详见此处:http://web.archive.org/web/20051125022758/www.rpi.edu/~pudeyo/articles/wndproc/),但如果我尝试这样做,CreateWindowEx将失败,GetLastErr
我已经成功地使用GDI实现了双缓冲,但没有使用GDI+。我想在不闪烁的情况下显示png图像。此外,在某些时候我还想使用GDI+实现png图像的动画,因此必须知道如何使用GDI+进行双缓冲。我已经设法通过ISTREAM将png图像放入Image对象中:这是我的代码的一部分,可以帮助您了解我遇到问题的地方:memmove(pBlock,pImage,size);CreateStreamOnHGlobal(hBlock,FALSE,&pStream);Graphicsgraphics(memDC);Imageimage(pStream);intimage_width;intimage_hei
Microsoft提供了一个类CMFCShellTreeCtrl用于浏览shell命名空间层次结构(本质上与资源管理器窗口的左侧相同)。此控件使用SHGetPathFromIDList()以从项目ID列表转到当前路径(所选项目)的字符串表示形式。可以使用任何最终匹配其内部shell层次结构的字符串来设置其当前项,即使所涉及的对象不在“文件系统上”——例如\\WOLF将选择Networking节点下的机器WOLF(假设您的局域网中有一台名为WOLF的机器)。但是,当您尝试从控件返回这样的路径时,由于它依赖于SHGetPathFromIDList()不会解析非在文件系统上。有谁知道更好的I
我有一个带有完全自定义绘制UI的应用程序(即只是一堆带有文本的填充框)。大约运行30-60分钟后,UI元素会自发发生变化。例如,白线(框边框)消失,文本调整大小等。我已经链接到其中一个屏幕的一些前后图像。这表明所有的白线都消失了。其他屏幕显示文本大小发生显着变化。之前:http://s21.postimg.org/cogqodson/BEFORE.png之后:http://s24.postimg.org/7skx21sid/AFTER.png此项目是使用MFC在MSVisualC++2010中编写的,并在Windows7Pro上运行。这是我的OnPaint()代码:voidCMainW
问题:大型模拟游戏中有许多荒谬的不同对象,必须对其进行跟踪,更新并用于视觉渲染和逻辑模型更新。仅4GB的地址空间,您就只能在内存中容纳这么多东西。如果您求助于磁盘,除非运气好并且不断访问页面缓存,否则事情会开始放慢速度。但是即使那样,当文件系统同步到磁盘时,进行大量更新/写入也将是昂贵的。假设用户至少有32GB的RAM(少数报告有64GB),并且希望进行巨大的模拟,从而导致该模型所承载的数据量比游戏中要处理的大多数事物都要多一个数量级。它们当然具有64位操作系统(例如Windows7x64或Windows8x64)。自然地,如果仅将所有这些模型数据存储在进程中的虚拟地址空间中,即使使用
遵循Readeaxregister中给出的建议,我使用winapi编写了一个简单的调试器。我的目标是每次在另一个线程中执行汇编指令后读取eax寄存器。它正在运行,我设法在另一个进程中放置了一个硬件断点。当断点到达被调试线程内部时,问题出现了,我可以按预期读取eax寄存器,但我仍然找不到任何方法来恢复线程的执行。我的代码:int_tmain(intargc,_TCHAR*argv[]){//FindingWindowHWNDwindow=FindWindow(0,_T("Test"));if(window==0){printf("Processnotfound!\n");return0;
我正在做一些Win32互操作。东西,在搜索标题并仔细阅读MSDN并在快乐的泡沫中定义常量和dll导入时,我在WinNT.h中发现了一些奇怪的行(我的版本中的第6486-6488行......呃......7.1a,我想想)#defineSTANDARD_RIGHTS_READ(READ_CONTROL)#defineSTANDARD_RIGHTS_WRITE(READ_CONTROL)#defineSTANDARD_RIGHTS_EXECUTE(READ_CONTROL)我盯着它看了一会儿,喝着茶,想知道为什么这三个常量都被定义为相同的值。这很有趣。有人知道吗?