便利な関数とか探せばあるのかもしれませんが、見つからなかったのでショートカットファイルを
バイナリとして読み込みその中からリンク先を抽出するプログラムを書いてみました。
ただ、フォーマットを調べずとりあえず動くようにやっつけで書いたので常に正しく動作するかどうかはわかりません。
コメントをしっかり書いたつもりなので動作はコメントを読めば大体分かるかと。
LinkFileName="hoge.lnk"//ここにショートカットファイル名
//ファイルサイズを取得して読み込む分のメモリ確保
exist LinkFileName
FileSize=strsize
sdim LinkData,strsize
//バイナリデータとして読み込み
bload LinkFileName,LinkData
//バイナリをサーチしてファイル名の部分に差し掛かったらフラグをたてる
flag=0
//抽出されたショートカットが指すファイル名を格納する変数
sdim LinkTarget,256
//抽出しているファイル名を入れる変数の書き込み位置
NowWrittingIndex=0
repeat FileSize
out=peek(LinkData,cnt)
//一般に「:\」という組が出たらディレクトリを指すと思われるのでそれが着たかどうかの判定
if (out==':'){
out=peek(LinkData,cnt+1)
if (out=='\\'){
flag=1
//「ドライブレター:\」を書き込む
poke LinkTarget,0,peek(LinkData,cnt-1)
poke LinkTarget,1,peek(LinkData,cnt)
poke LinkTarget,2,peek(LinkData,cnt+1)
NowWrittingIndex=3
}
}
//フラグが立っていたらLinkTargetに書き出し
if (flag==1){
poke LinkTarget,NowWrittingIndex,out
NowWrittingIndex++
if out==0:break
}
loop
mes LinkTarget
exec LinkTarget
もっと正確に実装したい場合は以下が参考になるかもしれません。
http://ithreats.net/2009/05/27/window-shortcut-lnk-file-format/