草庐IT

c++ - 使用 dll 中的类时内存无效

这是我第一次尝试从dll导出类。我所做的是:-创建一个接口(interface)(只有纯虚方法)-使用不会导出的类在dll中实现此接口(interface)-该类有一个在其this指针上调用delete的释放方法-创建了一个带有静态方法的工厂类,该方法返回指向具体类的指针但作为接口(interface)。这个类是导出的。-返回对象的删除是通过调用其释放方法完成的。我从本教程中收集了所有这些aboutclassesindlls.问题是,当我在另一个项目中使用此dll时,一切正常,直到我对该对象调用释放函数。然后它会显示一个断言失败窗口,其中包含消息“_ASSERTE(_BLOCK_TYP

c++ - 窗口最大化

我想创建一个程序,我可以在其中设置最大最大化尺寸(如点击最大化按钮时窗口最大化的尺寸)和最大化位置(最大化窗口的X/Y坐标)正在运行的窗口。这样一来,我就可以随时在辅助显示器上看到我的Rainmeter,而无需手动调整适合其中的每个窗口的大小。我已经成功地为我使用WinAPI中的MINMAXSIZE编写的一个简单程序做到了这一点。这种方法似乎非常适合我的小程序,但除了互联网上的1或2篇文章外,关于它的文档很少。我想知道这是否是设置最大最大化大小的最佳方法,或者是否有其他方法可以做到这一点。我计划将其实现到所有应用程序中的方式是DLL注入(inject)或Hook(我对这两种方法都没有任

c++ - 如何确保转储文件由 C++ 应用程序在未处理的异常情况下写入

如果发生未处理的异常,如何确保转储文件由C++应用程序写入。例如,如果不处理被零除,那么如何确保写入Dump。此外,我尝试搜索但没有找到好的windbg教程也很棒。 最佳答案 我假设您正在寻找一种外部方式来创建这些转储(毕竟,您询问的是未处理的异常)。在Vista及更高版本中,您正在寻找的机制称为Windows错误报告-WER。你可以configureittocreatedumps崩溃时,将它们放置在特定位置。在Vista之前,您可以使用drwtsn32.exe来做到这一点.您还可以使用ADPlus运行您的程序,这将在进程崩溃时立即

windows - 通过双击关联文件打开 C++ 程序。我如何获得文件名?

我有一个与.bin文件相关联的C++程序,因此无论何时打开.bin文件,它都会用myProgram.exe打开。如何获取打开我的程序的关联文件的文件名? 最佳答案 在纯C++中,您可以使用main的参数:#includeintmain(intargc,char*argv[]){usingnamespacestd;cout但是有一个问题,即C和C++main是为*nix而不是Windows设计的。神圣的C++标准建议运行时应提供UTF-8编码的main参数,但是,传统的WindowsC++编译器不会发生这种情况。所以在Windows中

c++ - 如何通过 shell 执行最大化启动 Chrome?

我正在通过C++使用app="http://..."参数(Chrome应用程序快捷方式)启动Chrome。现在它似乎以大约400x800的大小打开,这太疯狂了。我想最大化打开它,或者至少让它记住大小。有什么办法可以实现吗? 最佳答案 如果您不介意使用默认浏览器(我认为这是最好的选择)而不是强制使用Chrome,您只需使用ShellExecute打开您的URL。指定您希望窗口最大化:#include#include//requireslinkingtowardsShell32.lib//...if(ShellExecute(NULL,

c++ - 是否可以在 Windows 上使用 Qt 在网络 usb 打印机上逐行打印?

标题几乎说明了一切,我必须将旧的com/serial-printer-port代码转换为应该与网络usb打印机一起工作的“新的华丽Qt代码”。我搜索了很多,但找不到任何关于如何逐行打印的信息(即,当我只向打印机发送一个文本行时,它不应该打印一整页)。有什么想法吗?谢谢!附言。它不一定是Qt(只要我可以包装它/从Qt使用它)但它必须是C++并且在WinXP上运行。 最佳答案 此页面记录了可用于将原始数据发送到打印机的WindowsAPI:http://msdn.microsoft.com/en-us/library/windows/d

c++ - 如何将 C++ 对象传递给 NPAPI 插件?

我正在Windows上用C++编写一个NPAPI插件。当我的插件被实例化时,我想从我的主应用程序向它传递一些私有(private)数据(具体来说,我想向它传递一个指向C++对象的指针)。似乎没有执行此操作的机制。我错过了什么吗?我不能简单地在插件实例中创建我的对象,因为它意味着存在于插件实例的范围之外,并且即使在插件实例被销毁时仍然存在。编辑:我正在通过CEF使用C++中的嵌入式插件。这意味着我的代码本质上是浏览器和插件。显然,这不是标准NPAPI插件的行为方式,因此这可能不受NPAPI本身的支持。 最佳答案 您不能将C++对象传递

c++ - 微软的 CopyFileEx 错误

我正在使用Microsoft的CopyFileEx方法来复制文件。我正在从一台服务器复制到另一台服务器,文件位于共享文件夹中,我正在使用UNC。我收到错误999。我在Microsoft的Technet网站上找到了“999”错误。由于“执行页内操作时出错”,拷贝失败。根据在http://support.microsoft.com/kb/141117找到的以下Microsoft知识库文章,“Errorperforminginpageoperation”的一些原因是:“由网络连接引起的错误可能会导致这些错误。当通过网络复制大于最大数据包大小的文件时,不匹配的MTU大小或在路由器处截断数据包可

windows - 在 C++ 中模拟 Alt Tab 键盘按下以启动 Fast Switch 窗口

我有一个需要在触摸屏设备上运行的项目的想法。这个想法是在屏幕上有一个按钮,按下它可以在打开的项目之间切换。那么ALT+TAB键盘快捷键究竟是如何工作的。我知道C++中的SendKeys::Send()事件可以模拟按键,但当我尝试发送ALT+TAB时它似乎对我不起作用。那么有没有一种方法可以让窗口通过C++显示所有打开的程序(就像按下ALTTAB时一样)?PS该项目是Windows应用程序!Windows7开始,但希望它可以在以后与更多Windows系统兼容。 最佳答案 自从您提到SendKeys以来假设使用C++/CLI。SendK

C++ Windows 线程和互斥问题

我对线程程序有点生疏,尤其是在Windows中。我在Matlab中创建了一个简单的mex文件,用于读取多个文件,每个文件都在其自己的线程中读取。该文件并没有做任何真正有用的事情,而是一个更复杂版本的前身,该版本将使用我放入该文件的所有功能。这是代码:#include#include"mex.h"#includetypedefunsignedcharuchar;typedefunsignedintuint;usingnamespacestd;intN;intnThreads;constintBLOCKSIZE=1024;char*buffer;char*out;HANDLEhIOMute