#include <iostream>
#include <Windows.h>
using namespace std;
HWND GetWindowHandleByPID(DWORD dwProcessID,char cmd)
{
HWND h = GetTopWindow(0);
while (h)
{
DWORD pid = 0;
DWORD dwTheardId = GetWindowThreadProcessId(h, &pid);
if (dwTheardId != 0)
{
if (pid == dwProcessID/*your process id*/)
{
// here h is the handle to the window
::SendMessage(h, WM_CHAR, cmd, 0);
return NULL;
}
}
h = ::GetNextWindow(h, GW_HWNDNEXT);
}
return NULL;
}
int main()
{
string strexeContent = "ffmpeg.exe ";
string strCmdContent = " -stream_loop -1 -re -i swt.mp3 -codec copy -y faj.mp3";
SHELLEXECUTEINFO ShExecInfo = { 0 };
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = strexeContent.c_str();
ShExecInfo.lpParameters = strCmdContent.c_str();
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;// or SW_SHOW
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
while (1)
{
char cmd;
if (cmd = cin.get())
{
if(cmd =='q')
{
DWORD pid = GetProcessId(ShExecInfo.hProcess);
GetWindowHandleByPID(pid,cmd);
}
}
}
return 0;
}
C/C++,程序打开一个ffmpeg录制,发送一个‘q’给ffmpeg,使其安全退出
最新推荐文章于 2024-01-15 09:00:00 发布