private static IntPtr GetDesktopListView(){
var hDesktop = IntPtr.Zero;
var hProgman = W32Api.FindWindow("Progman", "");
if (hProgman != IntPtr.Zero){
hDesktop = W32Api.FindWindowEx(hProgman, IntPtr.Zero, "SHELLDLL_DefView",
IntPtr.Zero);
}
if (hDesktop != IntPtr.Zero){
return W32Api.FindWindowEx(hDesktop, IntPtr.Zero, "SysListView32",
IntPtr.Zero);
}
const int WmSpawnWorker = 0x052C;
W32Api.SendMessage(hProgman, WmSpawnWorker, 0, 0);
hDesktop = W32Api.GetDesktopWindow();
IntPtr hShellViewWin;
var hWorkerW = IntPtr.Zero;
do {
hWorkerW = W32Api.FindWindowEx(hDesktop, hWorkerW, "WorkerW", IntPtr.Zero);
hShellViewWin = W32Api.FindWindowEx(hWorkerW, IntPtr.Zero, "SHELLDLL_DefView",
IntPtr.Zero);
} while (hShellViewWin == IntPtr.Zero && hWorkerW != IntPtr.Zero);
return W32Api.FindWindowEx(hShellViewWin, IntPtr.Zero, "SysListView32",
IntPtr.Zero);
}