Я нахожусь в процессе портирования приложения для Windows VCL для Windows, FMX (FireMonkey) в Delphi XE7, и застрял на этом одном вопросе ...Получать сообщения WM_COPYDATA в форме Firemonkey?
Как вы получаете сообщения, такие как WM_COPYDATA на FireMonkey форме ?
У меня есть procedure WMCopyData(var msg: TWMCopyData); message WM_COPYDATA;
в моей части protected
, но сообщение так и не получено. Идентичный код в форме VCL отлично работает. Я понимаю, почему это не работает (FMX не использует петли сообщений Windows?), Не уверен, что с этим делать.
Нет никаких указаний на то, что код VCL здесь * flaky *, потому что у вас нет указаний на то, как он находит дескриптор, которому отправляется WM_COPYDATA. Если он извлекается с помощью 'FindWindow' перед отправкой сообщения, нет ничего плохого в этом; нет причин, чтобы воссозданное окно было проблемой, и ничего * сомнительного * об этом. –
@KenWhite Это не так. Повторное создание окна может произойти между возвратом «FindWindow» и отправкой сообщения в это окно. –
Уверен, что может. И между вызовом FindWindow и отправляемым сообщением может прибыть Armageddon. Если вы используете WM_COPYDATA для связи между приложениями, вы обычно отправляете сообщение, а затем, если вы не получите ответ в течение разумного времени, вы просто отправляете его снова. Тонкий шанс неудачи в редких обстоятельствах не квалифицируется как * flaky * или * dubious *, IMO. –