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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0623
ミュウショートカット登録/削除11未解決


ミュウ

リンク

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" } }

ショートカット登録/削除したいのですが
不具合だらけです・・
どうすればよいでしょう?



この記事に返信する


KA

リンク

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"

で表示してみてください。なにか足らないでしょ?



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