我编写了一个通过COM与第三方程序通信的DelphiDLL。一些用户报告说第三方程序偶尔会崩溃。其他以相同方式使用该软件的人从未经历过崩溃。发生此崩溃时,第三方程序似乎在我的DLL应用程序中变得不可用。供应商发誓说是DelphiDLL的编码方式有问题,虽然他们没有看过源代码也不知道DLL做了什么导致崩溃,但他们知道这是“某事”.除了我相信第三方程序不应该因为我的DLL中的一些小问题而崩溃这一事实之外,让我们假设我的DLL中有一些东西需要修复。我如何确定我的应用可能是如何导致这种情况的?有没有人有通过COM与这样的超敏感程序进行通信的经验?是否存在一些可能导致第三方程序崩溃的常见问题?
屏幕截图以下源代码用于产生上述错误。您所要做的就是编译程序并确保IDE仍在运行(如果IDE关闭则不会发生错误),单击按钮12到15次,错误就会弹出。错误发生后,切换回IDE,IDE的所有工具栏都消失了。您必须关闭IDE并再次运行,它们才能重新出现。源代码unitMainUnit;interfaceusesWinapi.Windows,Winapi.Messages,Winapi.ShlObj,System.SysUtils,System.Variants,System.Classes,System.StrUtils,Vcl.Graphics,Vcl.Controls,Vcl.Forms
我正在尝试使用DelphiXE3在Windows7上管理防火墙规则(异常(exception))。我发现了一个非常有趣的代码,用于向Windows防火墙添加规则,但没有关于删除(删除)它的内容。请问有人可以帮忙吗?下面是添加规则的代码:procedureAddExceptToFirewall(constCaption,AppPath:String);//UsesComObjconstNET_FW_PROFILE2_PRIVATE=2;NET_FW_PROFILE2_PUBLIC=4;NET_FW_IP_PROTOCOL_TCP=6;NET_FW_ACTION_ALLOW=1;varPr
我在使用Delphi7中的WMI查询(远程)PC时遇到内存泄漏。内存泄漏仅发生在Windows2003(和WindowsXP64)上。Windows2000没问题,Windows2008也没有问题。不知道有没有人遇到过类似的问题。泄漏仅发生在某些Windows版本中这一事实表明它可能是Windows问题,但我一直在网上搜索但未能找到解决该问题的修补程序。此外,这可能是Delphi问题,因为在C#中具有类似功能的程序似乎没有这种泄漏。后一个事实使我相信可能有另一种更好的方法来在Delphi中获取我需要的信息而不会发生内存泄漏。我已经包含了一个小程序的源代码以暴露下面的内存泄漏。如果sOb
我在将Delphi2007RADStudioProfessional安装到Windows764位企业版上时遇到问题。一切正常,直到我输入安装序列号。输入它并单击安装向导中的下一步按钮后,我在第906行收到安装脚本错误。确定该错误将关闭安装程序。我已经进行了一些谷歌搜索,但还没有发现任何类似的东西(尽管我发现了很多关于在各种版本的64位Windows上安装它并且遇到其他问题的人的引用资料)。我已经能够在同一台机器上毫无问题地安装Delphi2009。我真的很想安装2007,因为这是我们目前主要的Delphi开发IDE。 最佳答案 我在
我想在Windows资源管理器内容菜单(适用于所有文件类型)中创建菜单项,单击后将打开我的应用程序并将选定的文件名传递给它。有这方面的教程吗?我知道有可用的ShellPlus组件,但它有点过时了。 最佳答案 注册表这个方法很简单,因为它归结为添加一些注册表项。缺点是你不能在其中放入任何逻辑。你可以阅读它here和hereDelphi中的一个简单示例。如果您使用DDE来执行菜单项,您将获得更多的控制权。参见here一个德尔福的例子。外壳扩展此方法需要更多工作,但您可以完全通过代码控制上下文菜单。你将不得不编写一个DLL,实现ICont
我想从Delphi启动一个应用程序,并获得它的句柄,这样我就可以将所述应用程序的主窗口嵌入到TFrame类型的框架中。到目前为止我已经尝试过:FunctionTFrmEmbeddedExe.StartNewApplication:Boolean;varSEInfo:TShellExecuteInfo;ExitCode:DWORD;beginFillChar(SEInfo,SizeOf(SEInfo),0);SEInfo.cbSize:=SizeOf(TShellExecuteInfo);withSEInfodobeginfMask:=SEE_MASK_NOCLOSEPROCESS;Wn
我的最后一个问题“列出Win-7下的服务和服务状态”让我开始研究一个解决方案,该解决方案基于.manifest文件为我的应用程序提供WindowsVista及更高版本的管理员权限。我不确定是否要继续上一个问题,因为它们不一样,所以这是另一个问题:我的应用程序现在在Win7下运行良好,无论我是否以“管理员身份”运行它,因为list文件。我的list文件如下:PowershieldServiceMonitor当应用程序在Windows7或Vista上运行时,UAC会出现如下对话框:alttexthttp://www.freeimagehosting.net/uploads/39787fd3
我有一个KNOWNFOLDERID,我想知道相应的路径,如C:....\folder。KNOWNFOLDERID可以在这里找到。http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx我想使用winapi(我不想构建包含所有KNOWNFOLDERID和路径的数组)。谢谢 最佳答案 只需调用SHGetKnownFolderPathAPI函数。由于此函数是在Vista中添加的,因此不会在Delphi7附带的库单元中声明它。因此您需要自己声明它。typeKNOWNFO
我一直在编写一个程序,理想情况下它将在后台的服务器上运行而不会关闭-因此不存在任何内存泄漏很重要。我的程序涉及使用Windows终端服务API(wtsapi32.dll)检索实时session信息,并且由于信息必须是实时的,该函数每隔几秒运行一次,我发现调用WTSEnumerateSessionsEx函数具有导致相当大的内存泄漏。似乎按照MSDN文档中的说明调用WTSFreeMemoryEx似乎没有任何影响,但我没有收到任何来自这两个调用的错误消息。总而言之:问题不在于执行WTSEnumerateSessionsEx,因为返回了有效数据;内stub本没有被释放,这会导致长时间运行时出现