オーナー の ウィンドウハンドル を取得するスクリプトを組んでいるのですが。
何故か 先頭のウィンドウを受け取った後で列挙が止まってしまいます。
どうやら関数のポインタを実行しなければ、正常に全て列挙されるようです。
最終的には SendMessageA のポインタを GetWindowThreadProcessId に置き換えて
スクリプトの最適化を行うつもりです。
どなたか原因が解りますでしょうか?
もし解りましたらよろしくお願いします。
#include "my_module\\system\\process_module.as" #include "kernel32.as" #include "user32.as" //--------------------------------------- /*c言語のスクリプトとそれに対応する バイナリデータ*/ /* #include <windows.h> typedef struct { UINT msg; LRESULT (*sm)(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam); HWND hwnd; } EW_DATA; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { EW_DATA* ewd=(EW_DATA*)lParam; ewd->sm(ewd->hwnd,ewd->msg,0,(LPARAM)hwnd);//SendMessageA 関数のPointerを実行 return TRUE; } */ ewproc =0x81ec8b55,0x0000ccec,0x57565300,0xff34bd8d,0x33b9ffff,0xb8000000,0xcccccccc,0x458babf3,0xf845890c,0x458bf48b ewproc(0x000a)=0x006a5008,0x8bf84d8b,0x458b5211,0x08488bf8,0xf8558b51,0xff04428b,0x10c483d0,0x00e8f43b,0xb8000000,0x00000001 ewproc(0x0014)=0x815b5e5f,0x0000ccc4,0xe8ec3b00,0x00000000,0xc25de58b,0x0008 #define BUFFSIZE_EWPROC 0x00000066 //--------------------------------------- dim res VirtualProtect varptr(ewproc) , BUFFSIZE_EWPROC , 0x40 , varptr(res) RegisterWindowMessage "enumwindowproc_callback" MY_WM_TEST = stat prm = MY_WM_TEST , varptr(SendMessageA) , hwnd oncmd gosub *oncmd_my_wm_test , MY_WM_TEST EnumWindows varptr(ewproc),varptr(prm) stop *oncmd_my_wm_test mes lparam return