HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0923
p、USAGIショートカットにコマンドラインを追加して作成8解決


p、USAGI

リンク

2009/9/23(Wed) 01:15:16|NO.27900

以下のプログラムをもとにEXEファイル(test.exe)を作成、実行。
自動作成されたショートカット(テストの設定)をダブルクリック(実行)すると、

test.exe" "config を探しています。自分で
探す場合は、[参照]をクリックしてください。

と、表示されてしまいます。
どうすれば良いのでしょうか?
又、fxlink命令以外に方法はありませんか?

この自動作成されたショートカット(テストの設定)のプロパティを開き、
どこの項目でもいいので変更し、変更を元にもどす。
そして[適用]を押すと希望通りの動作になります。


#include "hspext.as" ;hspext.dll使用 #uselib "kernel32" #func GetModuleFileName "GetModuleFileNameA" int, int, int if ("config"=dir_cmdline) or ("\"config\""=dir_cmdline) : goto *config ; ショートカットを作成 my_shortcut_name="テストの設定" ;ショートカットファイル名 dirlist dummy,my_shortcut_name+".lnk",1 if stat=0 : { sdim my_filepath, 1024 GetModuleFileName 0,varptr(my_filepath),1024 ;自分自身のファイル名を取得 fxlink my_shortcut_name,"\""+my_filepath+"\" \"config\"" ;ショートカットを作成 if stat=0 : mes "OK!" : else : mes "NG!" } wait 200 end *config mes dir_cmdline stop



この記事に返信する


シモン

リンク

2009/9/23(Wed) 08:32:29|NO.27904

偉大な先達のお力を借りましょう。

http://hspnext.com/hspkura/hspkura11.htm#contents21



p、USAGI

リンク

2009/9/23(Wed) 09:48:18|NO.27906

無理やりですが、解決方法を見つけましたが
少々危険でしょうか?


#include "hspext.as" ;hspext.dll使用 #uselib "kernel32" #func GetModuleFileName "GetModuleFileNameA" int, int, int if ("config"=dir_cmdline) or ("\"config\""=dir_cmdline) : goto *config ; ショートカットを作成 my_shortcut_name="テストの設定" ;ショートカットファイル名 dirlist dummy,my_shortcut_name+".lnk",1 if stat=0 : { sdim my_filepath, 1024 GetModuleFileName 0,varptr(my_filepath),1024 ;自分自身のファイル名を取得 fxlink my_shortcut_name,""+my_filepath+"" ;ショートカットを作成 if stat=0 : mes "OK!" : else : mes "NG!" my_name=""+getpath(my_filepath, 8) my_namesize=strlen(my_name) cmd_str="config" cmd_size=strlen(cmd_str) ;mes my_name ;mes cmd_str exist "テストの設定.lnk" abcsize=strsize+4+2+my_namesize+cmd_size sdim abc,abcsize bload "テストの設定.lnk",abc poke abc,20,$2B abcsize_st=abcsize-my_namesize-cmd_size-4-2 poke abc,abcsize_st-4,my_namesize+2 poke abc,abcsize_st-3,$00 poke abc,abcsize_st-2,$2E poke abc,abcsize_st-1,$5C repeat my_namesize poke abc,abcsize_st+cnt,peek(my_name,cnt) loop abcsize_st+=my_namesize+2 poke abc,abcsize_st-2,cmd_size poke abc,abcsize_st-1,$00 repeat cmd_size poke abc,abcsize_st+cnt,peek(cmd_str,cnt) loop bsave "テストの設定2.lnk",abc } wait 200 end *config mes dir_cmdline stop



p、USAGI

リンク

2009/9/23(Wed) 09:50:57|NO.27907

>シモンさん
HSPNEXTの 「 COMオブジェクト編 」 にありましたか、気付きませんでした。
ありがとうございます。

しかし、「任意に指定する項目」の「●引数を指定」を
使用してみましたがうまく設定できませんでした。
もちろんリンク先はEXEファイルです。

sLink = dirinfo(1)+"\\hsed3.exe" ;リンク先
oShellLink->"Arguments" "test.hsp" ;引数(コマンドライン)



シモン

リンク

2009/9/23(Wed) 10:09:15|NO.27908

リンク先パスと同じように記述

oShellLink("Arguments") = "\"test.hsp\"" ;引数(コマンドライン)



シモン

リンク

2009/9/23(Wed) 16:48:52|NO.27917

>p、USAGIさん
NO.27906のコードですが、検証報告です。
試したところWindows2000SP4ではソフトへのショートカットが2つできるだけです。
もし、そのコード使われるなら他の環境も検証されたほうがよさそうです。

私はバイナリを眺めて変更しようとするのもウンザリしてしまう性質なので、
上のような解決方法を考え出すp、USAGIさんを素直に凄いと思います。

fxlinkがスペースの入った引数指定できないこと自体が問題なので
次期バージョンで対応されることを期待しますが、
それまではモジュール使ったほうが無難かもしれません。



p、USAGI

リンク

2009/9/23(Wed) 21:43:04|NO.27929

>試したところWindows2000SP4ではソフトへのショートカットが2つできるだけです。
作成された「テストの設定2(.lnk)」から起動すると、
「config」と表示されれば成功なんですが表示されませんか?

私の環境 WindowsME / HSP3.2 では「config」と、表示されます。

「テストの設定(.lnk)」は中間ファイルの様なものです。
べつに上書きしてもいいのですが確認用に別にしました。



p、USAGI

リンク

2009/9/23(Wed) 21:54:06|NO.27931

>シモンさん
>リンク先パスと同じように記述
成功しました。
ありがとうございました。



シモン

リンク

2009/9/23(Wed) 21:56:46|NO.27932

>「config」と表示されれば成功なんですが表示されませんか?

実行ファイル作ったらいけました。
エディタからコンパイル実行で駄目だったので試してませんでした。orz
力技ですね。

あ〜休みが終わってしまう…



ONION software Copyright 1997-2023(c) All rights reserved.