Wyświetlanie pulpitu

0

Witam!

Moje pytanie jest następujące: W jaki sposób można uruchomić Exploratora Windows (WINDOWS/explorer.exe) tak aby uruchomił się pulpit.

Czyli np. Klikamy Ctrl + Alt + Del, na liscie procesów zabijamy proces explorer.exe(pulpit znika), po czym przechodzimy na zakładke "Aplikacje", klikamy przycisk "Nowe zadanie" i wpisujemy "explorer". Po kliknięciu "OK" pulpit się pojawia ponownie.

I właśnie chciałybym, aby mój program pokazywał pulpit tak jak pokazuje to Menedzer zadań po wpisaniu explorer jako nowe zadanie i kliknięciu "OK". Nie wiem, czy dobrze się wyraziłem(sam się troche pogubiłem :) Wiem, że trzeba użyć funkcji WinExec, ale nie wiem z jakimi parametrami.

Z góry bardzo dziękuje za pomoc, pozdrawiam!

0
uses ShellApi;
...
ShellExecute(Handle, 'open', 'explorer.exe', nil, nil, SW_SHOWNORMAL);
0

Niestety :( to nie działa, uruchamia się plik z którego wywołuje tą funkcje, ale dzięki za chęci, pozdro

0

GetDeskTopWindow jako uchwyt pulpitu

0

w 98 to by bylo jakos tak ale czy na XP bedzie dzialac nie wiem, ale mozesz sprobowac:

ShellExecute(Handle, 'open', 'explorer.exe', '.', nil, SW_SHOWNORMAL);

zawsze mozesz tez pobrac sciezke do pulpitu:
http://k8.hopto.org/~msoft/forum/cms_view_article.php?aid=40

0

Raczej nie da się tego zrobić - explorer sprawdza, czy jest uruchomiony; jeśli tak to pokazuje okno Eksploratora, jeśli nie, to dopiero pulpit.

[DOPISANE]

Jeśli cię źle zrozumiałem, to mnie popraw: chcesz pokazać w programie eksploratorowe okno pulpitu, a nie w programie własne okno z treścią puliptu.

0

Piotrkowi chodzi o to że: jeśli zamknie proces explorer.exe to znika pulpit.
Ponowne uruchomienie procesu explorer.exe powoduje iż ładowany jest pulpit na nowo. W tym problem że jak wspomniał Szczawik, explorer sam się ładuje ponownie, więc jeśli już jest uruchomiony proces explorer.exe to ponownego jego uruchomienie powoduje otwarcie folderu.

0

ja wiem jak to zrobic.
najpierw zabij proces explorer.exe a pozniej zmien wpis w rejestrze np. tak:

Procedure powloka(start:boolean);
begin
 Reg := TRegistry.Create;
 try
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', false);
  if start = true then Reg.Writestring('Shell', application.ExeName)
  else Reg.Writestring('Shell', 'Explorer.exe')
 finally
  Reg.Free;
 end;
end;

wywolanie

powloka(true);

powoduje ze explorer automatycznie sie nie laduje ponownie
pamietaj oby w procedurze formclose wpisac

powloka(false);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0