4

我注意到了一些非常奇怪的事情。如果我从 VS2013 运行以下代码,它会按预期工作。但是,当我手动双击编译的 .exe 时,它​​不会。这让我相信 VS2013 会以某种方式启动具有提升权限的应用程序。

#include <stdio.h>
#include <tchar.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    printf("You have 5 seconds to open a Metro App. \nThen we'll try setting the TaskBar as the foreground window.\n\n");
    Sleep(5000);

    printf("Setting Taskbar as foreground window now... \n");
    SetForegroundWindow(FindWindow(L"Shell_TrayWnd", NULL));

    getchar();

    return 0;
}

从VS2013运行时:即使Metro App打开(占据全屏),任务栏设置为前台窗口后,用户也被带回桌面。

双击 .exe 时:如果 Metro App 是前台窗口,则不会发生任何事情。

作为旁注,我尝试右键单击并“以管理员身份运行”,但是仍然没有效果。这更令人困惑。有人知道这里发生了什么吗?

另外,我正在运行 Windows 8.1 Preview。

4

3 回答 3

0

不,它以相同的权限运行已调试的应用程序。

但是,如果您阅读手册,您会发现权限与它无关。但是被调试是明确列出的。

于 2013-09-08T15:57:12.723 回答
0

您不能简单地“双击”WinRT 应用程序的 exe。有一个不同的应用程序启动模型为 exe 创建进程。这是通过包应用程序/激活来完成的,这也是设计师所做的。因此,如果您按 F5 键,它将运行该应用程序,因为它使用 WinRT 激活机制。

于 2013-09-08T21:03:31.677 回答
0

我和微软的人谈过这个问题。看起来是文档有点不准确。“正在调试前台进程。” 应该类似于“正在调试调用进程”。它很快就会更新。

于 2013-09-24T05:31:30.873 回答