Я нахожусь в Windows 7 x64 и пытаюсь использовать один и тот же объект Event между двумя процессами, один - приложение vb, а другой - приложение C ++, но кажется, что событие, созданное в одном процессе, не может быть распознано в еще один:
VB
Option Explicit
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Declare Function OpenEvent Lib "Kernel32" Alias "OpenEventW" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, lpName As String) As Long
Const EVENT_ALL_ACCESS = &H1F0003
Sub Testing()
Dim hCallEvent As Long
hCallEvent = OpenEvent(EVENT_ALL_ACCESS, 0, "GUID_Call_Event")
End Sub
Private Sub Form_Load()
Call Testing
End Sub
C ++
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hEvent = ::CreateEvent(NULL, FALSE, FALSE, _T("GUID_Call_Event"));
DWORD dwError = ::GetLastError();
return 0;
}
Теперь, если я запускаю приложение C ++, чтобы создать событие, а затем запускаю приложение vb, чтобы получить это событие, оно просто завершается ошибкой с сообщением об ошибке: «Система не может найти указанный файл».
Примечание:
- При взаимодействии с процессом C ++ произошел сбой как с VB, так и с VBA, но он был успешным между двумя процессами C ++
- Событие, созданное в VB, также невозможно идентифицировать в процессе C ++.
У вас есть идеи по этому поводу?