こんなソフトありませんか?スレから、ヒントを得て作ったスクリプトです。
ショートカット(*.lnk)をD&Dすると、任意の優先度で実行するショートカットに
変化します。どう変化するかは、実際に変化させたショートカットのプロパティ
を覗いてみてください。なるほどなあ、と思いますよきっと。
Win2000専用。exeファイル以外のものを指定した場合の動作は保証しません。
一応、ウィンドウサイズ、コマンドラインオプション、作業ディレクトリ、アイコン
の設定は引き継ぎます。
実際のソースは、このスレがちょっと下がってから載せます。
バグがあったら教えてね。
'priority.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = False
For Each sArg In WScript.Arguments
If Fs.FileExists(sArg) And LCase(Fs.GetExtensionName(sArg))="lnk" Then
Set oShortCut=WshShell.CreateShortcut(sArg)
With oShortCut
sTargetPath=.TargetPath
If LCase(Fs.GetFileName(sTargetPath)) = "cmd.exe" Then
regEx.Pattern="\/([RHANBL]\S*)"
Set Matches =regEx.Execute (.Arguments)
For Each Match In Matches
sPriorityAccessKey = Left(Match.SubMatches(0),1)
Next
regEx.Pattern="cmd.*\s\/[RHANBL]\S*\s+(.*)"
Set Matches =regEx.Execute (.Arguments)
For Each Match In Matches
sProgArg =Match.SubMatches(0)
Next
Else
sPriorityAccessKey = "N"
sProgArg = RTrim(sTargetPath & " " & .Arguments)
End If
sPriorityAccessKey = InputBox("優先度を指定してください。" & vbCrLf & "[R]リアルタイム [H]高 [A]通常以上 [N]通常 [B]通常以下 [L]低", Fs.GetBaseName(sArg) & "(" & sProgArg & ")", sPriorityAccessKey)
If sPriorityAccessKey="" Then sPriorityAccessKey="0"
sPriorityAccessKey=Left(UCase(sPriorityAccessKey),1)
Select Case sPriorityAccessKey
Case "R" : sPriority="REAL"
Case "H" : sPriority="HIGH"
Case "A" : sPriority="ABOVENORMAL"
Case "N" : sPriority="NORMAL"
Case "B" : sPriority="BELOWNORMAL"
Case "L" : sPriority="LOW"
Case Else : sPriority=""
End Select
If sPriority<>"" Then
If LCase(Fs.GetFileName(sTargetPath)) = "cmd.exe" Then
If sPriorityAccessKey<>"N" Then
regEx.Pattern="\/([RHANBL]\S*)"
.Arguments=regEx.Replace (.Arguments, "/" & sPriority)
.Save
Else
MsgBox "通常のショートカットに戻す処理は未実装です。"
'(めんどくさいので。要望があったら書くけど)
regEx.Pattern="\/([RHANBL]\S*)"
.Arguments=regEx.Replace (.Arguments, "/" & sPriority)
.Save
End If
ElseIf sPriorityAccessKey<>"N" Then
iWindowStyle= .WindowStyle
Select Case iWindowStyle
Case 3 : sWindowStyleOpt=" /MAX "
Case 7 : sWindowStyleOpt=" /MIN "
Case Else : sWindowStyleOpt=""
End Select
.WindowStyle= 7 'MIN
.Arguments = RTrim("cmd /c start /d" & .WorkingDirectory & sWindowStyleOpt & " /" & sPriority & " " & sTargetPath & " " & .Arguments)
.TargetPath = "cmd.exe"
If .IconLocation=",0" Then
.IconLocation = sTargetPath & ",0"
End If
.Save
End If
End If
End With
End If
Next