2017年08月 / 07月≪ 12345678910111213141516171819202122232425262728293031≫09月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2010.04.13 (Tue)

カナンでUWSC

ハンゲのブラウザゲーム「みんなの冒険大陸カナン」をやってたけど、もっさりしてて結構飽きたのでUWSC書いてみたりしたり。
スポンサーサイト


 |  04:45  |  UWSC  |  トラックバック(0)  |  コメント(0)  |  Top↑

2009.12.26 (Sat)

UWSCでアラド戦記自動ログイン nexon対応

2009/01/05 追記

IE7で動かしたところちゃんと動かなかったのでIE7に対応するよう修正


ここずっとやってなかったアラドを久々にやろうかなと思って
過去のUWSCでのアラド自動ログイン動かしたら動かない。

仕方ないので作り直しました。

ハンゲバージョンとネクソンバージョンを作ったので、自分のアカウントに合わせてダウンロードしてください。

ハンゲバージョン
arad_login_h.txt
Nexonバージョン
arad_login_n.txt
↑「.txt」を「.uws」に変えて、各設定をして使ってください。
テスト環境:IE8

詳しい使い方は
UWSCでアラド戦記自動ログイン
を参考に。

JoyToKeyも同時に起動出来るようにしてます。
JOY_TO_KEY_PATHは自分のJoyToKey.exeの場所を指定して。

んでJoyToKeyを起動する場合、Vistaだと管理者権限が必要となると思うので、UWSCを常に管理者権限で実行させるようにしとくと良いかもしれないけどそれってちょっと心配。




一応中身乗せときます。
ハンゲバージョン

// ****************************
// 設定
// ****************************
USER_ID = "userID"
PASSWORD = "password"

// JoyToKeyを起動させる設定
JOY_TO_KEY_START = 0 // 0:起動させない 1:起動させる
// JoyToKeyのパス(自分の環境に合わせる)
JOY_TO_KEY_PATH = "C:\jtk379\jtk379\JoyToKey.exe"



// ****************************
// メイン処理
// ****************************
TRY

PUBLIC IE = CreateOLEObj("InternetExplorer.Application")
PUBLIC ID = HNDTOID(ie.hwnd)

IE.Visible = true

IE.Navigate2("http://arad.hangame.co.jp/")

// IEのバージョン取得
ws = CreateOleObj("Wscript.Shell")
Version = token(".", ws.RegRead("HKLM\Software\Microsoft\Internet Explorer\Version"))
// IE7対応
IFB Version = 7 THEN
IE.Quit
IE = Nothing
objShell = CreateOLEObj("Shell.Application")
IE = objShell.Windows.Item(objShell.Windows.Count - 1)
IE.Navigate2("http://arad.hangame.co.jp/")
ENDIF

REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate=4

// ログインフラグ
login_flag = false

// ログイン中か
IFB IE.Document.getElementById("logininfo_memberid") > 0 THEN
login_flag = true
// IDとパスワードがセットできたら
ELSEIF IESETDATA(IE, USER_ID, "strmemberid") and IESETDATA(IE, PASSWORD, "strpassword")
imgs = IE.document.All("loginform").getElementsByTagName("img")
// ログイン画像検索
for j = 0 to imgs.Length - 1
// ログインボタンを探す
ifb Pos("btn_login", imgs.Item[j].src) > 0
imgs.Item[j].click // 画像クリック
login_flag = true
break
endif
next
ENDIF

// ログインできた場合
IFB login_flag THEN
// JoyToKeyを起動する
IFB JOY_TO_KEY_START = 1 THEN
// JoyToKeyがあるかチェック
IFB FOPEN(JOY_TO_KEY_PATH, F_EXISTS) THEN
// JoyToKey起動
exec(JOY_TO_KEY_PATH)
EXIT
ELSE
msgbox("JoyToKeyが見つかりません。<#cr>[" + JOY_TO_KEY_PATH + "]")
ENDIF
ENDIF
ELSE
msgbox("ログインできません")
ENDIF
EXCEPT
msgbox("エラー:" + TRY_ERRMSG)
exit
ENDTRY

ネクソンバージョン

// ****************************
// 設定
// ****************************
USER_ID = "userID"
PASSWORD = "password"

// JoyToKeyを起動させる設定
JOY_TO_KEY_START = 0 // 0:起動させない 1:起動させる
// JoyToKeyのパス(自分の環境に合わせる)
JOY_TO_KEY_PATH = "C:\jtk379\jtk379\JoyToKey.exe"



// ****************************
// メイン処理
// ****************************
TRY
PUBLIC IE = CreateOLEObj("InternetExplorer.Application")
PUBLIC ID = HNDTOID(ie.hwnd)

IE.Visible = true

IE.Navigate2("http://www.arad.jp/")

// IEのバージョン取得
ws = CreateOleObj("Wscript.Shell")
Version = token(".", ws.RegRead("HKLM\Software\Microsoft\Internet Explorer\Version"))
// IE7対応
IFB Version = 7 THEN
IE.Quit
IE = Nothing
objShell = CreateOLEObj("Shell.Application")
IE = objShell.Windows.Item(objShell.Windows.Count - 1)
IE.Navigate2("http://www.arad.jp/")
ENDIF

REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate=4

// ログインフラグ
login_flag = false

// ログイン中か
IFB IE.Document.getElementById("frmLogout") > 0 THEN
login_flag = true
ELSE
// ログインする
frmLogin = IE.Document.getElementById("frmLogin")
IFB frmLogin > 0 THEN
inputs = frmLogin.getElementsByTagName("input")
FOR i = 0 TO inputs.length - 1
SELECT inputs.Item[i].type
CASE "text"
inputs.Item[i].value = USER_ID
CASE "password"
inputs.Item[i].value = PASSWORD
SELEND
NEXT

as = frmLogin.getElementsByTagName("a")
FOR i = 0 TO as.length - 1
IFB POS("checkLoginFrm()", as.Item[i].outerHTML) > 0 THEN
as.Item[i].click()
login_flag = true
ENDIF
NEXT
ENDIF
ENDIF

// ログインできた場合
IFB login_flag THEN
// JoyToKeyを起動する
IFB JOY_TO_KEY_START = 1 THEN
// JoyToKeyがあるかチェック
IFB FOPEN(JOY_TO_KEY_PATH, F_EXISTS) THEN
// JoyToKey起動
exec(JOY_TO_KEY_PATH)
ELSE
msgbox("JoyToKeyが見つかりません。<#cr>[" + JOY_TO_KEY_PATH + "]")
EXIT
ENDIF
ENDIF
ELSE
msgbox("ログインできません")
ENDIF
EXCEPT
msgbox("エラー:" + TRY_ERRMSG)
exit
ENDTRY


 |  00:22  |  UWSC  |  トラックバック(0)  |  コメント(0)  |  Top↑

2009.03.26 (Thu)

FC2ブログでファイルを一括アップロード【更新】 - UWSC

どうやらこのFC2ブログのファイルのアップロードに一括アップロードが付いたらしい。
いつの間に?!気が付かなかった。

一括といっても結局1回で何個か選択できるだけで、あまり変わらないのは確かだ。

そしてその一括アップロードが出来るようになったので、画面構成もちょっと変わったみたいで
Vineさんからファイルパスが入らなくなったとコメントを頂いたので早速修正しました。
Vineさんのブログのインフォメーションに紹介していただきました。有難う御座います。)

使い方は以前と同じ
1.USERIDにFC2ブログのユーザーID、PASSWORDにパスワードを入れるか、IEでFC2ブログにログインしておく(ログイン状態であればID,パスワードは不要)
2.任意の場所にフォルダを作成し(D:\Temp\updirとか)、アップロードしたいファイルを作成したフォルダに入れる
3.以下のスクリプトの「SRC_DIR」に2.で作成したフォルダのパスを入れる
4.UWSCで以下のスクリプトを実行

注)指定したフォルダ内のすべてのファイルをアップロードしようとするので、アップロードし終わったファイルは削除してください

FC2ブログ一括アップロード.txt

↑拡張子を.UWSに変更して使用してください

↓中身



// *****************
// 基本設定
// *****************
PUBLIC USERID = "user"
PUBLIC PASSWORD = "pass"
PUBLIC SRC_DIR = "D:\Temp\updir" //アップロードフォルダ

// *****************
// 設定内容の確認
// *****************
ifb SRC_DIR = "" then
msgbox("アップロード対象フォルダが設定されていません")
exit
endif

try
// ファイルの取得
filecount = GetDir(SRC_DIR)
// アップロードするファイルがない場合終了
ifb filecount = 0 then
msgbox("アップロード対象ファイルが見つかりません。<#cr>" + SRC_DIR)
exit
endif
except
// 例外が発生したら終了
msgbox("エラー:" + TRY_ERRMSG)
exit
endtry

// IEのバージョン取得
ws = CreateOleObj("Wscript.Shell")
Version = token(".", ws.RegRead("HKLM\Software\Microsoft\Internet Explorer\Version"))


PUBLIC IE = CreateOLEObj("InternetExplorer.Application")
PUBLIC ID = HNDTOID(ie.hwnd)

// *****************
// メイン処理
// *****************
IE.Visible = true;
// FC2ブログhpを開く
IE.Navigate("http://blog.fc2.com/");

// IE7対応
IFB Version = 7 THEN
IE.Quit
SLEEP(1)
objShell = CreateOLEObj("Shell.Application")
IE = objShell.Windows.Item(objShell.Windows.Count - 1)
// FC2ブログhpを開く
IE.Navigate("http://blog.fc2.com/")
ENDIF

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4

// ログインフォームが存在する場合
ifb IE.document.forms["login"] > 0 then
frm = IE.document.forms["login"]
IE.document.getElementById("acid").value = USERID
IE.document.getElementById("passwd").value = PASSWORD
frm.submit()
else
IE.Navigate("http://blog.fc2.com/?admin")
endif

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4


ifb pos("fc2.com/control.php", IE.LocationURL) = 0 then
// ログインできなかったら終了
msgbox("ログインできませんでした。")
exit
endif

// アップロード画面を開く
tmp = Copy(IE.LocationURL, 1, POS("control.php", IE.LocationURL) + Length("control.php") - 1)
IE.Navigate(tmp + "?mode=control&process=upload")

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4


// ファイル数分アップロード
for i = 0 to filecount - 1
// フォーム取得
frm = IE.document.forms["upload"]
// ファイルパス
filepath = SRC_DIR + "\" + GETDIR_FILES[i]

// 最小化してるとファイル名が入らないので戻す
if STATUS(ID, ST_ICON) then CTRLWIN(ID, NORMAL)

ifb Version = 6 then
// ファイル入力ボックスにフォーカスを当てる
frm.upfile[0].focus()
// sendstrで入力
sendstr(ID, filepath)
endif

ifb Version = 7 then
KBD(VK_CTRL, DOWN)
IESETDATA(IE, filepath, "upfile[]", "", 0)
KBD(VK_CTRL, UP)
endif

inputs = frm.getElementsByTagName("input")
// type=submitを探す
for j = 0 to inputs.length - 1
ifb inputs.item(j).type = "submit" then
// 見つかったらクリックしてアップロード
inputs.item(j).click
break
endif
next

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4
next

msgbox("完了")



複数アップロードが出来るようになったことで、ファイル入力ボックスの名前が
"upfile"->"upfile[]"に変わったみたい。
変化はそれくらいかな。

家の環境(Vista+IE7)でのみ動作確認したので、
IE6の場合もちゃんと動くかはまだ確認していません。


 |  01:50  |  UWSC  |  トラックバック(0)  |  コメント(2)  |  Top↑

2008.11.07 (Fri)

UWSCでIEのバージョンを取得したい

UWSCでIE操作する際、IEのバージョンによってできることとかできないこととか結構ある。

IEのバージョンを取得して分岐したいなあと思ったんでIEのバージョンを取得する方法。
これを関数にするなりしたら便利かな?

下記のコードはCreateOLEObj("InternetExplorer.Application")で作られるIEのバージョンを取得し、
UWSCのPrintウィンドウに5秒表示させる処理。

IE = CreateOLEObj("InternetExplorer.Application")
FS = CreateOLEObj("Scripting.FileSystemObject")

// GetFileVersionでIEのバージョンを取得。
//IE.FullNameはiexplore.exeのフルパス
strVersion = FS.GetFileVersion(IE.FullName)

// 6.0.2900...って感じの文字なので、"."より前の肝心な部分だけ数値として取り出す
intVersion = Val(Copy(strVersion, 1, Pos(".", strVersion) - 1))

print "Version:" +intVersion

Sleep(5)


Scripting.FileSystemObjectを使って、iexplore.exeファイルからバージョンを読み取ってる仕組み。
IEオブジェクトにバージョンプロパティとかが無いのがちょっと不思議だ。
ちゃんと探してないせいかもしれないけど。
あるのかな?


 |  16:32  |  UWSC  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.09.26 (Fri)

FC2ブログでファイルを一括アップロード(英語環境対応) - UWSC

FC2ブログでファイルを一括アップロード - UWSC
このコードを英語環境で動かしたら・・・というコメントをいただき、
ちょうどこのパソコンのVirtualPCにも英語版XPが入っていたので喜び勇んで英語環境対応にしました。
ちゃんと日本語環境でも使えます。

使い方は以前と同じ
1.USERIDにFC2ブログのユーザーID、PASSWORDにパスワードを入れるか、IEでFC2ブログにログインしておく(ログイン状態であればID,パスワードは不要)
2.任意の場所にフォルダを作成し(D:\Temp\updirとか)、アップロードしたいファイルを作成したフォルダに入れる
3.「SRC_DIR」に2.で作成したフォルダのパスを入れる
4.UWSCで以下のスクリプトを実行

注)指定したフォルダ内のすべてのファイルをアップロードしようとするので、アップロードし終わったファイルは削除してください

FC2ブログ一括アップロード.txt


↑拡張子を.UWSに変更して使用してください

↓中身



// *****************
// 基本設定
// *****************
PUBLIC USERID = "user"
PUBLIC PASSWORD = "pass"
PUBLIC SRC_DIR = "D:\Temp\updir" //アップロードフォルダ

// *****************
// 設定内容の確認
// *****************
ifb SRC_DIR = "" then
msgbox("アップロード対象フォルダが設定されていません")
exit
endif

try
// ファイルの取得
filecount = GetDir(SRC_DIR)
// アップロードするファイルがない場合終了
ifb filecount = 0 then
msgbox("アップロード対象ファイルが見つかりません。<#cr>" + SRC_DIR)
exit
endif
except
// 例外が発生したら終了
msgbox("エラー:" + TRY_ERRMSG)
exit
endtry


PUBLIC IE = CreateOLEObj("InternetExplorer.Application")
PUBLIC ID = HNDTOID(ie.hwnd)

// *****************
// メイン処理
// *****************
IE.Visible = true;
// FC2ブログhpを開く
IE.Navigate("http://blog.fc2.com/");

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4

// ログインフォームが存在する場合
ifb IE.document.forms["login"] > 0 then
frm = IE.document.forms["login"]
IE.document.getElementById("acid").value = USERID
IE.document.getElementById("passwd").value = PASSWORD
frm.submit()
else
IE.Navigate("http://blog.fc2.com/?admin")
endif

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4


ifb pos("fc2.com/control.php", IE.LocationURL) = 0 then
// ログインできなかったら終了
msgbox("ログインできませんでした。")
exit
endif

// アップロード画面を開く
tmp = Copy(IE.LocationURL, 1, POS("control.php", IE.LocationURL) + Length("control.php") - 1)
IE.Navigate(tmp + "?mode=control&process=upload")

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4


// ファイル数分アップロード
for i = 0 to filecount - 1
// フォーム取得
frm = IE.document.forms["upload"]
// ファイルパス
filepath = SRC_DIR + "\" + GETDIR_FILES[i]

// 最小化してるとファイル名が入らないので戻す
if STATUS(ID, ST_ICON) then CTRLWIN(ID, NORMAL)

ifb GetIEVersion() = 6 then
// ファイル入力ボックスにフォーカスを当てる
frm.upfile.focus()
// sendstrで入力
sendstr(ID, filepath)
endif

ifb GetIEVersion() = 7 then
KBD(VK_CTRL, DOWN)
IESETDATA(IE, filepath, "upfile")
KBD(VK_CTRL, UP)
endif

inputs = frm.getElementsByTagName("input")
// type=submitを探す
for j = 0 to inputs.length - 1
ifb inputs.item(j).type = "submit" then
// 見つかったらクリックしてアップロード
inputs.item(j).click
break
endif
next

REPEAT
SLEEP(1)
UNTIL !IE.busy AND IE.readystate=4
next

msgbox("完了")

FUNCTION GetIEVersion()
FS = CreateOLEObj("Scripting.FileSystemObject")

// GetFileVersionでIEのバージョンを取得。
//IE.FullNameはiexplore.exeのフルパス
strVersion = FS.GetFileVersion(IE.FullName)

// 6.0.2900...って感じの文字なので、"."より前の肝心な部分だけ数値として取り出す
intVersion = Val(Copy(strVersion, 1, Pos(".", strVersion) - 1))

RESULT = intVersion
FEND


とりあえず動くので、コメントやメッセージは日本語のままです。
修正箇所はIELINK(日本語)->IE.Navigate(URL)に変えたーとか
フォームの取得方法をgetElementsByName->document.forms[]に変えたくらい。

それにしても英語OSで英語版のfc2blogトップページからログインしても、日本語版のblog管理画面になるんだな。
もし英語版の管理画面になるんだとしたら、URLとかの修正が必要になってくるかも。



追加修正
IE7で正しく動かなかったので、IE7でも動くように修正しました。

修正内容はアップロードファイルのパスを入れる動作を修正。
↓これを

// ファイル入力ボックスにフォーカスを当てる
frm.upfile.focus()
// sendstrで入力
sendstr(ID, filepath)


↓これに変えた

KBD(VK_CTRL, DOWN)
IESETDATA(IE, filepath, "upfile")
KBD(VK_CTRL, UP)

元々このtype=fileのボックスにファイルパスを入れる動作は気になっていたところでした。
後者のIESETDATAを使うとクリップボードにファイルパスが入ってしまうのがどうも気になってしまって、
他の方法を探して前者のsendstrで無理やり入れてました。
やっぱIESETDATAで入れたほうが安全だな。


 |  16:00  |  UWSC  |  トラックバック(0)  |  コメント(9)  |  Top↑
 | BLOGTOP |  NEXT
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。