File "linkexec.bas"
Path: /linkexec/linkexec.bas
File size: 2.5 KB
MIME-type: text/plain
Charset: utf-8
#COMPILE EXE "linkexec.exe"
#DIM ALL
#RESOURCE "linkexec.pbr"
$VER = "0.3"
'------------------------------------------------------------------------------
' ** Changelog **
'------------------------------------------------------------------------------
' - v0.3 (2026-01-21)
' o fix for Wine 11.0 breaking 'start.exe' retrocompatibility
' - v0.2 (2025-10-07)
' o propose to install program as a Linux App
' o improve behavior under Linux
' - v0.1 (2025-04-23)
' o initial release
'------------------------------------------------------------------------------
MACRO MyMsgBox(hd,m,t,st) = MessageBox(hd,m,t,st)
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#INCLUDE ONCE "WIN32API.INC"
#INCLUDE ONCE "inc/SHORTCUT.INC"
#INCLUDE ONCE "inc/EXE2UNIX.INC"
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN()
LOCAL lnk AS LINKTYPE
LOCAL arg AS STRING
LOCAL s AS STRING
' Create exe icon in Unix dock and Unix file explorer
Me2Unix 1, 1 ' askConfirmation=%TRUE, showInAppMenu=%TRUE
s = TRIM$(COMMAND$(1), ANY $SPC+$TAB+$DQ)
' If no argument passed: select source file
IF RIGHT$(LCASE$(s), 4) <> ".lnk" THEN
DISPLAY OPENFILE 0, , , "Open shortcut...", "", _
CHR$("Windows shortcut (*.lnk)", 0, "*.lnk", 0), "", "", _
%OFN_FILEMUSTEXIST OR %OFN_NODEREFERENCELINKS OR _
%OFN_SHOWHELP OR %OFN_NONETWORKBUTTON OR %OFN_ENABLESIZING _
TO s
IF s = "" THEN EXIT FUNCTION ' canceled by user
END IF
' Get the remaining arguments
arg = TRIM$(REMOVE$(COMMAND$, COMMAND$(1)))
' Parse shortcut filepath from argument
lnk.zLinkFolder = PATHNAME$(PATH, s)
lnk.zLinkName = PATHNAME$(NAMEX, s)
' Read all fields shortcut
ReadShortcut(lnk)
' Merge arguments
lnk.zArguments = TRIM$(lnk.zArguments + " " + arg)
' Launch the target program with its parameters, in the specified workdir
SHELLEXECUTE BYVAL 0, "open", lnk.zExeName, lnk.zArguments, lnk.zWorkDir, %SW_SHOWNORMAL
END FUNCTION
'------------------------------------------------------------------------------