?
Solved

How to replace the ordinary windows desktop with a delphi Form

Posted on 2003-10-23
9
Medium Priority
?
442 Views
Last Modified: 2010-04-05
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.
0
Comment
Question by:Safstrom
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
9 Comments
 
LVL 3

Expert Comment

by:D-Master
ID: 9607606
listening...
0
 
LVL 3

Accepted Solution

by:
raidos earned 2000 total points
ID: 9612492
I've been involved with making a similar project.

However we did not change the shell, we simply changed Application to launch from "" to "MyDesktop.exe" in the ica client, it should be the same i guess...

We did not use any "Window station or desktop functions" to get where we wanted to go.

the Shell can actually be substituted for any windows application...atleast that's what my memory tells me.

Our project was only a simple taskbar replacement thingy...with no desktop...

however I have a vague recollection of doing a shell replacement application earlier aswell...and as i remember that you will need to have 2 forms, one for the background desktop and one for the taskbar.
Set the taskbar form to topmost and the desktop form to lock on lowest z-order...don't remember the exact calls, but i believe i have them stored away if this is something you are interested in.

Regards
//raidos
0
 

Author Comment

by:Safstrom
ID: 9612717
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
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Expert Comment

by:raidos
ID: 9612846
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

0
 

Author Comment

by:Safstrom
ID: 9613269
Javisst ar jag svensk.
Sitter i Stockholm och hackar.

Halsningar
/Pelle
0
 
LVL 3

Expert Comment

by:raidos
ID: 9614373
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
0
 
LVL 3

Expert Comment

by:raidos
ID: 9625591
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

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses
Course of the Month11 days, 14 hours left to enroll

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question