小编Rob*_*obH的帖子

如何检测VC++ 2008可再发行?

是否有一个注册表设置,我可以查找以确定是否已安装Visual C++可再发行组件,无论是独立还是作为Visual Studio 2008的一部分?我知道我可以启动VC++ 2008可再发行安装程序并让它处理检测,但是如果我可以检查它并且如果可再发行组件已经在系统上则不打扰启动安装程序它看起来会更清晰.

如果没有可搜索的设置,这并不重要,因为这仅适用于我们软件新版本的初步安装程序.对于我们正在开发的基于Windows Installer的新安装程序,我们不需要它来替换旧的技术安装程序,并将使用合并模块.

redistributable visual-c++

31
推荐指数
5
解决办法
6万
查看次数

用C++读取另一个进程'stdout

在Windows中,有没有办法在C++中启动进程,然后在完成后读取它在stdout中吐出的内容?必要时,必须使用提升的权限(在Vista或更高版本上)运行该进程.

我目前正在使用ShellExecuteEx()来启动进程并运行while循环,直到GetExitCodeProcess()不再通过lpExitCode参数返回STILL_ACTIVE(在每次迭代期间使用WaitForSingleObject()调用执行100毫秒的等待).

c++ windows stdout

8
推荐指数
1
解决办法
6524
查看次数

如何强制我的应用程序走到前面并关注焦点?

我正在开发一个应用程序,它恰好是我正在开发的安装程序的引导程序.该应用程序进行一些MSI调用,以获取将我的应用程序主窗口向导组合在一起所需的信息,这会导致在收集信息时打开进度窗口,然后在完成后立即离开.然后设置并启动向导.我的问题是,向导(从CPropertySheet派生)不希望在没有我添加一些调用的情况下来到前面并成为活动应用程序.

我已经解决了在OnInitDialog()方法中使用以下代码将它带到前面的问题:

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // force window to top
SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // lose the topmost status that the previous line gave us
Run Code Online (Sandbox Code Playgroud)

我的问题是,我仍然没有弄清楚如何使窗口自动激活(即,使自己成为具有焦点的窗口).SetFocus()在此上下文中不起作用.我需要一些东西来强制窗口到Z顺序的顶部并激活它,最好是尽可能少的调用.

我的猜测是MSI调用开始时打开的进度窗口导致主窗口搞砸了,但我无法阻止该窗口出现.此外,隐藏它是没有意义的,因为它让用户知道在主窗口到达之前发生了什么.

c++ windows mfc propertysheet dialogbasedapp

7
推荐指数
3
解决办法
2万
查看次数

如何在不增加系统资源的情况下拖放大量文件?

我正在处理的程序的一个功能是能够从主窗口拖动对象并将它们作为文件拖放到Windows资源管理器中.

为此,我们覆盖COleDataSource::OnRenderGlobalData(),当格式为时CF_HDROP,我们将每个对象保存为文件.当对象数量很小时,这可以正常工作.

但是,当我们正在努力支持企业级别的对象时,当用户尝试将大量对象从我们的应用程序拖到Windows资源管理器中时,我们会看到很大的延迟,有时会导致挂起或最终崩溃.

我的猜测是这种情况正在发生,因为OnRenderGlobalData()它被调用了很多次,当然,每次它必须遍历被拖动的对象并将它们保存为文件.

我正在研究覆盖的想法OnRenderFileData(),但问题是它一次只处理一个文件.

当用户试图将大量对象拖到Windows资源管理器上时,有什么方法可以加快我们的应用程序,最好是将保存循环移动到只能在实际放置时执行一次的地方?

c++ windows mfc drag-and-drop

6
推荐指数
1
解决办法
610
查看次数

设置应用程序要求提升?

我正在为我们的一些产品开发新安装程序的bootstrap应用程序.到目前为止,我一直依赖于我在某处读到的两件事:

  1. 名称包含"setup"或"install"的应用程序默认会提升.
  2. 运行提升的应用程序将以提升模式启动其他应用程序.

最近的测试发现这些语句中的一个或两个都是错误的,因为我正在启动的一个应用程序是需要提升的第三方安装程序,并且由于提升要求而失败.

如何将我的应用程序设置为要求提升?我知道它与清单文件有关.当我在Visual Studio 2008中工作并生成清单文件时,我想知道要在项目的属性中输入什么以及在何处使其需要提升.

c++ manifest process-elevation windows-vista visual-studio

4
推荐指数
1
解决办法
5649
查看次数

如何在 PHP 中运行 Selenium headless?

我们希望在构建脚本中运行 Selenium 测试以及其他单元测试,但考虑到构建是在 Jenkins 上运行的,而 Jenkins 作为服务运行,因此测试需要无头运行。我们的 Selenium 测试是用 PHP 编写的,到目前为止我所看到的一切似乎都适用于 JavaScript 或 Python。

我们有什么方法可以无头运行 PHP Selenium 测试(最好使用与不运行无头时相同的驱动程序,以便我们可以检测特定浏览器的问题)?

php selenium headless-browser selenium-webdriver geckodriver

3
推荐指数
1
解决办法
3458
查看次数