Articles of c + +

获取桌面/ shell窗口的句柄

在我的一个程序中,我需要testing用户是否正在关注桌面/shell窗口。 目前我使用user32.dll中的GetShellWindow(),并将结果与​​GetForegroundWindow()进行比较。 这种方法是一直工作,直到有人改变桌面墙纸,但一旦墙纸改变GetShellWindow()的句柄不再匹配从GetForegroundWindow()了,我不明白这是为什么。 ( 操作系统: Windows 7 32位) 有没有更好的方法来检查桌面是否集中? 优选地,如果用户改变壁纸,那么不会损坏的那个? 编辑:我devise了一个解决方法:我正在testing的句柄有一个“SHELLDLL_DefView”类的孩子。 如果有的话,桌面上的焦点。 虽然它在我的电脑上工作,但并不意味着它会一直工作。

如何用C ++编程式更新组策略?

我以编程方式pipe理组策略,但是我无法find任何以编程方式更新组策略的function。 即gpupdate / force

BitBlt忽略CAPTUREBLT,似乎总是捕获目标的caching副本

我正在尝试使用BitBlt函数捕获截图。 但是,每次我捕捉屏幕截图时,无论我做什么,非客户端区域都不会改变。 就好像它正在获取一些caching副本。 客户区被正确捕获。 如果我closures然后重新打开窗口,并截图,非客户区将被捕获,因为它是。 移动/调整窗口大小后的任何后续捕获都不会影响捕获的屏幕截图。 再次,客户区将是正确的。 而且,CAPTUREBLT标志似乎完全没有任何作用。 我注意到没有或没有改变。 这是我的捕获代码: QPixmap WindowManagerUtils::grabWindow(WId windowId, GrabWindowFlags flags, int x, int y, int w, int h) { RECT r; switch (flags) { case WindowManagerUtils::GrabWindowRect: GetWindowRect(windowId, &r); break; case WindowManagerUtils::GrabClientRect: GetClientRect(windowId, &r); break; case WindowManagerUtils::GrabScreenWindow: GetWindowRect(windowId, &r); return QPixmap::grabWindow(QApplication::desktop()->winId(), r.left, r.top, r.right – r.left, r.bottom – r.top); case WindowManagerUtils::GrabScreenClient: […]

是否有可能在C#中编写一个可在Windows 8 Metro环境中运行的Ping类?

由于Windows 8上的Metro环境缺乏大部分.NET框架类库或者包含一个经济实惠的版本,是否可以从Metro风格的应用程序执行“ping”? 有支持套接字,所以我想有希望,但我不知道从哪里开始,因为每个“C#Ping”的例子使用System.Net.NetworkInformation.Ping ,并不是在WinRT中可用。 我也研究了Mono的源代码,他们的ping实现激发了ping.exe,并从命令行的标准输出窗口返回结果。

删除opengl中的纹理

在程序存在之前是否必须删除我创build的所有纹理(使用glDeleteTextures),还是OpenGL自己删除纹理?

有了MongoDB,是否可以通过.NET Reactive Extensions(RX)接收第三方编辑的通知?

我想知道是否有人知道是否有可能通过C#中的反应扩展(RX)获得任何编辑MongoDB数据库的实时通知? 这意味着任何第三方都可以编辑MongoDB数据库,服务可以监控编辑并即时对它们做出反应。 我曾经尝试过 我花了大量的时间在Google和其他地方研究这个问题,并且通过了所有可能相关的NuGet包。 我能find的唯一的比赛涉及Java,并且是德语的 。 更新1 看着可以玩的游标,在这里: http://www.warski.org/blog/2012/11/event-streaming-with-mongodb/

cmake – find_library – 自定义库位置

我目前正试图让我的项目(Windows)上运行CMake。 我想要使​​用安装了所有库的自定义位置。 为了告诉CMake这条路,我试图这样做: set(CMAKE_PREFIX_PATH D:/develop/cmake/libs) 但是当我试图find图书馆 find_library(CURL_LIBRARY NAMES curl curllib libcurl_imp curllib_static) CMake找不到它。 当我设置我的前缀path set(CMAKE_PREFIX_PATH D:/develop/cmake/libs/curl) 图书馆所在地 所以我的问题是:我如何正确configurationCMake的目录结构在一个自定义的位置,看起来像这样: D:/develop/cmake/libs/ -> libA -> include -> lib -> libB -> include -> lib -> … -> include -> lib 在“包含”谎言公共标题和“lib”是编译的库。 希望有人能帮助我 – 在此先感谢 编辑:目前我的解决方法是,在我search库之前做到这一点: set(CUSTOM_LIBRARY_PATH D:/develop/cmake/libs) file(GLOB sub-dir ${CUSTOM_LIBRARY_PATH}/*) foreach(dir ${sub-dir}) if(IS_DIRECTORY ${dir}) set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH};${dir}) endif() endforeach() […]

如何使用C#将CSV数据粘贴到Windows剪贴板

我正在努力完成的 我的应用程序生成一些表格数据 我希望用户能够启动Excel并单击“粘贴”将数据作为单元格放入Excel中 Windows接受一种称为“CommaSeparatedValue”的格式,它与API一起使用,所以这似乎是可能的 将原始文本放在剪贴板上,但是尝试使用这种格式不行 注:我可以从剪贴板正确检索CSV数据,我的问题是关于将CSV数据粘贴到剪贴板。 我曾尝试过,这是行不通的 Clipboard.SetText() System.Windows.Forms.Clipboard.SetText( "1,2,3,4\n5,6,7,8", System.Windows.Forms.TextDataFormat.CommaSeparatedValue ); Clipboard.SetData() System.Windows.Forms.Clipboard.SetData( System.Windows.Forms.DataFormats.CommaSeparatedValue, "1,2,3,4\n5,6,7,8", ); 在这两种情况下,剪贴板上都放置了一些东西,但是当粘贴到Excel中时,它会显示为一个garbarge文本的单元格:“-§žý; pC|yVk” 更新1:使用SetText()的解决方法 正如BFree的答案所示,使用TextDataFormat的 SetText作为解决方法 System.Windows.Forms.Clipboard.SetText( "1\t2\t3\t4\n5\t6\t7\t8", System.Windows.Forms.TextDataFormat.Text ); 我已经尝试过,并确认现在粘贴到Excel和Word正常工作。 在每种情况下,它粘贴为单元​​格而不是明文的表格。 仍然好奇为什么CommaSeparatedValue 不工作。

Visual Studio 2015 C ++应用程序需要客户端客户端上的api-ms-win-crt-runtime-l1-1-0.dll

我已经使用Visual Studio 2015社区版build立了一个应用程序。 当我的一些用户试图运行它,他们收到以下错误: 程序无法启动,因为您的计算机缺lessapi-ms-win-crt-runtime-l1-1-0.dll。 尝试重新安装程序来解决这个问题。 显然这是通过在Windows中安装通用C运行时更新 (KB2999226)来解决的。 我可以在安装脚本中检查修补程序,但是我发现这样做的所有方法要么太慢,要么不可靠 。 我怎样才能防止这种错误发生? 我可以更改我的解决scheme,以便我不需要这种依赖性? 我是否连接了一些我可以删除的东西? 我可以重新分配与我的应用程序的修补程序? 编辑:在项目属性中,“目标平台版本”是8.1,“平台工具集”是“Visual Studio 2015(v140)”,如果有帮助的话。 编辑2:我已经试过将所有的通用C运行时库DLL复制到应用程序目录,因为微软现在允许(但不build议)本地模式安装的UCRT 。 C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64有41个文件,而api-ms-win-crt-runtime-l1-1-0.dll就是其中之一。 但是,现在运行该应用程序导致此错误: 应用程序无法正确启动(0xc0000142)。 单击确定closures该应用程序。 我试过用MSVS 2015debugging应用程序,但没有得到任何好处。 我在Dependency Walker中打开了可执行文件,看起来我错过了这个答案中列出的类似DLL ,它说Dependency Walker是旧的,这是一个红色的鲱鱼。 我尝试通过进程监视器(procmon)运行应用程序,没有什么不寻常的。 应用程序简单地调用WerFault.exe上的“进程创build”,然后“线程退出”。 编辑3:我启用加载程序捕捉可执行文件,并得到这个从CDB运行时,如果有帮助: … 00c0:1200 @ 02106250 – LdrpFindOrMapDependency – RETURN: Status: 0x00000000 00c0:1200 @ 02106250 – LdrpFindOrMapDependency – ENTER: DLL name: api-ms-win-core-sysinfo-l1-2-1.dll. […]

C#阅读Windows Mobile宽带连接属性

首先,这是背景: 我们有一个Windows Forms应用程序(用C#,.NET Framework 3.5编写),当前运行在完整的Windows 7平板电脑上,内置了一个用于数据连接的3G模块。 数据连接在Windows中configuration为正常的移动宽带连接(所以Windows本身就是pipe理连接),连接显示在控制面板>networking和Internet>networking连接中,并且工作正常 – 应用程序能够通过互联网与我们的networking服务。 我们将在未来的某个时间转移到其他设备(可能是完整的基于Windows 8的平板电脑)。 现在,我需要做的是读取移动宽带连接的连接状态。 即获得信号强度,以及运营商名称(如沃达丰英国)。 我已经find了使用Windows 7 SDK的移动宽带API部分的方法(请参阅此处和此处 ),但是这似乎是操作系统特定的,因为它在Windows 8上不起作用 – 或者至less不是设备,我在这里。 有没有一种通用的方式来阅读使用.NET框架的移动宽带连接属性? 另外,有没有人知道Windows 8 SDK,其中包含我正在使用的Windows 7移动宽带API? 提前致谢。 更新 – 我现在已经在一系列不同的Win 7 / Win 8设备上工作了。 即使联想设备工作正常。 我将发布主要位的示例代码(读取连接状态,configuration连接,检查SIM卡状态)作为答案; 令人烦恼的是,代码有点太长了。