更换睡眠,直到打开桌面上的窗户
Replace Sleep until Window on desktop opened
当我打开一些软件应用程序时,我必须等待2-3秒,直到窗口将在桌面上显示为止。我必须使用睡眠(2000);然后始终在顶部进行调用方法设置。我试图用代码更换睡眠。我想从打开的窗口中获取信号,然后调用一个方法,该方法允许打开的窗口始终在顶部。这是我的代码:
BOOL CALLBACK EnumWindowsProc(HWND windowHandle, LPARAM lParam)
{
DWORD searchedProcessId = (DWORD)lParam;
DWORD windowProcessId = 0;
GetWindowThreadProcessId(windowHandle, &windowProcessId);
cout << "Process id: " << windowProcessId << endl;
if(searchedProcessId == windowProcessId) {
HWND hwnd = windowHandle;
Sleep(2000);
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
cout << "Process ID found!" << endl;
return TRUE;
}
return TRUE;
}
void AlwaysOnTop(int processId)
{
EnumWindows(&EnumWindowsProc, (LPARAM)processId);
}
void AlwaysOnTop(char *name)
{
cout << "String: " << name << endl;
Sleep(2000);
HWND h = FindWindow(NULL, (LPCSTR) name);
SetActiveWindow(h);
SetForegroundWindow(h);
SetWindowPos(h, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE | SWP_NOMOVE);
}
int main()
{
char s[] = {"Application"};
AlwaysOnTop(s);
//AlwaysOnTop(2307);
system("PAUSE");
return 0;
}
可能要做的最好的是致电 WaitForInputIdle
:
等待指定的过程完成了其初始输入的处理,并且正在等待用户输入,而无需输入,或者直到超时间隔已经过去。
这是您最接近的一般方式等待,直到一个过程显示其UI。它不会总是做您想要的,但这是最好的。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在桌面C++上使用 WinApi 画线
- 桌面中的Qt QMessageBox中心'critical'
- Qt QML桌面应用程序自动化测试
- 如何在窗户上使用和配置叮当声?
- Windows 10 上的 Linphone 桌面
- 如何使用opencv和Qt拍摄部分桌面的照片
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 如何停止在所有桌面上显示C / C++ WINAPI窗口?
- 从 c++ 运行 MsiExec.exe?窗户
- 下一个云桌面客户端构建过程
- 需要有关使用 Visual Studio 17 将 QT 桌面应用程序打包为 AppX 格式的指导
- 使用 qt 或 c++ 从桌面获取输入和输出
- 我可以用C++/WinRT编写一个DLL,供windows桌面应用程序(而不是UWP)或Unity插件使用吗
- 高CPU使用率,在API桌面复制中获取帧之间具有不同的超时间隔
- 桌面计算器出现问题.C++程序设计语言
- BEGIN_MESSAGE_MAP导致C++Builder 10.1崩溃到桌面
- Windows Service 可以枚举桌面顶级窗口吗?
- 管道到窗户上的ffmpeg
- 更换睡眠,直到打开桌面上的窗户