デバッガーでプログラムを実行中に F12 キーを押すと、実行が中断され、デバッガーが開きます。これは、Windows XP (D2007 および XE2 でテスト済み) では正しく動作しますが、Windows 7 および 8 では失敗します (D2007 および XE2 でもテスト済み、3 台のコンピューターでテスト済み)。
レジストリが正しく設定されている (Windows 7):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug] "UserDebuggerHotKey"=dword:00000000 "Debugger"="\"C:\Windows\system32\vsjitdebugger.exe\" -p %ld -e %ld"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\AutoExclusionList] "DWM.exe"=dword:00000001
XP のインストールでは、"Auto"="1" も設定され、AutoExclusionList が省略されますが、これらの変更を Windows 7 マシンに複製しても、何も達成されません。
奇妙なことに、Delphi は F12 が押されたことを認識しているようです。Windows 7 マシンのデバッガーでプログラムを実行して F12 キーを押すと、Delphi のイベント ログ ウィンドウに次のように表示されます。
スレッドの開始: スレッド ID: 4080。Project73.exe の処理 (7108)
スレッドの終了: スレッド ID: 4080。Project73.exe の処理 (7108)
ブレークポイントがトリガーされず、アプリケーションが実行され続けるだけです。
Windows 7/8 でこの機能を復元する方法を知っている人はいますか?