| 
					 
							
													 
							
						 
						
 
 | 
 | 
 
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" 
 
で表示してみてください。なにか足らないでしょ? 
 
 |   
  
					 |