0

を使用して名前付きイベントを作成するプロセスがあります::CreateEvent

私のプロセスでは、イベントが存在するかどうかを確認したいのですが、存在しない場合に備えてイベントを作成したくありません。

どうすればいいですか?

私はこのようにすることができますが、イベントが存在しない場合はイベントが作成されます:

HANDLE hEvent;
hEvent= ::CreateEvent(NULL, FALSE, FALSE, _T("MyEvent"));
if (::GetLastError() != ERROR_ALREADY_EXISTS)
{
   .......
}
4

2 に答える 2

3

OpenEventイベントがまだ存在しない場合はイベントを作成しないため、コードはすでにほとんど目的を果たしています。NULLエラー コードを確認する前に、イベント ハンドルを確認する必要があります。

HANDLE hEvent;
hEvent= ::OpenEvent(FALSE, FALSE, _T("MyEvent"));
if (!hEvent) // event does not already exist, or other problem
{
   .......
}
于 2012-06-11T10:07:37.250 に答える
1
CString csHandleName = "hEvent";
int nHandleinc(0);
HANDLE hHandleEvent = NULL;
while(!hHandleEvent)
{
    csHandleName.Format("hEvent%d",nHandleinc);
    hHandleEvent = CreateEvent(NULL,TRUE,false,csHandleName);
    if (GetLastError() == ERROR_ALREADY_EXISTS ) 
    {
    CloseHandle( hHandleEvent ); 
    hHandleEvent = NULL;
    }
    nHandleinc++;
}
于 2013-02-13T10:23:40.580 に答える