2010年3月17日水曜日

親フォルダを開く

【種類】
javascriptでWSH(Windows)

【機能】
引数で渡されたショートカットの親フォルダを開きます。
実体を渡された場合はその親フォルダを開きます。(TaggedFrogなんかで使える)

【準備】
ファイル名を"親フォルダを開く.js"などにして保存。

【使い方】
ショートカットやファイルをスクリプトファイルにD&D。
またはSendToフォルダに入れておくと便利です。


objArgs = WScript.Arguments;
fso = new ActiveXObject("Scripting.FileSystemObject")
shell = new ActiveXObject("Shell.Application")
WshShell = WScript.CreateObject("WScript.Shell");

if (objArgs.length > 0)
{ // 引数がある場合
  // 第1引数を対象ファイル名とする(第2以降は無視)
  strFileName = objArgs(0)
  // 拡張子を取得 
  strExName = fso.GetExtensionName(strFileName)
 
  if (strExName.toUpperCase() == "LNK")
  { // ショートカットの場合はリンク先ファイルの親フォルダを開く
    strTargetPath = WshShell.CreateShortcut(strFileName).TargetPath
    strParentFolder = fso.GetParentFolderName(strTargetPath)
  } else {
    // それ以外の場合はそのファイルの親フォルダを開く
    strParentFolder = fso.GetParentFolderName(strFileName)
  }
  shell.open(strParentFolder)
} else { // 引数がない場合
  WScript.echo("引数がありません.")
}

2010年3月13日土曜日

自動クリック

【種類】
AutoIt(Ver.3)スクリプト

【機能】
指定したウインドウが表示されたら、特定のボタンを自動的にクリックします。

【準備】
AutoItでexe化します。

【使い方】
起動すると常駐して監視します。
指定のウインドウが表示されたら指定のボタンが自動的にクリックされます。
終了する場合はタスクトレイのアイコン右クリックして「Exit」を選んで下さい。

【設定】
iniファイルを直接編集して設定します。

1.[configuration]セクション

interval_sec=1 ... 監視間隔を秒で指定

2.[window0] ~ [window9]

ウィンドウの指定

title ... 監視するウインドウタイトルの一部を指定します。(部分マッチング)
未指定の場合はそのセクションが無視されます。

text ... 監視するウインドウに表示されている内容の一部を指定します。(部分マッチング)
未指定でも動作します。(タイトル

control ... クリックするボタン(コントロール)を指定します。
未指定の場合はウインドウにクローズメッセージを投げます。

3.controlの指定方法

例) [TEXT:OK] ... OKというテキストが記入されているコントロールをクリックします。
他にID,Classなどでも指定できますが、詳しくはAutoitのヘルプファイルのControlsを参照して下さい。



AutoClick.au3

; initialize
AutoItSetOption("TrayAutoPause", 0)
Dim $title[10], $atext[10],$control[10]

; ini file
$inifilename=@ScriptDir&"\AutoClick.ini"

; Interval String
$value = IniRead($inifilename, "configuration", "interval_sec", "1")
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
exit
EndIf
$interval_sec = number($value)

; Window Settings
$sectionNames = IniReadSectionNames($inifilename)
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
exit
EndIf

For $i = 0 To 9
$title[$i] = IniRead($inifilename, "window"&$i, "title", "")
$atext[$i] = IniRead($inifilename, "window"&$i, "text", "")
$control[$i] = IniRead($inifilename, "window"&$i, "control", "")
;MsgBox(4096, "", $title[$i] & " : " & $atext[$i])
Next

; main roop
while (1)
For $i = 0 to 9
if $title[$i] <> "" And WinExists($title[$i], $atext[$i]) Then
if $control[$i] <> "" Then
ControlClick($title[$i], $atext[$i], $control[$i])
Else
winClose($title[$i], $atext[$i])
EndIf
EndIf
Next
Sleep($interval_sec*1000)
WEnd



AutoClick.ini(例)


[configuration]
interval_sec=1

[window0]
title=hogehoge
text=Please Press OK Button
control=[TEXT:OK]