2016-04-12 15 views
0

SHELLDLL_DefViewへのハンドルを取得しようとしています。WinApi - SHELLDLL_DefViewの入手方法

だから、私はこのコードを持っています。私はスライドショーにWindowsデスクトップbrackgroundに変更されるまで

HWND hProgman = FindWindow(L"Progman", NULL); 
HWND hWnd = FindWindowEx(hProgman, 0, L"SHELLDLL_DefView", NULL); 

Eveyrtihingは、[OK]を動作します。その後、ウィンドウのspy ++階層で検索すると、SHELLDLL_DefViewには別の親があります。これは#32769(デスクトップ) - > WorkerW - > SHELLDLL_DefViewです。だから私はそれを見つけることができません。問題は、私がしようとすると、SHELLDLL_DefViewより

HWND desktop = GetDesktopWindow(); 
HWND hWnd = FindWindowEx(desktop , 0, L"WorkerW", NULL); 
HWND hWnd = FindWindowEx(hWnd, 0, L"SHELLDLL_DefView", NULL); 

が見つからないということです。 WorkerWはい。

誰でも手伝いできますか?

+0

なぜこれを見つける必要がありますか?シェルには豊富な自動化インターフェースがあります。あなたの要件を満たしていないと評価しましたか? – IInspectable

+0

SHELLDLL_DefViewに処理する必要があります –

+0

*「Xを見つける必要があるためXを見つける必要があります」*は質問に対する答えではありません。 – IInspectable

答えて

0

回答が見つかりました。すべてのWorkerWを反復処理する必要があります。

HWND destop = GetDesktopWindow(); 
HWND hWorkerW = NULL; 
HWND hShellViewWin = NULL; 
do 
{ 
    hWorkerW = FindWindowEx(destop, hWorkerW, L"WorkerW", NULL); 
    hShellViewWin = FindWindowEx(hWorkerW, 0, L"SHELLDLL_DefView", 0); 
} while (hShellViewWin == NULL && hWorkerW != NULL); 
関連する問題