시도해보십시오. 가장 우아하고 안전하지는 않지만 (매우 안전하지 않은) 가장 간단한 방법으로 문제를 해결할 수 있습니다. 응용 프로그램에서
이렇게 폐쇄한다 :
DWORD dwProcessID;
HANDLE hProcess, hMutex;
hProcess = GetCurrentProcess();
DuplicateHandle(hProcess, hProcess, hProcess, &hProcess, NULL, TRUE, DUPLICATE_SAME_ACCESS);
// write retrieved handle somewhere in file. let it be "C:\sample.txt"
// ...
hMutex = CreateMutex(NULL, TRUE, L"Look at me! I'm a scarry MUTEX");
//... Your code
// go close your video streams or do whatever you want
// ...
ReleaseMutex(hMutex);
앱에서 :
// so now the distant proc works and you now it
// it is time to terminate it.
HANDLE hMutex, hProcess;
// read hProcess from "C:\sample.txt"
hMutex = OpenMutex(SYNCHRONIZE, FALSE, L"Look at me! I'm scary MUTEX");
WaitForSingleObject(hMutex, INFINITE); //if your "video app" will not release the mutex you will wait forever.
TerminateProcess(hProcess, 0); //that's what you need
뮤텍스는 핵심 개체입니다. 당신은 그것을 소유주가 조작 한 교통 신호등으로 생각할 수 있습니다. 그리고 보행자는 길 건너편에 서기를 원하면 복종해야합니다.
주어진 예에서 2 개 문제가 있습니다.
먼저 파일에 프로세스 핸들을 작성하면 안됩니다. 프로세스 처리 방법 음, here보세요.
두 번째로 내가 전에 말했듯이, 당신이 신이 아니면 영원히 기다릴 수 없습니다. 프로세스가 뮤텍스를 해제하거나 WaitForSingleObject(hMutex, TIME_INTERVAL)
으로 설정해야합니다. TIME_INTERVAL은 (는) DWORD입니다. 그냥 선택하십시오.
답변이 도움이되기를 바랍니다.
닫는 신호 란 무엇입니까? 그 용어는 일반적으로 사용되지 않습니다. 신호에 대해 모두 잊어 버리고 실제로하고 싶은 것을 알려주십시오. –
DLL (실행중인 응용 프로그램) 프로세스를 종료하고 싶지만 종료 전에 응용 프로그램에서 비디오 스트림 기록을 중지해야합니다. – LppEdd
자동화 API를 사용해야하는 것 같습니다. –