"Przyklejenie" formy do pulpitu na windows 7

"Przyklejenie" formy do pulpitu na windows 7
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Witam!

Używałem Windows.SetParent(Handle, FindWindow('Progman', nil)); aby "przykleić" swoją formę do pulpitu. Na Windows XP działało to bez zarzutów. Jednak na Windows 7 forma znika, jest niewidoczna. Wie ktoś jak uzyskać ten efekt na Win 7?

EDIT:
Tutaj jest chyba odpowiedź, ale nie mam konta: http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26783723.html

Pozdrawiam.

edytowany 1x, ostatnio: Max1414
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Wklej ten url http://www.experts-exchange.co[...]/Pascal/Delphi/Q_26783723.html do paska wyszukiwania google i wejdź przez link z google, a zobaczysz całą treść postów bez konta.


Pozdrawiam.
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Robiłem tak zanim napisałem i nie działa ;p

olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
1

Może wyczyść Historię odwiedzin ExpertsEchhange i ciasteczką związane z tą stroną. U mnie działa ok. Trzeba dokładnie wkleić caly ten adres jak podałeś:
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_26783723.html
Bo jeźeli chodzi o Accepted Solution to chyba zawsze jest utajniona, ja widze inne odpowiedzi poniżej. Jednak nie ma tego jak łatwo wkleić. W odpowiedziach są takie odpowiedzi i kody:

Thommy:
31/01/11 02:36 PM, ID: 34756591
Windows 7 desktop structure:
Win 7 Desktop is a "big" window containing all other windows (like MDI childs).
This window also contains some kind of a listview (ViewStyle vsIcon), which display the desktop icons

Sorry, have no Delphi available at the moment to test my code, but try this to get the desktop listview...

Kopiuj
function GetWin7ListView: HWnd;
var
  TheHandle:HWnd;
begin
   TheHandle := FindWindow('Progman', 'Program Manager');
   if not (TheHandle = 0) then
   begin
     TheHandle := FindWindowEx(TheHandle, 0, 'SHELLDLL_DefView', '');
     if not (TheHandle = 0) then
     begin
       result := FindWindowEx(TheHandle, 0, 'SysListView32', '');
       exit;
     end;
   end;
   result := 0;
end;

I następna:

and also try that...

Kopiuj
function GetWin7ListView: HWnd; 
begin
  result := GetWindow(GetWindow(FindWindow('Progman',nil),GW_CHILD),GW_CHILD);
end;

Pozdrawiam.
edytowany 2x, ostatnio: olesio
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Heh, to widzę, chodziło mi o tą "accepted". Niestety ten sposób już wcześniej sam przetestowałem, podpięcie się do pulpitowego ListView nic nie daje - nie widać formy.

Ta forma normalnie jest, jak przejadę "łapaczką uchwytów" z Winspector Spy po pulpicie to znajdzie mi to okno (tzn. wg. mnie, że jest ono na wierzchu, więc wersja że ukryło się gdzieś pod chyba odpada), tyle że jest niewidoczne gdy jest ustawione jako "dziecko" pulpitu. Próbowałem w Winspectorze zmieniać style okna, ale nic nie pomaga.

Problem rozgryziony: nie można przypiąć do pulpitu formy z ustawionym AlphaBlend. Wie ktoś jak to zrobić?

edytowany 3x, ostatnio: Max1414

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.