C++在杀死LogonUI.exe后将窗口置于前台
C++ Bring window to foreground after killing LogonUI.exe
一开始我以为启动命令杀死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是个坏主意。如果你需要隐藏它-只需隐藏它窗口和/或全屏运行你的程序。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 将密钥发送到非前台的游戏窗口
- 鼠标输入和键输入有什么区别(在前台获取窗口)
- C++程序将进程置于前台(如果已在运行),否则创建一个新进程
- 全局挂钩 DLL 仅在 C# 主窗口处于活动状态/前台时调用 C# 回调方法
- 程序在前台工作,但不在后台使用nohup
- C++在杀死LogonUI.exe后将窗口置于前台
- 如何在OSX中执行时强制Qt应用程序成为活动/前台窗口
- 识别后台进程并在 C++ WIN32 中置于前台
- 在Linux中,如何在父进程死后将子进程留在前台
- 将后台进程发送到前台
- 暂停游戏时,进入前台,重启后
- 避免在前台项目中处理wheelEvent
- Qt 需要将 Win32 应用程序调用的 Qt 应用程序带到前台
- 将execv在前台或后台运行
- 如何将在后台运行的子进程移到前台