SendMessage

 先日の話。某場所でいわゆる「祭り」がありました。
時間がちょっと遅くなってて眠いのでSendMessageでブラウザを定期的にリロードさせて朝、キャッシュを見よう、と思っておもむろにBCB起動。
ところが、うごかんのよねえ・・・。
FindWindow()は成功しているのにSendMessageで送れてない模様。
いろいろグぐってたらDelphiのページで解決策が。
なんで解決するのかを調べるには眠すぎでとにかくこれで望むものが出来た!
と思いスレをのぞくと・・・
「次が最後の一枚です」
・・・OTZ・・・。

コードはこんな感じ

        void ReloadIE(){
                const char* h="XXXXX - MicroSoft Internet Explorer";
                HWND hoge=FindWindow(NULL,h);
                if (hoge){
                        SetForegroundWindow(hoge);
                        //SendMessage(hoge, WM_KEYDOWN, VK_F5, 0); //←なぜか動かない。
                        
                        keybd_event(VK_F5, 0, 0, 0);//←動くコード
                        keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);//動くコード

                }
        }

VCLのWIN32APIラッピング周りのバグ?

MMORPGとかでマクロツール作るときに思い出そうw

 追加と訂正(02/08)
 PostMessage(hoge,WM_KEYDOWN,VK_F5,0);
 PostMessage(hoge,WM_KEYUP,VK_F5,0);
で、SetForegroundWindow();はいらないのであった。
これで動くのであった。
そらそうか。キー入力なんて非同期だもんな。
俺ってアホやってんなぁなぁなぁなぁ
なぁなぁなぁ