gpt4 book ai didi

c++ - 台式机问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:35 25 4
gpt4 key购买 nike

我有这个代码:

#define _WIN32_WINNT 0x0500
#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[])
{
Sleep(500);
HDESK hOriginalThread;
HDESK hOriginalInput;
hOriginalThread = GetThreadDesktop(GetCurrentThreadId());
hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);


HDESK hNewDesktop=CreateDesktop("Test",NULL,NULL,0,DELETE|READ_CONTROL|WRITE_DAC|WRITE_OWNER|GENERIC_ALL,NULL);

cout<<SetThreadDesktop(hNewDesktop);
Sleep(575);
SwitchDesktop(hNewDesktop);
system("cmd");
Sleep(1000);
SwitchDesktop(hOriginalInput);
SetThreadDesktop(hOriginalThread);
CloseDesktop(hNewDesktop);
CloseDesktop(hOriginalInput);
Sleep(1000);
return 0;
}

当我运行它时,它会创建新的桌面,切换到它,但没有出现命令提示符。我必须手动终止进程“cmd”,然后我的程序继续。有没有办法在其他桌面上显示任何应用程序的窗口?以及如何更改我创建的桌面背景?请帮忙。

最佳答案

您可以在应用程序启动时选择在哪个桌面启动应用程序。

STARTUPINFO si = {0};
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = L"winsta0\\Default";

然后将这个结构传递给CreateProcessCreateProcessAsUser .


您还可以选择在哪个 session 中启动应用程序(在任务管理器中启用 session ID 列以查看您想要的 session )

您可以使用以下命令在另一个 session 中创建进程:SetTokenInformation

在传递 TokenSessionId 的 CreateProcessAsUser 中使用的 token 上

您不能更改已经运行的进程的 session 。

关于c++ - 台式机问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com