草庐IT

windows - 读取带有空字节的文本文件

我有一个包含dos元素的文本文件-例如hex(00)。我需要阅读并转换它。我曾尝试使用utf8toansi,但这会删除带有hex(00)的整行。有没有办法将整个文件转换为文本?我正在使用win32、RadStudio2007、Delphi。 最佳答案 这应该做...procedureConvertFileToDos(constaInFile,aOutFile:String);varFileIn,FileOut:TextFile;C:AnsiChar;LineBreak:String;beginLineBreak:=#13#10;As

windows - 以编程方式跟踪目录中的更改

我必须编写一个小应用程序来处理保存在给定目录中的文件。我不喜欢编写无限循环、计时器和诸如此类的东西。我想知道是否有(我敢打赌有!)是否有任何WindowsAPI会向我的应用程序发送一条消息,以获取保存在给定目录中的任何文件。 最佳答案 ReadDirectoryChangesW的正确使用非常重要。有一个工作样本here.我使用过与此密切相关的生产代码,但我发现没有更好的示例可以使用。请注意,here中描述了API的已知问题(诚然,可能不会影响您的极端情况)和here,以及进一步的使用建议here.

windows - 为什么使用 GetFileSizeEx() 时会出现 "Invalid handle"错误,文件标记为只读?

当我在只读文件上使用我的Delphi6应用程序中的WindowsAPI调用GetFileSizeEx()时,我收到操作系统错误代码6(“无效文件句柄”)。如果我从文件中删除只读属性,错误就会消失。为什么我会收到该错误,有没有办法对只读文件使用该调用或类似调用?相关代码如下:functionGetFileSizeEx(hFile:THandle;varFileSize:Int64):BOOL;stdcall;external'kernel32.dll'name'GetFileSizeEx';functioneasyGetFileSize(theFileHandle:THandle):In

windows - TFileListBox 组件查找不再存在的文件

我在Windows7上使用Delphi7,并且有一个应用程序使用TFileListBox组件循环访问目录中的文件并将它们复制到备份目录。我遇到了一些奇怪的行为,即TFileListBox正在检测目录中不存在的文件?我处理的目录包含75个文件,但TFileListBox检测到超过100个文件。我更改了资源管理器设置以显示隐藏/系统文件,但仍然看不到这些额外文件的来源。我想知道这个Windows7以前的版本是否在这个问题中发挥了作用,因为我相当确定TFileListBox正在检测的额外文件确实曾经驻留在这个目录中但被删除了...如有任何帮助,我们将不胜感激。 最

windows - 如何检测我的应用程序是否在兼容模式下运行?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowtodetecttrueWindowsversion我有一个应用程序使用第三方库(dll-无源代码)来保护(加密)一些客户数据,这个dll必须使用不同的参数初始化,具体取决于当前的Windows版本。如果我的应用程序在Windows7下以XP兼容模式执行,则dll加密方法失败。所以我需要一种方法来检测我的应用程序何时在兼容模式下运行以防止出现此问题。那么如何检测我的应用程序是否在兼容模式下运行?

windows - 与 GUI 应用程序相比,相同的代码作为 Windows 服务运行得更慢

我有一些Delphi2007代码在两个不同的应用程序中运行,一个是GUI应用程序,另一个是Windows服务。奇怪的是,虽然GUI应用程序在技术上似乎有更多“要做”,绘制GUI、计算一些统计数据等等,但Windows服务在运行时始终使用更多的CPU。其中GUI应用程序使用大约3-4%的CPU功率,服务使用大约6-8%。同时运行它们时,两个应用程序的CPU负载大约加倍。除了在Windows窗体应用程序中添加了GUI代码外,这两个应用程序的基本代码是相同的。这种行为有什么原因吗?Windows服务应用程序是否有某种固有的开销,或者我是否需要查看代码以找到这种意外行为的来源?编辑:有时间仔细

windows - 防止任务管理器中的进程终止,反向

我使用下面的代码来防止用户从任务管理器中终止我的程序(我在某处找到它):functionPreventProcessKill:Integer;varhProcess:Thandle;EmptyDacl:TACL;pEmptyDacl:PACL;dwErr:DWORD;beginhProcess:=GetCurrentProcess();ZeroMemory(@EmptyDacl,SizeOF(tacl));pEmptyDacl:=@EmptyDacl;if(notInitializeAcl(EmptyDacl,sizeof(tACL),2))thendwErr:=GetLastErro

windows - 计划任务是否收到 WM_QUERYENDSESSION 消息?

我有一个程序可以响应WM_QUERYENDSESSION以执行一些作为计划任务运行的清理。日志记录表明未执行清理代码。作为计划任务运行的应用程序是否收到WM_QUERYENDSESSION消息或是否有任何其他方法来检测窗口关闭? 最佳答案 消息被发送到顶层窗口。如果您的流程有一个,它将被发送消息。如果您没有,那么您可以为此创建一个。如果您的应用程序是控制台应用程序,那么SetConsoleCtrlHandler是接收此类通知的推荐方式。从评论线程中可以看出,您的进程正在SYSTEM帐户下运行。根据documentation,这意味着

windows - 德尔福 : Call user selection interface

我可以使用WindowsAPI调用此屏幕吗?我想使用此界面来选择具有域的正确用户。谢谢! 最佳答案 此对话框称为对象选取器对话框。您可以使用IDsObjectPicker从Delphi调用接口(interface)和InvokeDialog方法。这是一个示例,说明如何使用Delphi中的此对话框。implementation{$R*.dfm}usesActiveX;constCLSID_DsObjectPicker:TGUID='{17D6CCD8-3B7B-11D2-B9E0-00C04FD8DBF7}';IID_IDsObjec

windows - 从其可执行文件的路径获取服务名称

我有一个可执行文件的路径,它是一个正在运行的服务应用程序。例如:C:\ProgramFiles(x86)\Someapp\somesvc.exe我想停止并启动它,为此我想我需要获取服务的名称,如[this]中所述。回答。我可能会通过遍历HKLM\System\CurrentControlSet\Services中所有服务的所有注册表项并检查ImagePath注册表项是否与我的相匹配来得到这个可执行路径。这个解决方案应该可行,但对我来说似乎是错误的。有更好的方法吗? 最佳答案 使用EnumServicesStatus()或EnumSe