C++ C++;如果进程已经运行,则将其置于前台,否则创建一个新进程

C++ C++;如果进程已经运行,则将其置于前台,否则创建一个新进程,c++,winapi,createprocess,setforegroundwindow,C++,Winapi,Createprocess,Setforegroundwindow,我正在努力学习windows编程。我想从C++代码中启动一个可执行代码程序。我可以通过在windows中使用CreateProcess()方法来实现这一点。但是,我的问题是,如果进程已经在后台创建并运行,那么program.exe的窗口应该出现在前台,否则应该创建一个新进程并将其带到前台。任何帮助都将不胜感激。请查看Win32 API函数,例如: 要发现给定进程是否正在运行,可以使用: 和。看 或 带和/。看 要查找现有窗口,可以使用: 或者,如果您提前知道窗口的类名或标题文本 或

我正在努力学习windows编程。我想从C++代码中启动一个可执行代码<代码>程序。我可以通过在windows中使用
CreateProcess()
方法来实现这一点。但是,我的问题是,如果进程已经在后台创建并运行,那么
program.exe
的窗口应该出现在前台,否则应该创建一个新进程并将其带到前台。任何帮助都将不胜感激。

请查看Win32 API函数,例如:

  • 要发现给定进程是否正在运行,可以使用:

    • 和。看

    • 带和/。看
  • 要查找现有窗口,可以使用:

    • 或者,如果您提前知道窗口的类名或标题文本

    • 使用和/或,如果窗口的类名或标题文本是动态的,但遵循可以查找的模式
  • 若要还原最小化的窗口,可以使用

  • 要将窗口置于前台,可以使用和/或


    • 那是你写的
      program.exe
      ?这个功能在那里处理得更好:在开始时,您检查是否已经有一个实例在运行,如果已经有,请激活它。
      否则-如果有多个
      program.exe
      实例已经在运行,你该怎么办?

      有一些函数,你可以从中获得一个句柄来操作(例如,移动到前台)。system()应该可以工作。@nada
      system()
      在这种情况下不起作用。它所做的只是生成一个
      cmd.exe
      实例来调用命令,并且没有本机命令行命令来执行Akhilesh所要求的操作。但是,即使有,最好使用本机API来完成这类工作,然后再进行外部处理。不,我现在使用的是现有的.exe(notepad.exe)。关键是我没有访问.exe源代码的权限。