小编zze*_*man的帖子

使用Win32监视打开的程序

我搜索了网络和各种论坛,但是我找不到一件事,如果持续监控打开的程序,然后关闭另一个程序(不是被监控的程序),如果被监控的程序发生了什么.

例如,假设已经打开了一个记事本窗口,然后用户或其他程序打开一个Windows资源管理器窗口.我想知道如何关闭记事本窗口而不与Windows资源管理器窗口交互(除了意识到它确实打开),以及如果用户关闭Windows资源管理器窗口,关闭记事本窗口.

提前致谢!:d

c++ windows winapi monitoring

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

如何将两个向量<unique_ptr <... >>设置为彼此相等?

我正在使用Visual Studio 2012 C++,我想设置两个具有彼此相同的唯一指针的向量.

    using namespace std;
    vector<unique_ptr<Unit>> unitVector;
    vector<unique_ptr<Unit>> nonDeadUnits;

    .... (stuff added to unitVector) ....

    for (auto unit = unitVector.begin(); unit != unitVector.end(); ++unit) {
            if ((*unit)->health > 0) {
                    nonDeadUnits.push_back(*unit);
            }
    }

    unitVector.clear();
    unitVector = nonDeadUnits; // error here (see below error code)
Run Code Online (Sandbox Code Playgroud)

我想删除所有生命值小于0的单位,但是如果我尝试直接从向量中删除它们,我会尝试访问我不应该访问的内存,从而终止程序.这就是为什么我选择这样做的原因.唯一的问题是unique_ptr不允许我想要的复制类型.这是错误:

    error C2248: 'std::unique_ptr<_Ty>::operator =' : cannot access private member declared in class 'std::unique_ptr<_Ty>' c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility 2089
Run Code Online (Sandbox Code Playgroud)

我想有unique_ptr,因为向量在稍后的for循环中调用子类方法,它有助于覆盖.那么如何将矢量设置为彼此相等或者有更好的方法呢?

c++ vector unique-ptr visual-studio-2012

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

在 Emacs Elisp 函数中,如何打开一个新的缓冲区窗口,向其打印字符串,然后用键盘按“q”关闭它?

我对 elisp 比较陌生,我不知道如何表达我的问题以在 Google 上找到答案

我想定义一个函数:

  • 打开一个新的缓冲区
  • 将字符串打印到该缓冲区中
  • 当用户聚焦并按“q”时关闭缓冲区和窗口

我尝试过的是

(defun test ()
    (switch-to-buffer-other-window "*test*")
    (erase-buffer)
    (insert "hello from *test*")
    (kill-this-buffer))

(test)
Run Code Online (Sandbox Code Playgroud)

但这并没有按照我想要的方式工作。

为了清楚起见,下面是我希望该函数执行的操作的图像分解:

初始设置

在此输入图像描述

函数test被执行

在此输入图像描述

焦点保留在初始缓冲区上,然后指定的缓冲区*test*获得焦点并q按下键盘

在此输入图像描述

窗口配置现在没有*test*,焦点返回到初始缓冲区

我计划使用此函数将我的个人键绑定打印到缓冲区中*test*,这样我就不必打开我的.emacs来查看它们

emacs elisp function

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