これで動くかわかりませんが
直接親ウィンドウにLBN_SELCHANGEを送る方法です。
ウィンドウハンドルの取得に関しては省略してあります。
#define global WM_COMMAND 0x0111 // オブジェクトからメッセージが送られた
#define global LB_SETCURSEL 0x0186 // リストボックス選択インデックス設定
#define global LBN_SELCHANGE 0x00000001 // リストボックスの選択が変更された
#define global GWL_ID -12 // ウィンドウの識別子を取得
#uselib "user32.dll"
#cfunc GetWindowLong "GetWindowLongA" int, int
// 省略
// p_hwnd; // 親ウィンドウのハンドル
// lb_hwnd; // リストボックスのハンドル(lParam値にもなる)
lb_id = GetWindowLong( lb_hwnd, GWL_ID ); // リストボックスのウィンドウの識別子
wp = (LBN_SELCHANGE << 16) | (lb_id & 0xFFFF); // wParam値
// 約1秒ごとにリストボックスのインデックスを変更する
send_idx = 0; // 送信するリストボックスのインデックス
*main
sendmsg lb_hwnd, LB_SETCURSEL, send_idx, 0; // リストボックスにLB_SETCURSELを送信
sendmsg p_hwnd, WM_COMMAND, wp, lb_hwnd; // 親ウィンドウにWM_COMMANDを送信
wait 100; // 約1秒待機
// リストボックスのインデックスを0〜2の範囲におさめる
send_idx++;
send_idx \= 3;
goto *main;