c++ - 为什么我的 windows 消息框总是选择你的路径 c++?
问题描述
下面是我试图附加到窗口的程序,它可以工作,但我希望用户可以选择尝试附加窗口而不重新打开程序。我用switch语句尝试了这个,但是如果找不到进程并且用户打开它然后按下重试,为什么当进程没有打开时它会重复错误。
编码 -
class attach
{
DWORD ProcID;
HWND hwnd = FindWindowA(NULL, "SONIC HEROES(TM)");
void attempt()
{
if (hwnd == NULL)
{
const int Window = MessageBoxA(0, "Failed to attach Window!", "Attention", MB_RETRYCANCEL | MB_ICONERROR);
switch (Window)
{
case IDRETRY:
attempt();
break;
case IDCANCEL:
exit(-1);
break;
}
}
else
{
MessageBoxA(0, "Window Found!", "Attention", MB_OK | MB_ICONHAND);
}
}
};
解决方案
您可以放入FindWindowA
函数attempt()
并创建一个数组来完成。
这是一个最小的代码示例:
#include <Windows.h>
#include <iostream>
using namespace std;
CHAR* name = (CHAR*)malloc(1024);
class attach
{
public:
void attempt();
private:
DWORD ProcID;
HWND hwnd;
};
void attach::attempt()
{
hwnd = FindWindowA(NULL, name);
if (hwnd == NULL)
{
hwnd = FindWindowA(NULL, name);
const int Window = MessageBoxA(0, "Failed to attach Window!", "Attention", MB_RETRYCANCEL | MB_ICONERROR);
switch (Window)
{
case IDRETRY:
attempt();
break;
case IDCANCEL:
return;
}
}
else
{
MessageBoxA(0, "Window Found!", "Attention", MB_OK | MB_ICONHAND);
cout << "If you want to attach new process, please input new application name:" << endl;
cin >> name;
attempt();
}
}
int main()
{
cout << "Input your application name:" << endl;
cin >> name;
attach a;
a.attempt();
free(name);
return 0;
}
推荐阅读
- ios - 如何在我的 Swift 应用程序中向多个单一联系人发送短信?
- flutter - 如何在 Flutter Web 中使用 lib assets_audio_player
- flutter - 每 50 毫秒 Flutter 任务
- session - NextJs 受 Next Auth 保护的 API
- python - Python Django:为什么 Google OAuth2 令牌在过期时间后有效?
- java - 动态模板(Sendgrid APIs)中嵌入的内嵌图像
- sql - 在oracle sql中将列值拆分为多个列
- bash - 为什么我不能在 bash 脚本中使用 `source` ssh-agent 和 ssh-add?
- imap - IMAP:如何确定允许的最大文件夹名称和路径长度?
- python - svnperms 设置用法