C++在杀死LogonUI.exe后将窗口置于前台

C++ Bring window to foreground after killing LogonUI.exe

本文关键字:于前台 前台 窗口 LogonUI exe C++      更新时间:2023-10-16

一开始我以为启动命令杀死LogonUI.exe的程序在LogonUI.exe重新执行之前就关闭了。

然而,我发现这一点都不对,因为事实上程序并没有关闭,但在我看来它已经移到了后台(我发现由于任务列表,程序仍在运行)

以下是一些试图显示此问题的代码(将在登录屏幕上运行)

如果有人能解决这个问题,那就太棒了。谢谢

#include <iostream>
#include <stdlib.h>
#include <windows.h>
using namespace std;

void Menu(char &sel_menu);
void KillLogonUI();
void Tasklist();
void Menu(char &sel_menu)
{
    cout << "Type 1 to kill LogonUI.exe" << endl;
    cout << "Type 2 to list running processes" << endl;
    cout << endl << "Type 0 to exit" << endl;
    cout << endl << endl << ">> "; cin >> sel_menu;
}
void KillLogonUI()
{
    HWND hWnd =  GetForegroundWindow();
    system("Taskkill /F /IM LogonUI.exe");
    SetForegroundWindow(hWnd);
}
void Tasklist()
{
    system("Tasklist");
}
int main()
{
    char sel_menu;
    do
    {
        Menu(sel_menu);
        switch (sel_menu)
        {
            case '1': KillLogonUI(); break;
            case '2': Tasklist(); break;
            default:
                if (sel_menu != '0')
                    {
                        cout << endl << "Wrong input";
                        Sleep(1000);
                    }
        }
    } while(sel_menu != '0');
    return 0;
}

您到底想要实现什么?登录时运行应用程序?可以通过以下方式完成:1.创建系统服务(非用户级服务)2.当服务运行时-在winlogon会话"WinSta0Winlogon"中运行您的应用程序,下面是如何使用正确的安全令牌在不同会话中运行您应用程序的文章:http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-and-bit-Archite#_articleTop3.将应用程序属性设置为"topmost"。4.服务关闭时,关闭您的应用程序。这个逻辑将适用于从7到10的所有窗口,服务器12,16——我在所有窗口中都进行了测试,它都能工作。

杀死LogonU是个坏主意。如果你需要隐藏它-只需隐藏它窗口和/或全屏运行你的程序。