1

Microsoft Security Essentialプログラムを開き、VCで[今すぐスキャン]ボタンをクリックします。ウィンドウは見つかりましたが、コントロールが見つかりません。これは私のコードです。このコードを実行すると、Controlnotfoundが表示されます。[プログラムの実行]の[参照]ボタンをクリックしてこのコードをテストしようとしましたが、Microsoft Security Essentialで使用しようとすると、コントロールが見つかりませんでした。なぜこのコントロールがタブにあるのかわかりません。FindWindowEx()の使用方法Microsoft Security Essentialの[今すぐスキャン]ボタンをクリックしますか?

int run_ms(){   

    ShellExecute(NULL, L"open", L"C:/Program Files/Microsoft Security Client/msseces.exe", NULL, NULL, SW_SHOWNORMAL);

        HWND w;
    w=FindWindow(NULL, L"Microsoft Security Essentials");

        if(w==NULL)
                MessageBox(NULL,L"Not found",L"",MB_OK);

        else{
                HWND cb;
                cb = FindWindowEx(w,NULL,NULL,_T("&Scan now"));     

            if(cb!=NULL)
            {
                SendMessage(cb,WM_LBUTTONDOWN, NULL,NULL);
                SendMessage(cb,WM_LBUTTONUP, NULL,NULL);
            }
            else
                MessageBox(NULL,L"Control not found",L"",MB_OK);
        }

            return 0;
}

Microsoft SecurityEssentialのボタン付きのSpy++を使用すると、次のように表示されます

Caption : &Scan now
Class : ALT:BUTTON
I use FindWindowEx() like this cb = FindWindowEx(w,NULL,NULL,_T("&Scan now")); 

しかし、コントロールが見つかりませんでした。

4

1 に答える 1

6

関数は、ウィンドウ階層に「ドリルダウン」しません。FindWindowEx検索するように要求されたものの子ウィンドウのみを調べます。そうは言っても、Microsoft Security Essentials のユーザー インターフェイスのスクリーンショットをざっと見てみると、お探しの [今すぐスキャン] ボタンがメインの Microsoft Security Essentials ウィンドウの直接の子ウィンドウではないことは 99% 確信できます。それがあなたのFindWindowEx呼び出しが失敗する理由です。

Microsoft Security Essentials ソフトウェアへのアクセス権はありませんが、アクセスできると、Spy++[今すぐスキャン] ボタンの親が誰であるかを簡単に見つけることができるはずです: Microsoft Security Essentials ウィンドウまたはそれ自体が子である別のウィンドウMicrosoft Security Essentials ウィンドウの。

于 2013-02-15T18:29:55.373 に答える