В 32-битном управляемом приложении я использую Proecess.Start для загрузки 64-битного .Net-приложения.После этого я PostMessage () из 32-битного приложения в 64-битное приложение с помощью MainWindowHandle.Проблема в том, что при вызове PostMessage () я получаю сообщение об ошибке «При вызове функции PInvoke« xxxx :: PostMessage »разбалансирован стек ...» После нажатия кнопки «продолжить» все работает нормально.Я использую VS 2017. Если я перевожу 32-битное приложение в 64-битное, нет проблем.Также у меня не возникает проблемы при запуске 32-битного приложения вне VS.Оба приложения в C #.Могу ли я просто снять флажок PInvokeStackImbalance в MDA или мне следует о чем-то «беспокоиться»?
Спасибо
Ниже приведен код в форме для запуска клиентского приложения, закрепите его основнойсформировать и установить дескриптор текущей формы для клиентского приложения.
private const int SEND_HANDLE = WM_USER + 101;
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
private static extern bool PostMessage(IntPtr hwnd, uint Msg, long wParam, long lParam);
private void DoDock()
{
ProcessStartInfo psi = new ProcessStartInfo("test.exe");
psi.Arguments = "";
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
pDocked = Process.Start(psi);
while (hWndDocked == IntPtr.Zero)
{
pDocked.WaitForInputIdle(1000);
Thread.Sleep(100);
pDocked.Refresh();
if (pDocked.HasExited)
return;
hWndDocked = pDocked.MainWindowHandle; //cache the window handle
}
PostMessage(hWndDocked, SEND_HANDLE, this.Handle.ToInt32(), 0);
}