'簡易ランチャ ' ' '更新履歴 '08/11…QXマクロのShell命令の第2引数に対応。 ' (これに伴いデータファイルのフォーマットが ' 拡張されたが、従来のものも問題無く使えます) ' exe,bat,com以外のファイルにも対応した。 '    macファイルを指定した場合はマクロを実行、 '    その他の拡張子の場合は関連付けに基づいて '    アプリケーションを起動。 dllname "SHELL32.DLL" cdeclare HWND ShellExecute(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,int) proc main dim file$ dim tmp,tmp$,ret,tmp2$ dim e$[15],e[15] dim popdata$[255],popdatatab$[255] file$=macrofilename$ file$=left$(file$,inrstr(file$,"\")) file$=file$+"crrun.lst" if dir$(file$)="" then open file$ for output as #1 print#1,"" print#1,"//各行に「題名」「TABコード(幾つでも)」「コマンドライン」の順で記入してください。" print#1,"//行頭にスラッシュを二つ重ねた行は注釈となります。" print#1,"//(例)メモ帳 c:\windows\notepad.exe" print#1,"" print#1,"メモ帳 1 notepad.exe" print#1,"電卓 1 calc.exe" print#1,"" close#1 end if tmp=0 tmp++:popdata$[tmp]="Cancel":popdatatab$[tmp]="" tmp++:popdata$[tmp]="-":popdatatab$[tmp]="" open file$ for input as #1 do while eof(1)=0 lineinput#1,tmp$ tmp$=trim$(tmp$) if left$(tmp$,2)<>"//" and tmp$<>"" then tmp++ if instr(tmp$," ")=0 then tmp$=tmp$+" " popdata$[tmp]=left$(tmp$,instr(tmp$," ")-1) popdatatab$[tmp]=mid$(tmp$,instr(tmp$," ")+1) end if loop close#1 tmp++:popdata$[tmp]="-":popdatatab$[tmp]="" tmp++:popdata$[tmp]=">メニューの編集":popdatatab$[tmp]="" tmp++:popdata$[tmp]="項目を追加する":popdatatab$[tmp]="*add" tmp++:popdata$[tmp]="項目を編集する":popdatatab$[tmp]="*edit" tmp++:popdata$[tmp]="<":popdatatab$[tmp]="" ret=popupmenu(popdata$,0,0) tmp$=popdatatab$[ret] do while left$(tmp$,1)=" ":tmp$=mid$(tmp$,2):loop tmp$=trim$(tmp$) tmp=1 if instr(tmp$," ")<>0 then tmp=val(left$(tmp$,instr(tmp$," ")-1)) tmp$=mid$(tmp$,instr(tmp$," ")+1) do while left$(tmp$,1)=" ":tmp$=mid$(tmp$,2):loop tmp$=trim$(tmp$) end if if tmp$="" then end elseif tmp$="*add"then tmp$=getfilename$("\","*.*","登録したい実行ファイルの選択") if tmp$="" then end if dir$(tmp$)="" then if msgbox(tmp$+"は存在しませんが登録をしますか?",MB_YESNO)<>IDYES then end end if end if tmp2$=mid$(tmp$,inrstr(tmp$,"\")+1) tmp2$=left$(tmp2$,inrstr(tmp2$,".")-1) tmp2$=inputbox$("メニューに表示する際の題名を決めてください。","題名の入力",tmp2$,"") if tmp2$="" then end tmp=0 if right$(lcase$(trim$(tmp$)),4)<>".mac" then tmp++:e$[tmp]="フォーカス有り":e[tmp]=1 tmp++:e$[tmp]="フォーカスなし":e[tmp]=4 if instr(".exe.com.bat.",right$(lcase$(trim$(tmp$)),4)+".") then tmp++:e$[tmp]="フォーカス有り & 実行中はQX側の処理をストップ":e[tmp]=-1 tmp++:e$[tmp]="フォーカスなし & 実行中はQX側の処理をストップ":e[tmp]=-4 end if tmp=listbox(e$) if tmp<1 then end tmp=e[tmp] end if open file$ for append as #1 print #1,tmp2$+" "+str$(tmp)+" "+tmp$ close #1 call msgbox("登録しました。") elseif tmp$="*edit"then call @@openfile(file$) end else if ucase$(right$(trim$(tmp$),4))=".MAC"then @@jumpmacro tmp$ else ret=shell(tmp$,tmp) if ret=FALSE then if dir$(tmp$)<>"" then '関連付けに基づいて実行 'QXのShell命令の引数をShellExecuteの引数に変換 if tmp>0 and tmp<7 then tmp=val(mid$("523857",tmp,1)) else tmp=5 end if call ShellExecute(@@hwnd, "open",tmp$,"", "", tmp) else print tmp$+"が見つかりません。" end if end if end if end if end proc