#193782 - 2009-05-12 12:17 PM
Re: humm maybe a newbe question : )
[Re: joselino]
|
Mart
KiX Supporter
Registered: 2002-03-27
Posts: 4672
Loc: The Netherlands
|
Gold platter time
There is the WSHShortcut UDF that can do that for you.
The script below creates a shortcut in the Favorites folder for Google.
Break on
$userprofile = ExpandEnvironmentVars(%userprofile%) + "\Favorites\"
$rc = wshShortcut($userprofile + "Google", "http://www.google.com")
;=-=-=-=-=-=-=-=-= DO NOT MODIFY ANYTHING BELOW THIS LINE. =-=-=-=-=-=-=-=-=
;=-=-=-=-=-=-=-=-= THIS IS A UDF AND IT COMES READY FOR USE AS IT IS. =-=-=-=-=-=-=-=-=
;
; wshShortCut(),
;
;Authors and Contributors:
; Shawn, Radimus, Al_Po,
; Richard Farthing, NTDOC
;
;Version:
; 1.3.4
;
;Action:
; Creates Shortcuts for files or Web pages
;
;Syntax:
; wshShortCut($shortcutname,$targetpath,optional $arguments, optional $startdir, optional $iconpath, optional $style, optional $Description)
;
;Parameters:
; SHORTCUTNAME Required. Name of Shortcut. If path is omitted, will be saved to desktop.
; TARGETPATH Required. The path the target point to. To ommit checking if path exists in the function, append the target path
; with ",1"
; ARGUMENTS Optional. Arguments appended to TARGETPATH
; STARTDIR Optional. Working Directory
; ICONPATH Optional. Path to Icon Library. To specify an icon other than the first, separate the icon path with
; ",#" where # represents the icon in the library.
; STYLE Optional. 1 = default, 3 = maximized window, 7 = minimized window
; DESCRIPTION Optional. Description or Comment about Shortcut
; HOTKEY Optional. Keyboard Hotkey. (Note: Shortcut must be saved to desktop or startmenu for Hotkey to function)
;
;Remarks:
; wshShortCut 1.3.4
; - Dimmed undimmed var
; wshShortCut 1.3.3
; - Added option to bypass TARGETPATH exist check on LNK shortcuts. Add ,1 to the end of your Targetpath to bypass
; See Example below.
; wshShortCut 1.3.2
; - Included Option for HotKey(.hotkey)
; wshShortCut 1.3.1
; - Bug Fixes when creating URL shortcuts
; wshShortCut 1.3
; - Attempts to create directory structure to shortcut if it does not exist
; wshShortcut 1.2:
; - Support for NoVarsinStrings
; - Checks for existence of TargetPath in .lnk files
; - Included option for Description (.description)
; wshShortcut 1.1:
; - fixes a logic bug in wshShortCut 1.0 so you can use more than icons 0-9 in a icon library on URLS.
; - Unless path is explicity stated in $ShortCutName, icons are created on the desktop
; - If .lnk or .url is omitted, UDF tries to determine the shortcut type, but defaults to .lnk if it can't figure it out.
; wshShortCut 1.0
; http://www.kixtart.org/ubbthreads/showfl...=true#Post81769
;
;Examples:
; $=wshShortcut("KiXtart Web Page","http://www.kixtart.org")
; $=wshShortcut("Notepad","%systemroot%\system32\notepad.exe")
; $=wshShortcut$=wshshortcut("Server1","\\Server1,1")
Function wshShortCut($shortcutname, $targetpath, optional $arguments, optional $startdir, optional $iconpath, optional $style, optional $description, optional $hotkey)
Dim $shell, $desktop, $shortcut, $index, $iconinfo, $iconindex, $scdir, $rc
$wshshortcut = 1
$shell = CreateObject("wscript.shell")
If $shell
If UCase(Right($shortcutname, 4)) = ".URL" Or UCase(Right($shortcutname, 4)) = ".LNK"
;do nothing
Else
If UCase(Left($targetpath, 5)) = "HTTP:" Or UCase(Left($targetpath, 6)) = "HTTPS:" Or UCase(Left($targetpath, 4)) = "FTP:"
$shortcutname = $shortcutname + ".url"
Else
$shortcutname = $shortcutname + ".lnk"
EndIf
EndIf
If InStr($targetpath, ",")
$targetpath = Split($targetpath, ",")[0]
Else
If InStr($shortcutname, ".lnk") And Not Exist($targetpath)
Exit 2
EndIf
EndIf
If InStr($shortcutname, "\") = 0
$Desktop = $shell.SpecialFolders("Desktop")
$shortcutname = $desktop + "\" + $shortcutname
Else
$scdir = SubStr($shortcutname, 1, InStrRev($shortcutname, "\"))
If Not Exist($scdir)
MD $scdir
If @error
Exit @error
EndIf
EndIf
EndIf
$shortcut = $shell.createshortcut($shortcutname)
If $shortcut
$shortcut.targetpath = $targetpath
If $iconpath And InStrRev($shortcutname, ".lnk")
$shortcut.iconlocation = $iconpath
EndIf
If $arguments
$shortcut.arguments = $arguments
EndIf
If $startdir
$shortcut.workingdirectory = $startdir
EndIf
If $style
$shortcut.windowstyle = $style
EndIf
If $description And InStrRev($shortcutname, ".lnk")
$shortcut.description = $description
EndIf
If $hotkey
$shortcut.hotkey = $hotkey
EndIf
$shortcut.save
If @error
Exit @error
EndIf
If InStrRev($shortcutname, ".url") And $iconpath
$index = InStrRev($iconpath, ",")
If $index = 0
$iconindex = 0
Else
$iconindex = Split($iconpath, ",")[1]
$iconpath = Split($iconpath, ",")[0]
EndIf
$rc = WriteProfileString($shortcutname, "InternetShortcut", "IconFile", $iconpath)
$rc = WriteProfileString($shortcutname, "InternetShortcut", "IconIndex", $iconindex)
EndIf
$shortcut = 0
$wshshortcut = 0
Else
Exit @error
EndIf
Else
Exit @error
EndIf
EndFunction
_________________________
Mart
- Chuck Norris once sold ebay to ebay on ebay.
|
Top
|
|
|
|
#193784 - 2009-05-12 12:38 PM
Re: humm maybe a newbe question : )
[Re: Mart]
|
BradV
Seasoned Scripter
Registered: 2006-08-16
Posts: 686
Loc: Maryland, USA
|
Ah, perfect. I knew there was a UDF, I just couldn't find it.
If you have more than a few favorites to create, you can place them in an ini file and then have your script read them with readprofilestring and run through them. If you only have a few to create, its not worth the extra effort.
Regards,
Brad
|
Top
|
|
|
|
#193790 - 2009-05-12 02:38 PM
Re: humm maybe a newbe question : )
[Re: joselino]
|
BradV
Seasoned Scripter
Registered: 2006-08-16
Posts: 686
Loc: Maryland, USA
|
Hi Joselino,
You need to put excatly what Mart supplied in a kixtart file, such as:
Make_IE_Favorites.kix
Then run it. From a command line, issue:
kix32 Make_IE_Favorites.kix
That will put the google link in the current logged in user's Favorites.
Run that as a test. Next, if that works, figure out all the Favorites that you want to create. If it is a few, just put them in like the google one. One right after the other. For example: $rc = wshShortcut($userprofile + "Google", "http://www.google.com")
$rc = wshShortcut($userprofile + "Yahoo", "http://www.yahoo.com")
$rc = wshShortcut($userprofile + "Kixtart", "http://www.kixtart.org")
Let us know how that works. Remember, this is just a test and not ready to deploy.
Regards,
Brad
|
Top
|
|
|
|
#193806 - 2009-05-13 05:42 AM
Re: humm maybe a newbe question : )
[Re: Mart]
|
NTDOC
Administrator
Registered: 2000-07-28
Posts: 11623
Loc: CA
|
Reading from the Registry takes the name guessing out of the equation. In some cases there are some folders you just can't locate properly in the Registry, but in this case you can easily.
This code "should" work on all language versions of Windows XP. The folder name physically on the drive may be named differently but the wording in the Registry I believe is in English. If its not please let me know.
Dim $ShellFolders, $CUFavs
$ShellFolders = 'HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders'
$CUFavs = ExpandEnvironmentVars(ReadValue($ShellFolders, 'Favorites'))
? 'Favorites folder location is: ' + $CUFavs
|
Top
|
|
|
|
#193810 - 2009-05-13 09:17 AM
Re: humm maybe a newbe question : )
[Re: NTDOC]
|
joselino
Fresh Scripter
Registered: 2009-05-12
Posts: 9
Loc: France
|
Hi NTDOC,
First sorry to have replied so lately, we are on a different timezone : ).
I tried to use your Code but, it dosn't work i paste it to obtain a code like this :
Break on
Dim $ShellFolders, $CUFavs
$ShellFolders = 'HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders'
MessageBox("$ShellFolders","titre",32)
$CUFavs = ExpandEnvironmentVars(Readvalue($ShellFolders, 'Favorites'))
MessageBox("$CUFavs","titre",32)
$rc = wshShortcut($CUFavs + "TDA en Ligne", "http://www.tdaenligne.com")
;=-=-=-=-=-=-=-=-= DO NOT MODIFY ANYTHING BELOW THIS LINE. =-=-=-=-=-=-=-=-=
;=-=-=-=-=-=-=-=-= THIS IS A UDF AND IT COMES READY FOR USE AS IT IS. =-=-=-=-=-=-=-=-=
;
; wshShortCut(),
;
Don't care about messagebox
Regards,
Joselino
|
Top
|
|
|
|
#193812 - 2009-05-13 12:24 PM
Re: humm maybe a newbe question : )
[Re: NTDOC]
|
joselino
Fresh Scripter
Registered: 2009-05-12
Posts: 9
Loc: France
|
the messagebox with the $shellfolders shows the correct path
the messagebox with the $CUFavs shows also the correct path
but in the end nothing happened
|
Top
|
|
|
|
#193814 - 2009-05-13 12:55 PM
Re: humm maybe a newbe question : )
[Re: joselino]
|
BradV
Seasoned Scripter
Registered: 2006-08-16
Posts: 686
Loc: Maryland, USA
|
Hi Joselino,
DOC was just trying to show you how to get the "Favorites" folder no matter what the language is. You still need to use what Mart gave you, but where he had $userprofile = ExpandEnvironmentVars(%userprofile%) + "\Favorites\"
$rc = wshShortcut($userprofile + "Google", "http://www.google.com")
Instead use: $rc = wshShortcut($CUFavs + "Google", "http://www.google.com")
Regards,
Brad
|
Top
|
|
|
|
Moderator: Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
|
0 registered
and 515 anonymous users online.
|
|
|