|
|
2013/6/23(Sun) 16:44:44|NO.55185
もう一度新しく投稿しました。
#define CLSID_ShellLink "{00021401-0000-0000-C000-000000000046}"
#define IID_IShellLinkA "{000214EE-0000-0000-C000-000000000046}"
#define IID_IPersistFile "{0000010b-0000-0000-C000-000000000046}"
#usecom IShellLinkA IID_IShellLinkA CLSID_ShellLink
#comfunc IShellLink_SetPath 20 str
#usecom IPersistFile IID_IPersistFile
#comfunc IPersistFile_Save 6 wstr,int
newcom slink, CLSID_ShellLink
screen 0, 300, 100, 4
IShellLink_SetPath slink, dirinfo(1)+"\\ショーカット名.exe"
IPersistFile_Save slink, dirinfo($10018)+"\\ショーカット名.lnk", 1
delcom slink
wait 100
pos 0 ,20
mes "ショートカットを作成しました。"
wait 200
var_1 = 0
objsize 150, 20
pos 0, 0
chkbox "window起動時に開く", var_1
if ( var_1 = 1 ) {
exist dirinfo($10008)+"\\ショーカット名.lnk"
if strsize = -1 {
pos 0,50
mes "ファイルが存在しません!"
stop
}else{
dialog "ここで見つかりません"
delete "\\ショーカット名.lnk"
}
}
ショートカット登録/削除したいのですが
不具合だらけです・・
どうすればよいでしょう?
|
|
2013/6/23(Sun) 16:54:54|NO.55186
なぜ新スレにしたのですか?
|
|
2013/6/23(Sun) 16:59:41|NO.55187
なんとなく!ですw
迷惑だったらすみませんでした><
|
|
2013/6/23(Sun) 17:29:48|NO.55188
具体的になにがうまく行かないか書いたほうが良いです。
あと、ショートカット作成ならhspの機能にありますよ。
#include "hspext.as"
lnkNm=dirinfo($10007)+"\\test.lnk" // スタートアップフォルダ+lnk名
exeNm=dir_cur+"\\tes.exe" // カレントフォルダ+exe名
fxlink lnkNm, exeNm // ショートカット作成
|
|
2013/6/23(Sun) 18:14:18|NO.55189
実行してもらったらすぐわかると思うのですが
ショートカットは登録できてます。
が、チェックしてもその後なんの反応もありません。。。
|
|
2013/6/23(Sun) 18:29:41|NO.55190
ショートカット登録なのであまり実行したくないのですが、乗りかかった船なので。
chkboxにチェックしても動かないと言うとこですね。
chekboxの値(var_1)は、リアルタイムにループなどで監視してないと取得できません。
たとえば具体的には最後のところ以下のようにループしてください。
*main // 追加
if ( var_1 = 1 ) {
exist dirinfo($10008)+"\\ショーカット名.lnk"
if strsize = -1 {
pos 0,50
mes "ファイルが存在しません!"
stop
}else{
dialog "ここで見つかりません"
delete "\\ショーカット名.lnk"
}
}
wait 20 // 追加
goto *main // 追加
|
|
2013/6/23(Sun) 19:08:53|NO.55191
さかさんありがとうございます!
一つ解決しましたwwヽ(´▽`)ノ
なんですが・・w
#define CLSID_ShellLink "{00021401-0000-0000-C000-000000000046}"
#define IID_IShellLinkA "{000214EE-0000-0000-C000-000000000046}"
#define IID_IPersistFile "{0000010b-0000-0000-C000-000000000046}"
#usecom IShellLinkA IID_IShellLinkA CLSID_ShellLink
#comfunc IShellLink_SetPath 20 str
#usecom IPersistFile IID_IPersistFile
#comfunc IPersistFile_Save 6 wstr,int
newcom slink, CLSID_ShellLink
screen 0, 300, 100, 4
var_1 = 0
objsize 150, 20
pos 0, 0
chkbox "window起動時に開く", var_1
*main
if ( var_1 = 1 ) {
exist dirinfo($10018)+"\\ee.lnk.lnk"
if strsize = -1 {
IShellLink_SetPath slink, dirinfo(1)+"\\ee.lnk.exe"
IPersistFile_Save slink, dirinfo($10018)+"\\ee.lnk.lnk", 1
delcom slink
dialog "ショートカットを作成しました。"
}
if ( var_1 = 0 ) {
exist dirinfo($10018)+"\\ee.lnk.lnk"
dialog "ここで見つかりません"
delete "\\ee.lnk"
}
}
wait 20
goto *main
〜悩みその1〜
チェックをはずしているときは
ファイルが存在すれば、"削除"
と、してみたのですが
反応がないです・・
dialog で確認がとれなくて・・
ループ内だと思うんですけど・・
〜悩みその2〜
チェックをはずしてるときは
"削除" でいいのですが
ショートカットの削除ができません。
なぜでしょう?
" C:\ 〜〜 "
とつければ出来るのですが・・
どのPCにでもしたいのですw
どうにかならないでしょうか?w
| |
|
2013/6/23(Sun) 21:50:05|NO.55193
●その1
var_1=0のチェックが以下のようにvar_1=1チェックの中に入ってます。
*main
if ( var_1 = 1 ) {
exist dirinfo($10018)+"\\ee.lnk.lnk"
if strsize = -1 {
IShellLink_SetPath slink, dirinfo(1)+"\\ee.lnk.exe"
IPersistFile_Save slink, dirinfo($10018)+"\\ee.lnk.lnk", 1
delcom slink
dialog "ショートカットを作成しました。"
}
if ( var_1 = 0 ) {
exist dirinfo($10018)+"\\ee.lnk.lnk"
dialog "ここで見つかりません"
delete "\\ee.lnk"
}
}
wait 20
goto *main
●その2
existと同じ書き方をしたらどうですか?
delete dirinfo($10018)+"\\ee.lnk.lnk"
●その他、参考
ループではなく、チェックボックスもボタンみたいにイベントにする方法があります。
最初にボタンを作成してスタイルをチェックボックスに変更します。
#include "user32.as"
; 普通にボタンを作成
button "切り替え", *check
hButton = objinfo(stat, 2)
; ボタンのウィンドウスタイルを変更してチェックボックス化
sendmsg hButton, $F4, $3
; 初期状態でチェックボックスにチェックを入れておきたい場合は以下
; 第3パラに 0=チェックあり、1=チェックなし
; (標準のobjprm命令では制御できないため)
; sendmsg hButton, $F1, 1
stop
*check
; チェックボックスの状態を取得 (BM_GETCHECK)
; statに 0=チェックなし、1=チェックありが返る
sendmsg hButton, $F0
value = stat
title ""+value
あと、自分の環境(win7)ではショートカット作成されませんでしたよ。(^^;
|
|
2013/6/23(Sun) 22:31:46|NO.55196
私XPなんですが 7のほうで試したらできなかったですね・・
なぜでしょうwww
|
|
2013/6/23(Sun) 23:02:26|NO.55199
fxlinkならxpでも7でも、実績ありですよ。
あと、デバッグするのなら変数の値も表示したほうが良くて、さらにdialogよりもtitle
のほうが無限ループのときに終了できなくならないので良いです。
|
|
2013/6/24(Mon) 22:28:14|NO.55203
#include "hspext.as"
screen 0, 300, 100, 4
aaa_1 = 1
objsize 150, 20
pos 0, 0
chkbox "window起動時に開く", aaa_1
repeat
if ( aaa_1 = 1 ) {
sdim filepath, 256
GetModuleFileName , varptr(filepath), 256
startup=dirinfo($10018)
name="ソフト名"
chdir startup
fxlink name,filepath
}}
if ( aaa_1 = 0 ) {
exist dirinfo($10018)+"\\ソフト名.exe"
if strsize = -1 {
stop
}
delete dirinfo($10018)+"\\ソフト名.exe"
}
wait 100
loop
これで一応スタートアップに登録はできるのですが、
削除ができません・・・
なぜでしょう?
exist dirinfo($10018)+"ソフト名.exe"
if strsize = -1 {
mes "ファイルがありません。"
stop
}
mes
delete dirinfo($10018)+"\\ソフト名.exe"
これで確認をとっているのですが
ファイルがないとでます・・・
dirinfo($10018)
で指定して、実際そこに存在するのに
ファイルがないとでます。
どうしてですか?
|
|
2013/6/25(Tue) 21:28:44|NO.55235
だからですね。。。(^^;
デバッグの仕方を考えたほうが良いですよ。
mes dirinfo($10018)+"ソフト名.exe"
で表示してみてください。なにか足らないでしょ?
|
|