Link to home
Start Free TrialLog in
Avatar of Safstrom
Safstrom

asked on

How to replace the ordinary windows desktop with a delphi Form

I need to replace the windows desktop with a form I make in Delphi.  That is, I want to excange the registry data in:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Shell= MyDesktop.exe

My question is now, how do I write MyDesktop.exe for it to be a proper desktop? I want to be able to design this desktop using a delphi form, and then be able to start other applications, maybe create windows and such, from this form.
By saying I want it to be a proper desktop I mean that it probably should be created using the functions found in the "Window Station and Desktop Functions" area of the delphi help. CreateDesktop, openDesktop and so on.
The system this is going to run on is windows terminal server nt4 citrix metaframe. When a user connects remotely I want him to be presented with my, custom desktop.
Avatar of D-Master
D-Master
Flag of Palestine, State of image

listening...
ASKER CERTIFIED SOLUTION
Avatar of raidos
raidos

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Safstrom
Safstrom

ASKER

After posting the question  I realized that I might not need a desktop, but rather, as you mentioned, a taskbar replacement. And this actually seems to work. I'd be interested in your taskbar and desktop calls though.

Changing Application to launch is something I would like to do, but my customer wants me to check whether the user logging on is an administrator, in which case an ordinary windows session should start, or if not, my taskbar-thingy should start. So, the first thing my taskbar-application does is to perform this check. As it turned out, I now have problems starting a windows session. I have a vague recollection of having done this by shellExecuting explorer.exe in an rodinary windows environment, but this does not seem to work here.

Regards
/Pelle
Ok, i'll have to look at some backup at home for the Desktop calls..

from our taskbar replacement we can shellexecute explorer.exe and with a bang the Users desktop appears along with the ordinary taskbar...this we do like this:

ShellExecute(0, 'open', PChar(InputBox('Run', 'Program','explorer')), '', '', SW_SHOW);

Works like a charm in NT4 terminal server Metaframe 1.8, and W2K TS Metaframe XP.

I'll be back with more stuff tomorrow...i hope...;P

PS.
  Pelle är du svensk ?

Regards
//raidos

Javisst ar jag svensk.
Sitter i Stockholm och hackar.

Halsningar
/Pelle
Nice, good to see i'm not the only swede using Delphi to make my day.. ;P

I'd like to get intouch with you privately, for exchange of ideas and stuff.
contact me: raidos[snabel-a]bredband.net

Regards
//raidos
This is the code for the Desktop form:

procedure TForm1.WindowPosCh(var Message: TWMWINDOWPOSCHANGING);
begin
  with Message.WindowPos^ do flags:=flags or SWP_NOZORDER;
  Message.result:=0;
end;

This will make form not change it's Z..

About listing applications for the taskbar, there are many components and source code for that...

you could make an enumwindows function and make your own...

and dynamically add buttons to a Coolband or whatever..

Regards
//raidos