다른 응용 프로그램 스레드의 콜백에 문제가 있습니다. Dll은 Addinational 응용 프로그램과 응용 프로그램 사이의 래퍼 중 하나이며 응용 프로그램 메모리 내에서 동일한 PID로 작업합니다. Addinational 응용 프로그램 (다른 스레드와 PID)는 메인 루프에서 "무언가"를 찾고있는 응용 프로그램이며, 발견되면 DLL에서 콜백 함수를 호출 한 다음 응용 프로그램에서 콜백 함수를 호출합니다. 위의 이미지를 조금 혼란스럽게 보일 수도 있습니다. 그리고 프로그래머 충돌 메시지 (DLL은 응용 프로그램에서 콜백 함수를 호출 할 때) : MainProgram.exe에서 0x70786a46에서다른 스레드의 콜백
처리되지 않은 예외 :가 0xc0000005 : 위치 0x00000164 읽기 액세스 위반을. IE를 사용하여
콜 스택 mshtml.dll을
Propably 응용 프로그램은 UI를 업데이트 할 것. Addinational 응용 프로그램 콜백이있을 때 어떻게 UI를 업데이트 할 수 있습니까?
가능하다. 그러나 응용 프로그램이 Vista 이상에서 실행되어야하는지 UIPI를 확인하십시오. – user877329
@ user877329 감사합니다. 하지만 여기서 스레드 동기화를 말하고 있습니다. UIPI (User Interface Privilege Isolation)는 그 문제가 아닙니다. 그래서 SendMessage는 Windows 7까지 훌륭하게 작동합니다. –
PostMessage가 응용 프로그램을 충돌 (이전과 같은 오류), SendMessage가 UI 업데이트 기능에서 멈추고 함수 (응용 프로그램 아님)를 중단했습니다. hwnd = CreateWindow (args)를 통해 메시지를 처리하는 숨겨진 창을 만들고 추가 루프에서 메시지 루프를 시작하고 Proc 함수를 추가 한 다음 SendMessage (hwnd, WM_APP + 101, 0,0); - 어쨌든 UI 업데이트 안함 :/ – user1112008