Open link in new browser window: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
Line 7: | Line 7: | ||
Use the new version with the included macro to execute without affecting any variables or the stack :) | Use the new version with the included macro to execute without affecting any variables or the stack :) | ||
Function openLinkNewWindow | Function openLinkNewWindow | ||
Push $3 | Push $3 | ||
Exch | |||
Push $2 | Push $2 | ||
Exch | |||
Push $1 | Push $1 | ||
Exch | |||
Push $0 | Push $0 | ||
Exch | |||
ReadRegStr $0 HKCR "http\shell\open\command" "" | ReadRegStr $0 HKCR "http\shell\open\command" "" | ||
# Get browser path | # Get browser path | ||
Line 37: | Line 40: | ||
Pop $0 | Pop $0 | ||
Exec '$1 $0' | Exec '$1 $0' | ||
Pop $0 | |||
Pop $1 | Pop $1 | ||
Pop $2 | Pop $2 | ||
Pop $3 | Pop $3 | ||
FunctionEnd | FunctionEnd | ||
!macro _OpenURL URL | |||
Push "${URL}" | |||
Call openLinkNewWindow | |||
!macroend | |||
!define OpenURL '!insertmacro "_OpenURL"' |
Revision as of 07:17, 13 May 2009
Author: techtonik (talk, contrib) |
Description
Link opened via ExecShell "open" "http://nsis.sf.net/" may happen to be loaded in existing browser window thus erasing previous content. Here is NSIS function to open link in new window.
Update by qwertymodo Use the new version with the included macro to execute without affecting any variables or the stack :)
Function openLinkNewWindow
Push $3 Exch Push $2 Exch Push $1 Exch Push $0 Exch ReadRegStr $0 HKCR "http\shell\open\command" ""
- Get browser path
DetailPrint $0 StrCpy $2 '"' StrCpy $1 $0 1 StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char StrCpy $2 ' ' StrCpy $3 1 loop: StrCpy $1 $0 1 $3 DetailPrint $1 StrCmp $1 $2 found StrCmp $1 "" found IntOp $3 $3 + 1 Goto loop
found: StrCpy $1 $0 $3 StrCmp $2 " " +2 StrCpy $1 '$1"'
Pop $0 Exec '$1 $0' Pop $0 Pop $1 Pop $2 Pop $3
FunctionEnd
!macro _OpenURL URL Push "${URL}" Call openLinkNewWindow !macroend
!define OpenURL '!insertmacro "_OpenURL"'