Jump to content

Add 'Find Target' to Right Click...


Oh_Kay

Recommended Posts

C:\WINDOWS\system32\cmd.exe /c @echo off&for /f "delims=" %? in ('cscript //nologo C:\WINDOWS\system32\GeTarget.vbs ""') do start "" explorer.exe /select, "%~?"

I see it now from yours and wonder how that happen, I'm missing the double %% in two places. I copied your stuff and pasted in a cmd file instead of run. The double %% is in the cmd file. Strange

Wanted it in a cmd file for my Unattends

Works when I set it like yours manually. Maybe I better export that reg instead of cmd

Edited by maxXPsoft
Link to comment
Share on other sites

  • 10 months later...

  • 5 months later...

Here's a script I made for this.

'Filename:		FindTarget.vbs
'Description: Simulates 'Find Target' button in shortcut properties dialog.
'Created by: Danp129
'@yahoo.com
'Usage: Double click FindTarget.vbs and click 'Yes' to register file.
' Right click a shortcut and click 'Find Target'

' If previous 'Find Target' context menu exists it can backup old
' setting to backup.txt in same path this file is executed from.

option explicit
Dim objShell, sAppPath, ret, sNewRegVal
Const ForAppending = 8

Set objShell = CreateObject("WScript.Shell")

sNewRegVal = "cscript /nologo """ & Wscript.ScriptFullName & """ ""%1"""
sAppPath = Mid(Wscript.ScriptFullName, 1, InStrRev(Wscript.ScriptFullName, "\") - 1)

if WScript.Arguments.count > 0 then
'Script was called from context menu

call FindTarget
else
'Script was not sent arguments, was likely double clicked on
if sNewRegVal<>GetCurRegVal or isnull(GetCurRegVal) then
'Ask user if they wish to add Find Target context menu
ret=msgbox("Register this file as your 'Find Target' handler?", vbYesNo, "Add 'Find Target' context menu?")
if ret=vbYes then
'Call sub to create context menu using this file to handle requests
call CreateContextMenu
end if
else
msgbox "This file is already registered to handle 'Find Target' context menu." & vbcrlf & _
vbcrlf & "To use, simply right-click a shortcut and click 'Find Target'.", vbOKOnly, "Incorrect use"
end if
end if

Set objShell = nothing


Sub FindTarget()
Dim sMainFile, sCmd, sArgs, sPath, arArgOverride, sArgOverride, i, fso, arTmp, sTmp

'Specify lower-case exe files to check if an argument exists
' and should attempt to browse to the argument if it's a
' valid path instead of executable
'Use pipe "|" to seperate files
' e.g. ("notepad.exe|anotherapp.exe")
arArgOverride=split("notepad.exe")

'Shell command for explorer.exe
sCmd = "explorer.exe /select,"

'Main file the link refers to e.g. notepad.exe in 'c:\windows\notepad.exe c:\file.txt'
sMainFile=lcase(CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)).TargetPath)

'Additional arguments in link e.g. c:\file.txt in 'notepad.exe c:\arg.txt'
sArgs=CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)).Arguments

'Check to see if we should browse to arg if specified, if so set blnUseArg to true
if sArgs <> "" then

'get filename only
arTmp=split(smainfile, "\")
sTmp=arTmp(ubound(arTmp))

'Search override filenames for a match
for i = 0 to ubound(arArgOverride)
if sTmp=arArgOverride(i) then
'Create FSO object
Set fso = CreateObject("Scripting.FileSystemObject")

'Remove quotes and leading spaces from args or fso.FileExists will fail
sArgs=trim(replace(sArgs, """", ""))

'See if args is a valid path
if fso.FileExists(sArgs) or fso.FolderExists(sArgs) then
'Use args for path
sPath=sArgs
end if
exit for
end if
next 'iArgO

'Use main file if args was not a valid path
if sPath="" then sPath=sMainFile
else
'No arguments in the shortcut.. Use main file for path
sPath=sMainFile
end if

'Have Explorer open folder containing path
objShell.Run sCmd & sPath

set fso=nothing
end sub

sub CreateContextMenu()

Dim sRegKey, fso, sBackupFile, oTextFile
sBackupFile=sAppPath & "\" & "backup.txt"

sRegKey = GetCurRegVal
if not isnull(sRegKey) then
'Add some prompts to backup current value
if sRegKey<>sNewRegVal and sRegKey<>"" then
ret=msgbox("'Find Target' context menu already exists, would you like to backup the current setting before making changes?", vbYesNoCancel, "Backup current settings?")
if ret=vbCancel then exit sub
if ret=vbYes then
'Save current value to text file, append if backup already exists.
Set fso = CreateObject("Scripting.FileSystemObject")
set oTextFile = fso.OpenTextFile(sBackupFile, ForAppending, true)

oTextFile.Writeline sRegKey
oTextFile.Close
set fso=nothing
set oTextFile=nothing
end if
end if
end if

'Write to registry
objShell.RegWrite "HKCU\Software\Classes\lnkfile\Shell\Find Target\command\", sNewRegVal, "REG_SZ"
end sub

function GetCurRegVal
on error resume next
GetCurRegVal=objShell.RegRead("HKCU\Software\Classes\lnkfile\Shell\Find Target\command\")
if err.number <> 0 then
GetCurRegVal=null
end if
on error goto 0
end function

Link to comment
Share on other sites

  • 9 months later...

I've found the 100% cure with a simple reg tweak constructed exactly like it needs to be with no dll.

I'll not disclose it now since its part of my new tweaking program soon to release.

If Oh_Kay still interested then msg me so you can beta the tweak

Edited by maxXPsoft
Link to comment
Share on other sites

  • 1 month later...

Windows Registry Editor Version 5.00

;Note for the Find Target to work you need a default Open unknown files.

;This adds Open w/Notepad if you don't already have something set. Comment out if you do.

[HKEY_CLASSES_ROOT\*\shell\open]

@="Open w/Notepad"

[HKEY_CLASSES_ROOT\*\shell\open\command]

@="notepad.exe \"%1\""

[HKEY_CLASSES_ROOT\*\shell\Find Target...\command]

@="explorer.exe /select, \"%1\""

Vista has 'Open file location' on its right click.

Edited by maxXPsoft
Link to comment
Share on other sites

  • 1 year later...

Sorry I missed your post and offer to beta your code MaxXPsoft, for some reason I didn't get a notification of a reply to this thread...

Well here we are again... another reinstall, looking to add the same feature back that started this thread in the first place, and goole brought me right here!

Your updated version is much better now that no dll is required !

It shall have pride of place on my next unattended...

Thanks to everyone that responded to my original question, and especially to you maxXPsoft, nice to see your still around too ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...