自動化ツールUWSC使いよ集まれ12at SOFTWARE
自動化ツールUWSC使いよ集まれ12 - 暇つぶし2ch1:名無しさん@お腹いっぱい。
14/07/12 19:52:22.18 syCLE48Q0
前:名無しさん@お腹いっぱい。[] 投稿日:2014/01/09(木) 13:16:00.50 ID:hFz7Kd3R0 [1/3]
Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
URLリンク(www.uwsc.info)

●UWSC 掲示板(※作成依頼掲示版ではありません)
 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること
 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
URLリンク(www3.bigcosmic.com)
URLリンク(www3.bigcosmic.com)

●UWSC - Wikipedia
URLリンク(ja.wikipedia.org)

●使い方・基礎解説学習サイト
URLリンク(uwsc.g.hatena.ne.jp)
URLリンク(www.confrage.com)
URLリンク(necro.jp)
URLリンク(park14.wakwak.com)
URLリンク(canal22.org)
URLリンク(big.tm.land.to)
URLリンク(www.game-rev.com)

●スクリプトテンプレサイト
URLリンク(izagne.com)
URLリンク(scripts.web.fc2.com)
URLリンク(www.nagomi-jp.net)
URLリンク(nem.symphonic-net.com)
URLリンク(siromasa.digi2.jp)
URLリンク(iriyak.adam.ne.jp)

2:名無しさん@お腹いっぱい。
14/07/12 19:52:51.53 syCLE48Q0
Q.シェアウェア版で「L20が存在しません」「L22が存在しません」とエラーが出て一部機能が動作しない
A.割れシリアルを使った時に出る、ささやかな割れ対策

Q.購入したのに上記エラーが出る
A.ライセンスキーが正しいか確認(ベクターで購入した場合、登録するのは 伝票番号の xxxxxxxxx ではありません)
UWSCをアンインストール後、再インストールして正しい17桁のライセンスキーを入力してください。

●Pro版の追加機能
EXE化ツールが付属しています。(EXE化後は単体での実行が可能であり、ライセンスフリーにて配布できます)
IE(Web)用記録ツールが付属しています。(Web上の動作をUWSCのスクリプトとして記録する事ができます)
HTMLを利用した画面関数が使えます。
EXCELシート用関数が使えます。(OpenOffice.org/LibreOfficeの表計算(Calc)に対しても可)
デバッガが付属しています。

●質問したい方へ
「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」
「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる
「○○作って下さい」→ 依頼スレじゃありません。
過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。
自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。

●スクリプトを晒す上での注意
他人が読みやすいようにインデントを付けるように。解らない人はググレ。
(タブインデントは使えないんだぜ 全角スペース等に 変換しておくべし)
言いたい事に関係無い部分は ~○○の処理~ や 処理A 等のようにし、
必要な部分を晒すようにする。

●他人の書いたスクリプトを安易に実行しないように。
ハードディスクをフォーマットされたりしても、自己責任。

3:名無しさん@お腹いっぱい。
14/07/12 19:53:59.40 syCLE48Q0
●前スレ
自動化ツールUWSC使いよ集まれ11
スレリンク(software板)

10 スレリンク(software板)
9 スレリンク(software板)
8 スレリンク(software板)
7 スレリンク(software板)
6 スレリンク(software板)
5 スレリンク(software板)
4 スレリンク(software板)
3 スレリンク(software板)
2 スレリンク(software板)
1 スレリンク(software板)


次スレは>>980 がお願い。

4:名無しさん@お腹いっぱい。
14/07/12 21:04:19.69 TIYXqhlK0
>1乙

5:名無しさん@お腹いっぱい。
14/07/13 08:26:30.24 wP5PeP2U0
>>1
ラス1行追加もGJです

6:名無しさん@お腹いっぱい。
14/07/14 21:11:23.35 8SIUqx6+0
あまり急ぐ必要は無かったか~

7:名無しさん@お腹いっぱい。
14/07/15 20:47:53.19 r89ThTvz0
画像認証マクロもバックグラウンドで使用出来ますか?

8:名無しさん@お腹いっぱい。
14/07/15 21:05:19.51 zzpVhRLI0
できるよ

9:名無しさん@お腹いっぱい。
14/07/16 14:27:45.76 MocSTvn90
これのクリック方法教えてください。
NAMEもVLLUEもないので

<button class="btn flat-popup btn-important btn-large btn-block s_w250" type="submit" form="formlogin">ログイン</button>

10:名無しさん@お腹いっぱい。
14/07/16 16:33:26.52 cvpeDFpT0
フォームのエレメントを取得してサブミットすれば良いかもね
どうしてもクリックが必要なケースの場合でも
フォームのエレメントを取得して内包されるエレメントの何番目の子要素を取得しクリックとか
幾つかアプローチは思い浮かぶが実際に出来るかどうかはその前後が大事なのでなんとも言えん

でも目的のページの構造が判明していれば基本的にDOMアクセスでクリック出来ない要素は無いよ

11:名無しさん@お腹いっぱい。
14/07/17 12:54:21.46 pfl0aj9M0
複数ネットショップサイトを一括検索する方法を教えてください。
ぐぐったけど前例がなかった。



検索したい文字を入力

Amazon
楽天
ヤフー
ヨドバシ
ビックカメラ
ヤマダ
その他

で一括検索して結果を表示

12:名無しさん@お腹いっぱい。
14/07/17 14:18:55.10 EX/Zg3f60
ひとつづつ検索してけよw

13:名無しさん@お腹いっぱい。
14/07/17 14:32:00.93 3ZnyTt+/0
実際その通りで手動で順番に検索する操作を自動化するだけ
結果をマージしたいなら
フォーマットの違いを吸収して頑張ってマージする処理を作るだけ

何か特別な事をするワケじゃない

14:名無しさん@お腹いっぱい。
14/07/17 16:10:39.93 EIK8o8t20
>>11
そんなことが確実に出来ればシェアウェアで4000円で売っても売れまくって大金持ちだろうな。

15:名無しさん@お腹いっぱい。
14/07/17 17:09:04.66 REgGwCkO0
面倒なのでかかくどっとこむりますね

16:名無しさん@お腹いっぱい。
14/07/17 17:31:44.34 uUl5vpFH0
検索結果にアフィIDつけて配布したいとかそんなじゃねw

17:名無しさん@お腹いっぱい。
14/07/17 17:45:27.82 EIK8o8t20
拡張機能 Price Checker
URLリンク(chrome.google.com)
オンラインショッピング中に、その商品より安い価格の商品を他のショッピングサイトから自動検索してお知らせします。
対応サイトは150以上、ヨドバシカメラ、価格.COM、Amazon、ヤフーショッピング、楽天市場等です。お買い物のお供に是非

URLリンク(price-checker.jp)

これでも使えば?

18:名無しさん@お腹いっぱい。
14/07/17 20:33:36.71 5anz+sz+0
>>8
フリー版でも出来るん?

19:名無しさん@お腹いっぱい。
14/07/17 21:19:17.85 3ZnyTt+/0
フリー版で出来ない事は
>>2 の●Pro版の追加機能の部分だけ

20:名無しさん@お腹いっぱい。
14/07/18 02:05:06.68 li4jSUnd0
みなさんありがとうございました。
今日からよろしくお願いいたします。

21:名無しさん@お腹いっぱい。
14/07/18 09:38:06.69 3s6qt27Mi
UWSCってVBであってる?
httpリクエスト投げたいんだけど、
ライブラリある?それともソケット通信使わないといけない?

22:名無しさん@お腹いっぱい。
14/07/18 11:02:45.16 8CzkJzG20
独自のスクリプトだけどCOMオブジェクト生成して制御する機能はある
上記の機能を使ったライブラリは探せばある

23:名無しさん@お腹いっぱい。
14/07/19 09:57:42.85 HOfZ0Q/y0
複数起動できるようにするにはどうするの?

24:名無しさん@お腹いっぱい。
14/07/19 10:51:51.57 R2bc0wOS0
複数起動してどうするの?

25:名無しさん@お腹いっぱい。
14/07/19 15:10:10.56 HOfZ0Q/y0
二通りさせたいことがあるんだけど、
その都度UWSを選ぶのがメンドクサイ。

26:名無しさん@お腹いっぱい。
14/07/19 15:23:52.16 cNK6ICql0
どっちか関数にしてThreadで呼んだら?

27:名無しさん@お腹いっぱい。
14/07/19 15:46:59.05 h1rjlMSG0
uwsファイルを関連付けとけば
uwsファイルWクリでいくつでも動かせるだろ

28:名無しさん@お腹いっぱい。
14/07/20 01:48:43.14 ZtUICp8r0
ランチタイムで複数起動できるじゃんん?

29:名無しさん@お腹いっぱい。
14/07/20 03:18:55.49 NCuX3Azm0
windows8.1 v5.0.2 で動かしているけれど、
画面ピクセル数と G_SCREEN_W、G_SCREEN_Hが違うのは Windows の仕様?

MMV(G_SCREEN_W, G_SCREEN_H) で右下に行くし、
ピクセル数とG_SCREENの割合が一致するから、ディスプレイの画素数か何かの関係だと思うのだけど、
CHKIMG が G_SCREEN 以上画面ピクセル数未満の範囲を検知してくれないから困る・・・

30:名無しさん@お腹いっぱい。
14/07/20 11:05:17.34 8Vpm7gDu0
>>29
コントロールパネル→ディスプレイでサイズ変更とかは関係ない?

31:名無しさん@お腹いっぱい。
14/07/20 13:10:06.17 rVNBBInA0
画面の解像度は?
そんときのG_SCREENはそれぞれ幾つになってるの?
MMV(G_SCREEN_W, G_SCREEN_H)で右下ってことだけどMMV(0,0)なら何処に行く?

32:29
14/07/21 16:36:03.31 AE7vI9bU0
解像度変えてやってみたら、低解像度だと一致してるみたい
・解像度 => G_SCREEN
1280x720 => 1280x720
1600x900 => 1600x900
1920x1080 => 1536x864

MMV(0,0)で左上、MMV(G_SCREEN_X、G_SCREEN_Y)で右下に移動
問題のある 1920x1080 のときはG_SCREENとの比率0.8なので、
意図する座標を0.8で割ると意図した場所がクリックされるので、それはそれで問題ない

ただCHKIMGだと、横で 1536~1920 の範囲内にある画像を検知してくれない

機種はDELLのノートPCで、GPUはRadeonHD7700M
まぁ自動作業させるときだけ、解像度落とせば問題ないみたいではあるのでそれでやればいいかな

>>30-31
ありがとうございます

33:名無しさん@お腹いっぱい。
14/07/21 16:45:44.75 a2zvhja+0
>>32
実行の度に解像度変えるのも問題だろう
作者に報告しといた方がいいんじゃないか

34:名無しさん@お腹いっぱい。
14/07/21 17:26:07.99 ZGGcH9wx0
>>32
そのノートの液晶の解像度は1600x900なんだけど
擬似的に1920x1080を表示してるってことは無い?

35:名無しさん@お腹いっぱい。
14/07/23 20:33:02.72 Jy+dAtXX0
下に書いているFOR文の現在の繰り返し回数が奇数か偶数かを判断する方法など、もしその数の性質が〇〇だったら□□というもの(論理式?)でもっと素直な書き方は無いのでしょうか

前略
ifb i/2=int(i/2) then
偶数の時の処理
else
奇数の時の処理

36:名無しさん@お腹いっぱい。
14/07/23 20:36:05.97 YxSgu4LD0
MOD 余り

37:名無しさん@お腹いっぱい。
14/07/23 20:57:26.02 Jy+dAtXX0
なるほど!ありがとうございます

38:名無しさん@お腹いっぱい。
14/07/23 21:10:44.34 hvJxmGgq0
//何回かに一回実行、のような処理で頻用
for i=0 to 100
  msg = i+"は"
  ifb isEven(i) then
    msg=msg+"偶数"
  else
    msg=msg+"奇数"
  endif
  if isMultiple(i,5) then msg=msg+"、5の倍数"
  if isMultiple(i,7) then msg=msg+"、7の倍数"
  print msg
next


FUNCTION isEven(ltargetNum) //偶数ならTRUE
  RESULT = isMultiple(ltargetNum, 2)
FEND

FUNCTION isMultiple(ltargetNum, lMultipleNum) //ltargetNum が lMultipleNumの倍数ならTRUE
  RESULT = ( ltargetNum MOD lMultipleNum = 0 )
  //またはRESULT = ( ltargetNum = INT(ltargetNum/lMultipleNum)*lMultipleNum )
FEND

39:名無しさん@お腹いっぱい。
14/07/23 21:46:21.62 VFuufThe0
わざわざ関数にしたりしないで

if !(i mod 2) then ~
if !(i mod 5) then ~

みたいにしない?

40:名無しさん@お腹いっぱい。
14/07/23 23:46:24.40 6lGI1a6j0
裏マクロのやり方教えろよ

41:名無しさん@お腹いっぱい。
14/07/23 23:52:08.66 ykzfFNpM0
俺もmodだけで済ますかな
配列の剰余処理は定石だからよく使うし、関数化するほど複雑な処理でもなく
余計に長くなっちゃうし

42:名無しさん@お腹いっぱい。
14/07/24 02:54:28.62 o2/dwviN0
■Yahoo!知恵袋
URLリンク(chiebukuro.search.yahoo.co.jp)
初心者向け。くだらない質問にも答えてもらえる。


■公式掲示板
URLリンク(www3.bigcosmic.com)
中級者以上向け。上級者や作者も降臨。
ヘルプ見れば解決することをいちいち投稿するのは他の質問が流れるのでやめよう。


■クラウドソーシング
URLリンク(www.lancers.jp)
「他人に言えない事」、「スキル不足だが絶対完成させたい」、「業務案件」などはこっちで。


■2ちゃんねる
スレリンク(software板)
ゲームマクロなど実名や公式だと答えてくれない話
実名でコード晒すのが恥ずかしいけど晒す必要のある人
無駄にディスられたいドMな人

43:名無しさん@お腹いっぱい。
14/07/24 12:24:06.28 BsSHpTFO0
MOUSEORG(id,2)を使い、ウインドウに直接操作を送りたいのですが、複数のウインドウに送ることも出来るのでしょうか?

44:名無しさん@お腹いっぱい。
14/07/24 12:46:54.49 iRoKUaKn0
idってのはウィンドウIDのことだぞ?
なぜ出来ないと思ったのかが聞きたいw

45:名無しさん@お腹いっぱい。
14/07/24 12:59:37.32 BsSHpTFO0
>>44
追々すみませんが、その場合はどのように記述すれば良いのでしょうか?

id = GETID("メモ帳1")
id = GETID("メモ帳2")
MOUSEORG(id, 2)
以下操作

もしくは

id = GETID("メモ帳")
MOUSEORG(id, 2)
id = GETID("メモ帳")
MOUSEORG(id, 2)
以下操作

といった形でしょうか?

46:名無しさん@お腹いっぱい。
14/07/24 13:11:01.76 iO8ThbRp0
id って名前の変数しか受け取らないとでも思ってるのだろうか?

47:名無しさん@お腹いっぱい。
14/07/24 13:22:47.51 BsSHpTFO0
後者は
id = GETID("メモ帳1")
MOUSEORG(id, 2)
id = GETID("メモ帳2")
MOUSEORG(id, 2)
以下操作
でした。

ハンドル値等でも良いのはわかりますが、単純に複数を指定する際の記述の仕方が分からずです。
他にも
id = GETID("メモ帳1","メモ帳2")
MOUSEORG(id, 2)
等色々試してはみましたが上手くいきません。

48:名無しさん@お腹いっぱい。
14/07/24 13:28:42.36 BsSHpTFO0
ちなみにメモ帳1、メモ帳2というのは変数ではなく
「メモ帳1」というウインドウと「メモ帳2」というウインドウの例です。誤解を招くような例えですみません。

49:名無しさん@お腹いっぱい。
14/07/24 13:46:53.03 KKP+snWA0
MOUSEORG関数に複数のウインドウIDを一度に設定する方法は無いよ
同じ操作を複数のウインドウに実行したいなら
例えば操作部分を関数化してから

MOUSEORG(GETID("メモ帳1"), 2)
操作関数()
MOUSEORG(GETID("メモ帳2"), 2)
操作関数()

とかするのもアリ
完全並列にしたいならスレッドを分ける必要があるよん

50:名無しさん@お腹いっぱい。
14/07/24 21:05:59.87 BsSHpTFO0
>>49
一度に複数を指定することはできなかったのですね
どうも有難う御座いました

51:名無しさん@お腹いっぱい。
14/07/30 17:44:11.53 Ljr+G5rq0
クリップボードにある文字以外のデータをそのまま変数に入れるにはどうすればいいでしょうか。
a = getstr(0)とすると文字として変換してしまうからか上手くいきません

52:名無しさん@お腹いっぱい。
14/07/30 19:19:15.15 VJ8GbVJK0
1.一旦文字として受け取っておいてから、
2.必要に応じ文字列加工で邪魔な文字を除去するか、または数値変換対象から除外
3.文字を数字に変換する関数で数値変換

53:名無しさん@お腹いっぱい。
14/07/31 01:17:16.38 yjpxLrhn0
IEの制御について質問です。
「OK」と「キャンセル」が表示されるタイプのダイアログについて、表示されている文章(「よろしいですか?」のような文章)を取得するにはどうしたら良いのでしょうか。

ある申し込み処理を自動化しようとしているのですが、異なるメッセージのダイアログが連続で出てくる形で処理が進むため、どのダイアログが表示されているのかを識別したいのです。

文章を取得する以外でも、良い方法があればご教授ください。

なお、ダイアログのタイトルは全て同じなため、識別には使用できませんし、IE.document.titleでは取得もできませんでした。

無知な質問で申し訳ありませんが、晩御飯を食べてからずっとネットをさまよっていて途方に暮れています。
どなたか助けていただけないでしょうか。

54:名無しさん@お腹いっぱい。
14/07/31 08:19:02.76 fvrkKN/40
文章量はあるのにわかりやすくてまとまった質問だ

ちなみに自分は回答を持ち合わせていない

55:名無しさん@お腹いっぱい。
14/07/31 09:38:51.36 7gh5fHYh0
ダイアログの種類にもよるけれど
GETITEMでメッセージを取得できるかもしれないし
それが無理ならPOSAACでメッセージを取得できるかもしれない
頑張れ

56:名無しさん@お腹いっぱい。
14/07/31 10:34:52.63 2xGppryt0
>>53
そのダイアログに対して「fcuc.uws」を使ってみる

57:53
14/07/31 23:58:40.69 yjpxLrhn0
レスありがとうございました。
無事にメッセージが取得でき、条件分岐させることができました!

教えていただいたfcuc.uwsを使ってみたところ、getstr(id,0,STR_ACC_STATIC) でメッセージ取得できることがわかりました。
他にもfcuc.uwsはいろいろと使いでがありそうですね。

実は早速次なる壁にぶつかっていますが、いろいろと試行錯誤して頑張っていきます。
皆さん、本当にありがとうございました。

58:名無しさん@お腹いっぱい。
14/08/01 02:35:45.63 4dogJ4Kh0
ゲーム用にスクリプト組んでるんだけど
音量で判定って出来る?
でかい音が鳴った時に動作させたいんだけど、そういう事が可能かどうかヘルプ見てもわからなかったもんで

59:名無しさん@お腹いっぱい。
14/08/01 03:57:03.49 4CXJMfLa0
まぁ良い悪いは置いといて、音量ミキサーでも監視すれば良いんじゃないの?がんばって。

60:名無しさん@お腹いっぱい。
14/08/01 10:22:28.02 gLNQAj820
音量ミキサーが上下する訳じゃないだろ・・・

61:名無しさん@お腹いっぱい。
14/08/01 10:26:34.60 4CXJMfLa0
音量ミキサーが何を見てるかわかるんじゃない?

62:名無しさん@お腹いっぱい。
14/08/01 10:57:03.64 pbjcPu7a0
まぁ、瞬間値しかわからないから音量判定はオススメ出来ない
他のトリガーを探したほうがいいよ

63:名無しさん@お腹いっぱい。
14/08/01 15:06:17.13 sgRmVnbD0
いや、音量ミキサーの上下を画像判定すればいけるっしょ

64:名無しさん@お腹いっぱい。
14/08/01 19:34:49.87 cw9PH6wx0
>>63
音量の値を返す関数かなんかあんのかなって調べてたんだが
音量ミキサー自体を画像判定か・・・試してみるかな
その発想が出てくるところがすごい

65:名無しさん@お腹いっぱい。
14/08/01 20:10:36.66 sgRmVnbD0
>>64
どうしても要素掴めない時の最終手段がCHKIMGなのは前から定番
極論だがCHKIMGアリなら人間がやる動作は全て自動化可能

人間としての考えが必要な動作、例えばパズルゲームとか画像認証とかもな。
(別途、複雑なアルゴリズム組み込む必要があるがあくまで極論の話)

ていうか大体はAPIか別のツールをUWSCで動かせば楽なケース多いぞ
俺はAPIは知らんが、vector辺りで音楽ソフト漁れば
音量でかければ何かしらサイン出せるようなソフトあるんじゃね?
それをUWSCで判定するのが安定するかと思う

66:名無しさん@お腹いっぱい。
14/08/02 02:15:39.68 J+3s+h/50
IE.Navigate で COM ERROR: Exception occurred が出る原因と対処法、アドバイス貰えないでしょうか?

下記のコードで、3つ目の IE.Navigate で毎回エラーが出てしまいます。

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("URLリンク(shizu.0000.jp)) //1
Sleep(2)
IE.Navigate("URLリンク(shizu.0000.jp)) //2
Sleep(2)
IE.Navigate("URLリンク(shizu.0000.jp)) //3
Sleep(2)
IE.Navigate("URLリンク(shizu.0000.jp)) //4
Sleep(2)
IE.Navigate("URLリンク(shizu.0000.jp)) //5
Sleep(2)

表示するURLの順序を変えても、やはり3番目でエラーになります。
UWSC掲示板では情報が得られませんでした。

Win7 Home
IE11
UWSC 4.8c

67:名無しさん@お腹いっぱい。
14/08/02 02:29:42.47 KglVg/uo0
うちではエラーは出ないなぁ
uwscを最新版にしたらどう?
COMエラーを無視して実行しても問題なさそうだからエラーは無視するとか

68:名無しさん@お腹いっぱい。
14/08/02 08:02:51.18 buVZD99L0
>>64 本気か
レベルメーターなら分かるんだが・・・まあいっか

69:名無しさん@お腹いっぱい。
14/08/02 08:21:08.45 EMpklq/n0
>>65
現実的には、画像をOCRに通して文字列判定させたくても、都合のいいOCRが安価に入手できない。
また縮小拡大されたり3Dなどで類似画像判定させようとすると、OpenCV+一般言語のほうがいいということになる。
もしUWSCから極めて容易に、
プロセスメモリからユニコード文字列抜き出したり、パケットからスニッフできたりするライブラリがあれば、
人間以上のことが出来ちゃうんだけどなぁ

70:名無しさん@お腹いっぱい。
14/08/02 13:35:13.96 HI77Qwqc0
// できた!こんなところでOK?

while 1
 if peekcolor(レベルメーターででかい時のx,レベルメーターででかい時のy)=レベルメーターの色 then msgbox("でかい音")
 sleep(0.1)
wend

71:名無しさん@お腹いっぱい。
14/08/02 18:40:27.92 l/ljZJuP0
>>67
最新版5.0.2.0にしてみたけど、結果は同じでした。

エラーを無視を試してみます。ありがとうございました。

COM_ERR_IGN
  // 何等かのCOM処理
COM_ERR_RET

72:名無しさん@お腹いっぱい。
14/08/02 18:51:25.93 5O9VcL/w0
>>71
なんでsleep使ってるのか知らないけど
sleep30くらいにしてもおきるの?

73:名無しさん@お腹いっぱい。
14/08/02 20:44:45.62 WM1a4UDh0
>>72
別のスクリプトで IE.Navigate のエラーが発生したので、
これはあくまで原因を探るためのテストコードなのです。

Sleepはたとえば120秒にしてもダメでした。

あとエラー無視(COM_ERR_IGN と COM_ERR_RET)を使ってみましたが、 IE.Navigate が機能しないことには変わりないのでNGでした。

仕方ないので
IE.Navigate を実行する部分ごとに別のスクリプトにして、タスクスケジューラでuwscを順次起動することにしました。
(uwscのスケジュール機能も動作がおかしいので)

ありがとうございました。

74:名無しさん@お腹いっぱい。
14/08/03 00:16:57.12 Kb0PwfYK0
これが.NETの総合開発環境なら普通にエラーコード確認できるだろうしデバッグも様々なアプローチが出来るのにねー(棒)

75:名無しさん@お腹いっぱい。
14/08/03 00:29:25.17 df3QRqvg0
busywait入れてみたらどう?

76:名無しさん@お腹いっぱい。
14/08/03 01:39:01.99 BlUvp7BS0
IE11が原因だな
10以下なら動きそう

77:名無しさん@お腹いっぱい。
14/08/03 02:21:05.46 JxcSZXyH0
IE11でもエラーは起きない
本人以外で再現できる人いるの?

78:名無しさん@お腹いっぱい。
14/08/03 07:59:52.72 GZ+WuIZ70
エラーは起きないけれどWin7 IE11で3以後は表示されない
IEの外部操作は.NETでしかやったこと無いけれど同じような経験あるよ
その時はデバッグの結果

1回目は初期化されたIEだから問題ない
2回目は変数IEが表示中のIEなのでナビゲート後のページが表示される
但し内部的にはナビゲートすると変数IEと表示中のIEは同じオブジェクトじゃなくなるので
3回目以後は表示されない

って解釈してナビゲート後のIEを SHDocVw.ShellWindows から探す関数を作って対応した

79:名無しさん@お腹いっぱい。
14/08/03 08:11:42.83 GZ+WuIZ70
自分のケースの場合は
自動表示したページから次のURLを取得して順次ナビする必要があったけど

>>66の様なケースの場合は
固定URLの巡回なら毎回IEをCreateOLEObjして対応してもいい気がする

80:名無しさん@お腹いっぱい。
14/08/03 08:46:05.25 BlUvp7BS0
>>79
なるほどなぁ
それなら毎回GetActiveOleObjするのでもいいのかな
表示中のページも利用できそうだけど

81:名無しさん@お腹いっぱい。
14/08/03 17:53:01.87 ygrmWk1e0
下記のコードでポップアップのOKが押せない原因を調べているのですが、どうしても分かりません。

IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("URLリンク(ctu.fletsnet.com))
BusyWait(ie)
IESetData(IE, True, "btnLogin", "ログイン")
BusyWait(ie)
IESetData(IE, True, "CONNECT_OFF_CLICKRUN_C1025", "切断")
BusyWait(ie)
IESetData(IE, True, "CONNECT_OFF_CLICKRUN_C1025", "接続", 1)
BusyWait(ie)
IELink(IE,"ログアウト")

ID = getid("Message from webpage","#32770",-1)
ClkItem(ID,"OK") // ←ポップアップのOKが押せない!

BusyWait(ie)
IE.Quit
ExitExit

ポップアップを手動で開いてから、下記コードだけを動かす時は正しくクリック出来ます。
ID = getid("Message from webpage","#32770",-1)
ClkItem(ID,"OK")

どうして連続処理の中では動作しないのでしょうか?

82:名無しさん@お腹いっぱい。
14/08/03 18:09:32.78 df3QRqvg0
ポップアップが出る前にID取得してんじゃねーの

83:名無しさん@お腹いっぱい。
14/08/03 19:02:52.87 mE9cDTXm0
管理者権限のUWSCスクリプトで起動したソフトがすべて管理者権限で起動されてしまうのは防げないものでしょうか?

84:名無しさん@お腹いっぱい。
14/08/03 19:03:26.55 f5gfXNnl0
自動操作では操作の成否を戻り値で受け取って一定回数再トライするのは定石よ

85:名無しさん@お腹いっぱい。
14/08/03 19:05:07.65 vQ3Noa3Z0
>>82 >>84
出来ました! ありがとうございます!!

thread CtuPopUpClick()
IELink(IE,"ログアウト")

////////////
Procedure CtuPopUpClick()
ID = getid("Message from webpage","#32770",-1)
ClkItem(ID,"OK")
Fend

86:名無しさん@お腹いっぱい。
14/08/03 22:17:27.04 f5gfXNnl0
>>85
邪魔なダイアログ消すだけならそれでOKなんだろうが

sleep(1)
flgOkWasClicked=false
for loop=1 to 10
  did=getid("Message from webpage","#32770",1)
  if did = -1 then continue
  flgOkWasClicked=clkitem(did, "OK")
  if !flgOkWasClicked then continue
next

ifb flgOkWasClicked then ...

ということを言いたかったんだね~
まぁ好きにやれや

87:名無しさん@お腹いっぱい。
14/08/04 06:29:48.83 +GhF8xfL0
>>86修正

sleep(1)
flgOkWasClicked=false
for loop=1 to 10
  did=getid("Message from webpage","#32770",1)
  if did = -1 then continue
  flgOkWasClicked=clkitem(did, "OK")
  if flgOkWasClicked then break
next

ifb flgOkWasClicked then ...

88:名無しさん@お腹いっぱい。
14/08/05 16:38:42.74 qR61SyTc0
ランチメニューのショートカットキーは無効化出来ないのでしょうか?

キー割り当てに「なし」という選択肢がありません。

UWSC.INI を書き換えてもダメです。
LunchMenuHotKey= を削除すると デフォルトの Ctrl-W になってしまうし、
LunchMenuHotKey=999 とか存在しないキー番号を書くと起動時にいちいちエラーが出るし。

使わない機能のためにショートカットを割り当てなきゃならないのがツライ。

89:名無しさん@お腹いっぱい。
14/08/05 16:48:10.96 qR61SyTc0
訂正: ショートカットキー → ホットキー

90:名無しさん@お腹いっぱい。
14/08/05 16:54:29.69 D5Dx1Flc0
デフォだとブラウザのタブとか閉じるコマンドなんだよねそれ、無効ないししょうがないから使わないコマンドに設定してるよ

91:名無しさん@お腹いっぱい。
14/08/05 17:02:03.38 M2OIrEtB0
残念ながら有りません
UWSC本体を常駐状態にせずにスクリプトを逐次起動すれば
ショートカットを気にする必要はなくなりますよ

92:名無しさん@お腹いっぱい。
14/08/05 18:04:36.53 0292bkw40
While true
MSGBOX("testtest")
IF CHKIMG("tes1.bmp",0,1,1,806,625) THEN
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
sleep(3.0)
endif
IF CHKIMG("tes2.bmp",0,1,1,806,625) THEN
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
sleep(3.0)
endif
IF CHKIMG("tes3.bmp",0,1,1,806,625) THEN
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
sleep(3.0)
endif
IF CHKIMG("tes4.bmp",0,1,1,806,625) THEN
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
sleep(3.0)
endif
IF CHKIMG("tes5.bmp",0,1,1,806,625) THEN
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
sleep(3.0)
endif
sleep(0.5)
Wend

5この画像クリックして戦闘ループさせるようにしたつもりなんだけど
画像が見つかんねー
ペイントで切り取って保存してキャンバスのサイズ1×1に張り付けて
この書き方がまずいの?ちゃんと画像の探索できてんのかわからん

93:名無しさん@お腹いっぱい。
14/08/05 18:43:48.97 6loQZGsf0
その程度自分でデバッグできないとか。

94:名無しさん@お腹いっぱい。
14/08/05 18:47:39.23 M2OIrEtB0
適当にレスするとCHKIMGで得られる座標は左上なので
当然クリックする座標も其処になる
其処がクリック可能じゃなければBTN関数は当然失敗する

それ以前に比較用の画像が駄目な可能性もある
個別に判断していけ

95:名無しさん@お腹いっぱい。
14/08/05 19:00:12.01 niZhumv+0
>>92
・MOUSEORGを使う
・CHKIMGが失敗した場合にSLEEP挟まずに次のCHKIMGが実行されており
 CPU時間を独占し対象の描画を妨害する可能性がある
・CHKIMGは可能な限り IMG_MSK_BGR4 で判定すべし
・明らかにマッチする画像がマッチしないなら、そのときの画像を保存し、
 比較元と比較先の画像を800%以上に拡大して肉眼比較すべし
・画像があればクリックしTRUE、無かったり座標異常等でクリックできなければFALSEを返す
 例えばCLKIMG関数のようなものを定義すれば、コード量は半分に減りテストもしやすいだろう

96:名無しさん@お腹いっぱい。
14/08/05 21:31:03.70 oWkOQAEl0
IE操作について質問です
CSSセレクタやXPathによるエレメント指定って
UWSC標準関数では実現できないと思うのですが
何かいい方法ありませんか?

97:名無しさん@お腹いっぱい。
14/08/05 22:12:08.03 0292bkw40
解決しました!
やっぱり画像が一致してなかったみたいです

>>93
sleep関数とmsgboxで一応デバッグしとる

98:名無しさん@お腹いっぱい。
14/08/06 12:29:26.17 OYZwCMgl0
CHKIMGを利用して指定画像があった場合、続いてその画像から右側の指定範囲をサーチさせるにはどうすればよいのでしょうか?
例を挙げると

画像A(画像左上角の座標がX=100、Y=100)があったら、次にそこから右の範囲(X1=110、Y1=100、X2=150、Y2=120)から指定画像を検索

要は画像Aの左上角座標からX1はX+10、Y1はY、X2はX+50、Y2はY+20の範囲を続いてサーチさせたいのです
こういったことが可能であればどのように書けば良いのでしょうか?
     

99:名無しさん@お腹いっぱい。
14/08/06 12:51:52.41 J8shURq/0
変数使えば良いんじゃね
X1 = G_IMG_X + 10
とかしても良いんだぜ

100:名無しさん@お腹いっぱい。
14/08/06 12:53:23.23 OYZwCMgl0
なるほど!ありがとうございます。

101:名無しさん@お腹いっぱい。
14/08/06 16:49:49.42 Kd4DWNAs0
PC用の無線リモコンにexe化したショートカット登録して押せるようにしたらすげー便利だった

1000円の品だったから4個しか設定出来ないがこれ捗りすぎてやばいw

102:名無しさん@お腹いっぱい。
14/08/06 18:59:45.71 hsLYtabQ0
PCに触っている状態であればランチャー動かしたほうが早いし
欲しいけど便利な用途が思いつかん

103:名無しさん@お腹いっぱい。
14/08/06 19:15:26.39 J8shURq/0
USBフットスイッチでもきっと便利に使えるだろうけれど
それはUSBフットスイッチの便利な使い方の一つでしかなくて
別にUWSCじゃなくてもいいし
EXE化しなくても引数付きでスクリプト起動してもいいよね
まぁ、嬉しい気持ちは伝わってくるよ
よかったな

104:名無しさん@お腹いっぱい。
14/08/06 19:39:18.22 Kd4DWNAs0
もともとfoobarに使えるリモコンって買ったんだけどuwscに利用したら思わず便利だったんで書いちゃったわ、確かに無理してそれ目当てに買う必要はないな

105:名無しさん@お腹いっぱい。
14/08/06 23:55:48.76 h3IAvmk30
IEで、あるページを表示させて、そこに入力フォームや登録ボタンがあるかどうかを判定するにはどうしたら良いでしょうか?

mailフォームと登録ボタンがあれば入力して押す。
IESetData(IE, "テストデータ", "mail")
IESetData(IE, True, "", "登録する")

なければ別の処理、という形にしたいのです。

ググってみたけど、どういうメソッド(?)をどう組み合わせればよいか分かりません。
教えてもらえると助かります。

106:名無しさん@お腹いっぱい。
14/08/07 00:14:05.20 6xUT57kM0
POS関数

107:名無しさん@お腹いっぱい。
14/08/07 00:23:53.64 Ft6QcBe/0
IESetDataの戻り値はなんのためにあると思っているんだ?

108:名無しさん@お腹いっぱい。
14/08/07 00:34:06.84 xY78+5+d0
複数のUWSファイルを各ループ終了後に順番に開くようにしたいのですがわかりません。
現在はmain.uwsに、

while true

call A.uws
call B.uws
call C.uws

wend

と記述しており、A~C全て画像認証で特定の画像が現れたらクリックをしてループを抜けるというものです。
Aが画像認証成功したらBへ、Bが画像認証成功したらCへ、Cが画像認証成功したらAへと行きたいのですが上手く行きません。
上記の記述だと、Aをクリアした後にBに行き、応答なしになります。

109:名無しさん@お腹いっぱい。
14/08/07 02:03:52.04 fKkKz5EB0
公式サイトの掲示板で質問すれば作者が回答してくれるのに、
何でこんな便所の落書きみたいな場所で質問するの?

110:名無しさん@お腹いっぱい。
14/08/07 02:33:23.60 xY78+5+d0
書き込んだ時503で見れなかったんだ・・・
公式掲示板で聞いてみる

111:名無しさん@お腹いっぱい。
14/08/07 02:54:02.97 S3EPzyir0
callなんてやめて関数で1ファイルにしちゃえよ

112:名無しさん@お腹いっぱい。
14/08/07 06:10:19.12 E6P035jA0
[MAIN.uws]

CALL SUB1.uws
CALL SUB2.uws

while true
  A()
  if !B() then exit
  if !C() then exit
wend

--
[SUB1.uws]

procedure A()
  …
fend

function B()
  …
  result=true
fend

--
[SUB2.uws]

procedure C()
  …
  result=true
fend

113:名無しさん@お腹いっぱい。
14/08/07 09:04:03.29 kQCQRYI80
IF CHKIMG("AA.bmp") or CHKIMG("BB.bmp") or CHKIMG("CC.bmp")
 BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
 その他処理
endif

いくつかの画像を検索して同じ処理をしたいんですけど、
上記のように書くと、AA.bmpを見つけても、CC.bmp検索までしてるようで、
AA.bmpのG_IMG_XとG_IMG_Yの値を保持してくれないみたいで上手くいきません。
IF文を分ける以外のテクニックがありましたら教えてください。

114:名無しさん@お腹いっぱい。
14/08/07 09:56:39.26 S3EPzyir0
>>113
先頭に OPTION SHORTCIRCUIT

115:名無しさん@お腹いっぱい。
14/08/07 10:55:59.57 xY78+5+d0
>>108です
調べたところ、Bの画像認証が上手く行ってなかっただけでした。
お騒がせしました。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch