2013-10-02 68 views
0

我正在調試一個32位端口到64位平臺。有一個錯誤會導致其中一個窗口沒有正確響應64位版本的消息。所以我將它們並排運行並試圖在它們上使用Spy ++。Spy ++ 32和64位不允許同時運行。爲什麼?

原來,你不能在64位應用程序上使用Spy ++ 32,反之亦然。同樣,你不能同時運行Spy ++ 32和64位版本。

這是怎麼一回事,我該如何解決這個問題。是否有可以攔截32位和64位版本的消息的等價物?

回答

3

間諜使用消息掛鉤來攔截消息。消息掛鉤必須位於DLL中,並且不能將32位DLL加載到64位進程中(反之亦然)。至於不能同時運行兩個版本,我懷疑這是因爲鉤子DLL使用相同的方法發送到應用程序,所以你只能運行一個應用程序。

實現一個攔截器將是非常困難的,原因有二:

  1. SetWindowsHookEx不允許32位應用程序設置在64位進程(反之亦然)掛鉤,所以你需要兩個exes(和兩個dll)來實現這一點,以及一些IPC機制來將結果傳遞給一個通用主機;
  2. 掛鉤需要快速(以最小化影響),大多數IPC機制會太慢。
+0

換句話說,Spy ++ 32和64位使用的DLL是同一個嗎?嗯,似乎這是一個執行錯誤。 – Adrian

+0

@Adrian不,Spy對32位和64位進程使用單獨的DLL。 –

+0

然後,爲什麼會同時運行兩個問題? – Adrian

相關問題