参考: ちょくとのページ http://chokuto.ifdef.jp/urawaza/mcn/vc_enumwnd2.html VirtualProtect関数ではなくVirtualAlloc関数使用。一部環境でsdim等で確保した領域をVirtualProtect関数で実行属性を付加しても動作しないため(原因はよくわからん)即席で間違ってるかも。
参考: ちょくとのページ http://chokuto.ifdef.jp/urawaza/mcn/vc_enumwnd2.html VirtualProtect関数ではなくVirtualAlloc関数使用。一部環境でsdim等で確保した領域をVirtualProtect関数で実行属性を付加しても動作しないため(原因はよくわからん)即席で間違ってるかも。
// HSP3でのウィンドウ列挙(ウィンドウハンドル)// 参考: ちょくとのページ// http://chokuto.ifdef.jp/urawaza/mcn/vc_enumwnd2.html// VirtualProtect関数ではなくVirtualAlloc関数使用// 一部環境でsdim等で確保した領域をVirtualProtect関数で実行属性を付加しても動作しないため// (原因はよくわからん)#include "kernel32.as"#include "user32.as"#module#deffunc GetWindowList var list, int _maxif _max == 0 : max = 4096 : else : max = _maxVirtualAlloc 0, 12*4, 0x2000/*MEM_RESERVE*/, 0x40/*PAGE_EXECUTE_READWRITE*/VirtualAlloc stat, 12*4, 0x1000/*MEM_COMMIT*/, 0x40/*PAGE_EXECUTE_READWRITE*/pbm = statdupptr bm, pbm, 12*4, 4bm.0 = $0824448b, $8b08488b, $ca3b0450, $c033057c, $8b0008c2, $748b5610bm.6 = $34890824, $08488b8a, $48895e41, $0001b808, $08c20000, $00000000dim list, maxENUMWND_DATA = varptr(list), max, 0EnumWindows pbm, varptr(ENUMWND_DATA)dim bmVirtualFree pbm, 12*4, 0x4000 /*MEM_DECOMMIT*/VirtualFree pbm, 0, 0x8000 /*MEM_RELEASE*/return#globalGetWindowList list, 4096