Как получить хэндл рабочего стола для манипуляций иконками?
Способ первый
function TForm1.GetHandle: HWND;
begin
// Находим нужное окно в три этапа Result := FindWindow( 'Progman', 'Program Manager' );
// Используем FindWindowEx для нахождения дочернего окна
Result := FindWindowEx( Result, HWND( nil ), 'SHELLDLL_DefView', '' ); // SysListView32, это список с иконками на рабочем столе
Result := FindWindowEx( Result, HWND( nil ), 'SysListView32', '' ); end;
|
Способ второй
function TForm1.GetHandle: HWND;
var
s: string;
begin // Находим нужное окно в три этапа
Result := FindWindow( 'Progman', 'Program Manager' ); // Нахождим дочернее окно Result := GetWindow( Result, GW_CHILD );
// Нахождим дочернее окно Result := GetWindow( Result, GW_CHILD );
SetLength( s, 40 );
GetClassName( Result, PChar( s ), 39 );
if PChar( s ) <> 'SysListView32' then Result := 0;
end; |