Tonboさん、こんにちは。福士と申します。
> Delphi XE8のIDE上で動作していたメッセージ通信が、Delphi 10.4のIDEでは動作し
> ません。
> 【不具合現象】
> 〇受信側をIDE上で実行する。
> 送信側をEXEで実行し、Button1を押しても受信側は無反応。
手元の環境で提示されたコードを試してみましたが、特に問題なく
動作しますね。WM_COPYDATA受信処理に仕掛けたブレークポイントも
機能します。
検証した環境は以下の通りです。
Windows 10 Pro 21H1 (x64)
Delphi 10.4.2
ビルド構成: Debug
ターゲットプラットフォーム: Windows 32ビット
とすると考えられるのは高木さんの指摘するようにプログラムの
実行権限(整合性レベル/IL)の問題でしょうか。Windows Vista以降では
ILが自分より高いプロセスに対して働きかけができないようになって
います。ILは何もしないと基本的に子プロセスに対し継承されるため、
DelphiのIDEを管理者権限(IL=High)で実行していると、デバッグ実行
しているプログラムもまた管理者権限で実行されることとなり、
通常起動したプログラム(IL=Medium)からはWM_COPYDATAを送ることは
できない、ということになります。
---
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:
fuk...@tts-inc.co.jp