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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1203
remiスクリーンセーバーを作っていてstartup failedと出てしまいます。1未解決


remi

リンク

2014/12/3(Wed) 09:23:41|NO.66291

画像が回りながら動くスクリーンセーバーを作りました。
私の使っているPCはwindows8.1 64bitです。
すでにあるスクリーンセーバーのソースを変更して作ったのですが、
ドキュメント上で.scrファイルを作成してCドライブのwindowsのsystem32にコピーして実行してみようとしたら"startup failed"と表示されて実行できません。
よくあるように、start.axファイルと使用する画像ファイルをpackfileに追加する作業はやりました。

ドキュメント上で.scrファイルを実行してみたところ、正常に実行できました。
また、別のPCのwindows7 32bitで実行してみたところドキュメント上でもsystem32上でも正常に作動しました。
だから、プログラム自体には問題はないと思います。

何が問題なのでしょうか?

#packopt type 2 ;自動作成スクリーンセーバー
#packopt name "SS" ;自動作成、実行ファイル名
s=dir_cmdline : a=strmid(s,1,1)
n=0
if (a="P") or (a="p") : goto *sspre ;プレビュールーチンへ
if (a="S") or (a="s") : goto *ssproc ;フルスクリーンルーチンへ
if (a="C") or (a="c") : goto *sscfg ;コンフィグルーチンへ
mes "Unknown switch ["+dir_cmdline+"]" ;エラー表示
stop

*sscfg ;コンフィグ(設定画面)
tt="スクリーンセーバー設定、" ;タイトル名
title tt : width 320,200 ;タイトルバーに文字列表示:ウィンドウの大きさ
mes tt
pos 230,140 : button "OK",*ssend ;OKボタンが押されたら終了
stop

*ssend
end

*sspre ;プレビュー画面
cls : mes "プレビュー画面" : mes : mes "ですが、ここは空っぽです" : stop

*ssproc ;スクリーンセーバープログラム本体
randomize
ax=ginfo_dispx : ay=ginfo_dispy ;デスクトップ全体のx,yサイズ
back=rnd(5)
buffer 2
picload "PIC.png"
buffer 3
fil=rnd(5)
picload ""+((fil))+".jpeg"
gmode 3,1440,900
bgscr 1,ax,ay,,0,0,ax,ay
gmode 2,240,240


n=20
i=0
while (i<n)

x(i)=rnd(1000)
y(i)=rnd(700)
dx(i)=rnd(15)+1
dy(i)=rnd(20)+1
w(i)=0.2*rnd(62)
dw(i)=0.005*rnd(62)*powf( -1 , rnd(2) )+0.005

i=i+1
wend
rr=rnd(255)+1
bb=rnd(255)+1
yy=rnd(255)+1

repeat
i=0
redraw 0
pos 0,0
gzoom ax,ay,3,0,0,1440,900
while (i<n)
pos x(i),y(i)
grotate 2 , 0 , 0 , w(i)
w(i)+dw(i)
x(i)=x(i)+dx(i)
y(i)=y(i)+dy(i)
if x(i)>ginfo_winx : dx(i)=-dx(i)
if x(i)<=0 : dx(i)=-dx(i)
if y(i)>ginfo_winy : dy(i)=-dy(i)
if y(i)<=0 : dy(i)=-dy(i)
i=i+1
wend
redraw 1
getkey esc, 27
if esc=1 : end
await
loop
stop



この記事に返信する


tds12

リンク

2014/12/3(Wed) 19:09:32|NO.66294

おそらくWOW64のファイルシステムリダイレクタが働いているのだと思われます。
http://msdn.microsoft.com/ja-jp/library/aa384187(v=vs.85).aspx
つまりそのスクリーンセーバ自身の中にあるstart.axにアクセスするために
System32フォルダの中にアクセスしようとしますが
実際には、wow64によってC:\Windows\SysWow64フォルダ内を探しているのです。
解決方法としては、実行ファイルをsystem32ではなくSysWOW64フォルダにコピーです。



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