草庐IT

c++ - DeleteFile() 失败但文件存在(文件名很长)

我正在编写一个有错误的备份程序。使用调试器单步调试代码,我发现删除文件时出错。我正在使用CFileFind定位文件,并使用CFileFind::GetFilePath()获取完整路径名。CFileFindfind;BOOLbContinue=find.FindFile(AppendPath(lpszPath,_T("*")));while(bContinue){bContinue=find.FindNextFile();if(!find.IsDirectory()){if(find.IsReadOnly())ClearReadOnlyAttribute(find);if(!::Dele

c++ - 所有文件都有 FILE_ATTRIBUTE_ARCHIVE 属性

我正在开发一个程序,该程序应该从std::vector中的选定目录中检索所有文件的属性。此代码显示了我如何获取文件属性:DWORDattr_flags=GetFileAttributes(file_path);if(attr_flags==INVALID_FILE_ATTRIBUTES){std::cout代码会像这样解析检索到的标志:if(attr_flags&FILE_ATTRIBUTE_ARCHIVE){attrs.push_back(defines::Attributes::kArchive);attr_flags&=~FILE_ATTRIBUTE_ARCHIVE;}if(at

c++ - 在不重新编译源代码的情况下更改 C++(C) 程序中定义的数字

假设我有这个打印数字的简单程序:#includeintunique_id=112233;intmain(){std::cout然后我将它编译成类似a.exe的东西。现在我想创建另一个打开a.exe并将unique_id更改为其他内容的应用程序。可能吗?由于某些限制,我不会将参数传递给程序。我想使用unique_id,顾名思义,唯一标识我的程序运行的位置。但我不想为1000个客户编译我的程序1000次。我知道我可以使用硬盘序列号,但在虚拟机中,这个序列号可能会被省略。我知道我可以使用CPU序列号,但我在S.O帖子中读到该序列号已弃用。我知道我也可以使用MAC地址:),但该地址可以轻松更改

c++ - 虚拟列表控件 (MFC)

我正在使用列表控件来显示vector中元素的表示。单击列表时,另一个控件会显示有关该元素的信息。元素的索引当前由它在控件中的索引确定,但是如果我想对结果进行排序或过滤,这将不再有效。有人告诉我可以使用虚拟列表控件,但MSDN不是很友好,有人可以告诉我如何为此使用虚拟列表控件吗? 最佳答案 坦率地说-将数据(数据vector中的位置)与列表控件中数据的呈现(列表ctrl中的位置)联系起来是我会远离的事情。在MFC中,每个控件都有一个“数据”DWORD成员变量——在MFC中编码时,我总是为添加的每个项目调用“SetItemData”,并

c - 如何在 Windows 中设置 Turbo C 路径?

如何在windows中全局设置turboc路径,以便我可以在windowsXP中使用命令提示符编译和运行我的C程序(在其他驱动器中)?任何人都可以告诉我如何在命令提示符下仅通过键入在每个驱动器上获取命令c:\tcc在windows和turboc环境的命令提示符下? 最佳答案 转到“开始”菜单,然后转到“控制面板”。选择“系统”小程序。单击“高级”选项卡。点击“环境变量”找到“路径”变量,然后按“编辑”附加一个分号,然后是TurboC的路径要设置包含和库路径,请转到相同的位置,但不要编辑“Path”变量,而是创建一个名为“INCLUD

windows - 如何使用 C 更改 Windows 中文件的最后修改日期?

是否有一个C函数调用可以更改Windows中文件或目录的最后修改日期? 最佳答案 您可以使用SetFileTime函数,对于目录,你必须使用CreateFile使用FILE_FLAG_BACKUP_SEMANTICS标志获取目录句柄并将其用作SetFileTime的文件句柄参数,如下所示:hFolder=CreateFile(path,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_DIRECTORY|FILE_FLAG_BACKUP_SEMANTICS

c++ - VC++ : How to prevent esc from closing a dialog box (not mfc)

如何防止esc关闭对话框?我搜索了这个主题,但我只找到了MFC(您可以覆盖MFC中的PreTranslateMessage函数)。但我的程序是用WindowsAPI编写的,不是MFC。我试图在Dialog过程中捕获所有键盘消息,但它们都不起作用。我也尝试在对话框中使用子类化,但它也不起作用。我该怎么做?谢谢。 最佳答案 处理WM_COMMAND并检查IDCANCEL。然后不要将控件传递给默认窗口过程。 关于c++-VC++:Howtopreventescfromclosingadialo

c++ - 通过检测文件打开(创建)进行进程同步

有两个应用程序。第一个应用程序对有问题的机器是远程的(我无权访问它)并通过网络(LAN)创建一个大文件。我无法控制此过程,也不知道它何时发生。这就是我必须与之合作的。我无法以任何方式添加、更改或改变它。第二个应用程序是我写的,找到这个文件就处理它。此应用计划每5分钟运行一次。当我的应用程序尝试处理文件时,可能会出现文件正在写入的情况,导致处理不完整和/或其他错误,因此我需要在开始之前检测文件是否已完全写入处理它。我可以使用OpenFile()并请求读/写锁定访问。错误将指示正在创建文件。我可以用文件系统观察器做一些聪明的事情http://msdn.microsoft.com/en-us

c - 为 Unix 和 Windows 编写应用程序

我将为交互式UNIX(http://en.wikipedia.org/wiki/INTERACTIVE_UNIX)编写一个程序。但在一年内它将被移植到Windows。我将用ANSIC和/或SH脚本编写它。当它在Windows上运行时,它将作为Windows服务运行。如何让它对我来说尽可能简单?我想在移植时尽可能少地更改,但要使其成为好的代码。不幸的是,InteractiveUnix是一个旧系统,唯一存在的shell是/bin/sh 最佳答案 如果您甚至考虑在SH脚本中执行此操作,那么您应该认真考虑已经可移植的Python。

c++ - 从另一个进程中获取内存

在Windows中,假设我使用DLL注入(inject)进入另一个进程。我还对我注入(inject)的进程的内存进行了一些截屏,并知道我想要提取的数据的位置。假设在0xaaaaaaaa处的另一个进程中有包含特定值的数据。我如何从那个过程中获取这个值,以便我可以在我的注入(inject)应用程序中使用它?既然我被注入(inject)到进程中,我可以只使用像memcpy这样的东西吗?memcpy(value,0xaaaaaaaa,10);我假设它可能比这更复杂?编辑:对于下面的回复,我看不出WM_COPYDATA对我有何帮助,因为它用于将数据发送到另一个应用程序,而不是用于从现有应用程序检