草庐IT

c++ - WINAPI RegisterApplicationRestart 不清除打开的套接字

我有一个我正在制作的游戏的服务器,我使用RegisterApplicationRestart(GetCommandLine(),0);这样当服务器由于不可预见的原因崩溃时,它会自行重启。但是,我对它如何处理我在应用程序上打开的监听器套接字有疑问。服务器代码通过一组端口号并在第一个可用端口上打开一个监听器套接字。但是,当应用程序遇到fatalerror并自行重启时,先前选择的端口上的监听器套接字不会关闭,因此每次应用程序重新启动时,使用的端口号都会增加,并且先前使用的端口变为“死”监听器,它们接受连接但与我的任何代码无关。有没有办法在应用程序自身重新启动时强制关闭那些打开的套接字?

windows - 如何获得 Spy++ 提供的父结构?

在我们的代码中,实例化了一个派生自CMDIChildWnd的C++类,并调用了它的Create()函数,实际上是CMDIChildWnd::Create()。第5个参数pParentWnd被设置为CMDIFrameWnd对象。这反过来(在MFC代码中)设置一个CREATESTRUCT对象,将它的hwndParent设置为该参数,然后调用PreCreateWindow()作为参数之一传递的对象。但是,当使用CWnd::GetParent()(原始)GetAncestor(hwnd,GA_PARENT)(只是尝试,因为原始没有用,这段代码已有20多年历史了)甚至GetWindow(hwnd

c++ - 对 SetThreadErrorMode()、SetErrorMode()、_set_error_mode() 和 _CrtSetReportMode() 的混淆

我有一个用C++编写并使用VisualStudio2015编译的命令行应用程序。我需要确保此应用程序在自动、无人值守的功能测试期间不会被错误对话框阻止,特别是在断言失败的情况下(标准assert()来自)。我最初认为https://stackoverflow.com/a/6925695/393756中建议的以下调用会做这项工作,但它没有:_set_error_mode(_OUT_TO_STDERR);通过试验,我最终发现以下代码达到了预期的效果,至少在涉及到失败的断言对话框时:SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORB

c - 将入口点更改为PE文件中新添加的shellcode段后,如何恢复主进程?

我试图通过在PE文件末尾添加一个额外的节头并在其中编写shellcode来进行PE感染。我已经添加了额外的部分并在其中编写了shellcode,并将原始入口点(OEP)更改为新添加的部分并且它执行得很好;我的意思是我的shellcode运行良好,但现在我想恢复主进程,为此我需要再次将修改后的入口点更改为OEP。但是,我无法弄清楚。请告诉我是否有任何方法可以在执行shellcode后恢复主进程。而且,我也试过这个blog,但它也不起作用,因为作者编写了内联汇编代码并放置了一些占位符以在运行时恢复OEP,这将动态嵌入到shellcode中。我正在考虑编写一个包含JMPto_OEP的shel

windows - 旧的 Visual Studio 2017/MFC 应用程序仍然有一个非常旧的 "look"到 Windows

这个问题在这里已经有了答案:HowtogetMDIwindowtitlebarsonWindows10withamodernlookMDIwindowtitleinWindows10(1个回答)关闭3年前。我有一个最初开发于25年前的32位MFCC++应用程序。这些window的外观和感觉仍然很旧,边缘很厚,我想可以追溯到XP。对话框更好,特别是因为我添加了以下内容:#pragmacomment(linker,"/manifestdependency:\"type='win32'name='Microsoft.Windows.Common-Controls'version='6.0.0

windows - AI_FQDN 和 AI_CANONNAME 结果在 ADDRINFOW 结构中有什么区别?

关于使用GetAddrInfoW(我来自C#使用背景)。ADDRINFOW结构可以将ai_flags设置为AI_FQDN和AI_CANONNAME以便PWSTRai_canonname将包含:在DNS中注册的规范名称要么平面名称解析到的完全限定域名Windows文档:“在DNS中注册的规范名称可能与平面名称解析到的完全限定域名不同。”这两者有什么区别? 最佳答案 ai_canonname是一个输出(在c#中)参数种类。但它可以根据标志集(AI_FQDN/AI_CANONNAME).完全限定名称:您从根级别获得完整路径(例如:ru.w

c# - 是否有支持 Windows 7 的 SetProcessDPIAware 的反函数?或者如何回到原来的状态?

我在我的WinForms应用程序中使用user32.dll中的SetProcessDPIAware()函数。调用SetProcessDPIAware()后,我需要恢复到之前的进程DPI感知。我读了文章SettingthedefaultDPIawarenessforaprocess.SetProcessDpiAwareness()和SetProcessDpiAwarenessContext()不适用于Windows7或WindowsVista。如何在调用SetProcessDPIAware()后返回到进程之前的DPI感知? 最佳答案

windows - Windows Server 2003 SP2 是否说出了有关免费系统页表条目的真相?

我们有一些在WindowsServer2003ServicePack2上运行的Win32控制台应用程序经常因以下问题而失败:Error1450(ERROR_NO_SYSTEM_RESOURCES):"Insufficientsystemresourcesexisttocompletetherequestedservice."我们找到的所有文档都表明它与用完的免费系统页表条目的数量有关。我们在这些机器中有16GBRAM,并使用/3GB操作系统开关将Windows内核压缩到1GB,并允许我们的进程访问3GB的地址空间。这大大减少了可用系统页表条目的总数,因此结合我们对MapViewOfFi

windows - 使用 Windows 媒体格式 (WMF) 捕获桌面

我正在使用WindowsMediaFormatSDK实时捕获桌面并将其保存在WMV文件中(实际上这是对我的项目的过度简化,但这是相关部分)。对于编码,我使用WindowsMediaVideo9Screen编解码器,因为它对于屏幕捕获非常有效,而且几乎每个人都可以使用它而无需安装任何东西,因为编解码器包含在WindowsMediaPlayer9运行时(包含在WindowsXPSP1中)。我正在使用GDI函数制作BITMAP屏幕截图,并将这些BITMAP提供给编码器。您可以猜到,使用GDI截屏很慢,而且我没有得到屏幕光标,我必须手动将其添加到BITMAP。我最初得到的BITMAP是DDB,

windows - 如何实现进程内全文搜索引擎

在我们的一个商业应用程序(Win32,用Delphi编写)中,我们想实现全文搜索。该应用程序以某种无法直接识别为文本的二进制格式存储用户数据。理想情况下,我想找到一个进程内解决方案(DLL就可以)或一个我可以通过TCP访问的本地服务器(最好)。API应该允许我向服务器提交文本信息(连同表示它来自的二进制blob的元数据),当然,它应该允许我进行全文搜索,至少对逻辑运算符的支持最少和子串搜索。需要Unicode支持。我在StackOverflow(WhataresomeSearchServersoutthere?)上找到了大量搜索引擎,但我不太明白哪些引擎可以满足我的需求。在我花一两天时