Если я правильно понял ваш вопрос, вы внедрили DLL в процесс и хотите связаться с ним через какой-нибудь внешний EXE.Вы можете использовать стандартные методы IPC (Межпроцессное взаимодействие) здесь.Я знаю, что ссылка не должна публиковаться сама по себе, но IPC в Windows - слишком широкая тема, чтобы ее можно было полностью охватить без копирования и вставки из связанной статьи.
Я сделал то же самое, что вы пытаетесь здесь, иИспользовал именованный трубопровод и Копирование данных через WM_COPYDATA для IPC.Тем не менее, была особая причина, по которой я использовал каждую форму IPC, поэтому нам действительно нужно больше понять из вашей проблемной области, прежде чем рекомендовать одну.
То, что вы делаете, это то, что вы вызываете CreateThread дляфункция, которую вы привели к LPTHREAD_START_ROUTINE, что означает, что она должна указывать на обратный вызов ThreadProc .Ваша текущая подпись void WINAPI ()
не соответствует требуемой DWORD WINAPI (LPVOID)
.
Если все, что вам нужно сделать в DLL - это пересылать сообщения, возможно, она будет выступать в качестве прокси для сообщений.
- Сделайте, чтобы DLL создала невидимое окно
- Передайте дескриптор окна исходному процессу
- Пусть исходные процессы отправляют сообщения в это окно
- DLLполучит эти сообщения и сможет затем переслать их в окно назначения
Однако, если это все, что вам нужно сделать, тогда вообще не нужно иметь DLL в середине.Вот почему я говорю, что нам нужна дополнительная информация о вашей проблемной области.
Если вы пытаетесь получить что-то в форме исполняемого файла, который внедряет DLL, затем связывается с DLL, и DLL связывается обратно, выВозможно, вы захотите взглянуть на проект , над которым я работал некоторое время назад.Это делает именно это.