Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win


Right Click Context - Passing Parameters

Posted on 1998-07-11
Medium Priority
Last Modified: 2011-09-20
hi all

I would like to know the exact steps in producing the following:

By right-clicking on a drive, .lnk, .exe, .dll or any other file or icon, the explorer popup menu shows me a menu selection called 'testing sxh'.

When 'testing sxh' is selected, the resultant selected object's parameters are passed to a program which displays a form showing the object name and it's path.

Also i would like to know the exact registry entries (shell, shellex etc) and any CLSID keys.

The receiving program must be a .exe and not a .dll

:edited text:
Must be Delphi 3 for win95/win98
:end edited text:

awaiting your comments


Question by:sxh
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
  • 3
  • 2

Author Comment

ID: 1357723
Edited text of question

Expert Comment

ID: 1357724
An example of how to create a shell context handler is shipped with Delphi 3. Just take a look at the samples. I think the project in question is located somewhere in the Shell Extensions subfolder.


Author Comment

ID: 1357725
hi Freter

I looked at the samples available before posting this question and found that:

1. they are both .dll files with exported functions

2. the contmenu.dpr only compiles dpr files when selected, it  does not support selection of any type of object.

3. the copyhook.dpr just hooks into some standard file  processing features.

4. the projects have pre-made .reg files created which do not say why the keys included are being used and for what purpose, eg where would i place a key ContextMenuHandler for .lnk files.

What parameters would i need to specify in the shell\command value, I have seen some that say;
     myprog.exe /idlist, "%1", "%L".

what does the /idlist mean, is it something to do with enumeration of the IDLIST ?.



What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.


Accepted Solution

nova666 earned 2000 total points
ID: 1357726
You must add some registry entries (.REG file syntax):


@="Testing SHX"

@="c:\\shellext.exe \"%1\""

Same like '*' for 'Drive', 'Directory' and 'InternetShortcut'.
(These items don't display the extension when it is only registered for '*', and maybe some others also don't do.)

Then you need to write the program. It puts the ParamStr(1) into a TLabel's Caption or a TEdit's Text property, which is on a form.

That's it!

Example at http://www.geocities.com/~jmehnle/shellext.zip
(The example automatically registers the shell extension, read the README.TXT and view the source!)


Author Comment

ID: 1357727
Thanks nova666

That answered my question and I award you the points.

There is one question though, when a .lnk file is selected, it shows the name of the penultimate file and not the .lnk file name and path. eg .lnk = myprog.lnk -> myprog.exe, the program shows myprog.exe not myprog.lnk.



Expert Comment

ID: 1357728
You can of course add the registry settings for 'lnkfile', too:

@="Testing SHX"

@="c:\\shellext.exe \"%1\""

If you do so, the option "Testing SHX" appears twice in the context menu, one time for the .LNK file itself, and another time for the file the shortcut points to. I don't know how to turn this off..... sorry!



Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
Suggested Courses

636 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