自動化ツールUWSC使いよ集まれ10at SOFTWARE
自動化ツールUWSC使いよ集まれ10 - 暇つぶし2ch4:名無しさん@お腹いっぱい。
13/05/01 01:57:31.78 J8309YQV0
で、前スレどこっすか?

5:名無しさん@お腹いっぱい。
13/05/01 02:21:26.46 UFD+MPgf0
●前スレ
自動化ツールUWSC使いよ集まれ9
9 スレリンク(software板)
8 スレリンク(software板)
7 スレリンク(software板)
6 スレリンク(software板)
5 スレリンク(software板)
4 スレリンク(software板)
3 スレリンク(software板)
2 スレリンク(software板)
1 スレリンク(software板)

9入れたつもりが入ってなかった

6:名無しさん@お腹いっぱい。
13/05/01 02:39:56.34 JLKkaJw60


7:名無しさん@お腹いっぱい。
13/05/01 06:16:54.32 hAM2hSNN0
おつ!ROM勢だけどおつ!

8:名無しさん@お腹いっぱい。
13/05/01 23:27:08.12 Dey3AEuf0
呼び出し関係をまとめてみた

◇UWSC スクリプトからの呼び出し
UWSC.exe
 └[MyScript].uws
   ├CALL [MySubScript].uws
   ├DLL 関数
   ├COM オブジェクト
   ├PowerShell スクリプト
   ├DOS コマンド
   ├EXEC 各ファイルの実行
   └キー、マウス、コントロールの制御

◇UWSC 関数の呼び出し
 ┌COM オブジェクト イベント
 ├キー イベント
自作関数


がんばれば Win32API 使ってメッセージループできるけど向いてない。
ウィンドウクラスだけダミーで作って
GetMessage の後、DispatchMessage をせずに UWSC スクリプトの中で回せば簡単だけどこれは非推奨。


HSP に、ウィンドウメッセージ受信用 DLL (hsgetmsg.dll) がある。
これは HSP 専用プラグインだが、これと同様の DLL があれば UWSC でも簡単にメッセージを受信できる。
ウィンドウ関連の構造体データを DOM 的にアクセスできるようになれば、
ネイティブコントロールの作成とかも手軽にできるようになるかもしれない。
あ、それをやってくれるのが seraphyscripttools とか SFCmini のような COM オブジェクトなのか。

9:名無しさん@お腹いっぱい。
13/05/01 23:32:52.72 2h2u3XE30
UWSCのグループチャットってやつか
作者同士がUWSCネットワークを介して交流とか夢が広がるな

10:名無しさん@お腹いっぱい。
13/05/02 22:13:22.41 0OJElBe90
Aは画像認識→あったらクリック という命令として
今の自分の書き方だと [A1 A2 A3 … A25]
みたいに画像認識がすごく多くて1週するのに時間が結構かかっています。
↓みたいに命令を実行させたいのですが、どう書けば良いでしょうか?

・A1~A20は連続の3個を1ブロックとして、どれか1個実行されたら1個ずつずらしていく
  例:[A1.A2.A3]→どれか実行→[A2.A3.A4]→どれか実行→[A3.A4.A5]→…
   →[A18.A19.A20]→略→[A19,A20.A1]→略→[A20.A1.A2]→略→(最初に戻る)
・A21~A25は常に実行

11:名無しさん@お腹いっぱい。
13/05/03 11:21:57.02 WnnnYhHu0
>>10
3つずつ
for i = 0 to (length(A)-1)/3 step 3
 jMax = i + 2
 if length(A)-1 < i+j then jMax = length(A)-1
 while true
  for j = i to jMax
   ifb CHKIMG(A[j])
    処理
    break 2
   endif
  next
  // ここで毎回の処理
  sleep(0.1)
 wend
next

処理後に exit する関数にすれば
for i のループ
 3つずつの関数(A, i)
 毎回処理する関数(A, 開始位置, 終了位置)
 sleep(0.1)
next
って感じで少しすっきりする。

12:名無しさん@お腹いっぱい。
13/05/03 11:44:55.02 WnnnYhHu0
URLリンク(cx20.main.jp)
UWSC の GUI 版 Hello World! ソース見てびびった。
UWSC も PowerShell も、C#のソースを文字列定義して呼び出してるだけ。

ただ、.net ”開発”環境もいらないし
PowerShell 実行制限を迂回できると言うことで、
単に実行するだけならいい環境だったりするかも。


で、その下の Lua ってのが Win32API 使ってGUI使ってる。
Lua は以前チャレンジしようとしてやっぱ手が出なかったんだけど、
ネイティブの GUI が使えるとなると・・・
ま、RAD ツールがないと面倒なんだけどね。

それで、ちょっと、 UWSC と Lua の言語比較してみた。
すると、Lua の記述が UWSC と近いことが判明。
今までは Lua っぽいコードばっかり見てたから受け付けなかったのかな。
UWSC と違う部分は C言語っぽい。
URLリンク(docs.google.com)

最初は UWSC に Lua を組み込もうかと思ってたけど
見れば見るほど「Lua すげー」ってなってる。
コールバックが使えるスクリプトとして、MIKO スクリプトってのも考えたけど、
Lua なら UWSC にコールバック機能を持たせることができるかも。よく知らないけど。
UWSC+API でやるのとどっちが簡単だろうね。

13:名無しさん@お腹いっぱい。
13/05/03 20:40:37.35 OYSIXHk10
>>11
ありがとうございました
改善案からさらに改良していくのが面白い(できたら

14:名無しさん@お腹いっぱい。
13/05/03 20:40:45.70 wT0yks5g0
>>1
乙!

15:名無しさん@お腹いっぱい。
13/05/03 22:27:43.92 WnnnYhHu0
>>11 は /3 とか変なのが残ってたね。
j を i*3 ~ i*3+2 ( i は step 1 )でやるか
i ~ i+2 ( i は step 3 )でやるか迷ってて消すの忘れてた。


UWSCと関係ないけど、
3回ずつだと端数が出るからループ脱出条件が2つになる。
もし、3で割り切れる個数ならそもそもループする必要がなく、こう書ける。

for i = 0 to max step 3
 print data[i]
 print data[i+1]
 print data[i+2]
next

端数をループの外で書けば端数の問題は解消するけど、同じ処理を他の場所でやることになる。
C言語とJavaではこんな書き方がある。
書き換えるのがめんどいのでこぴぺ。

register n = (count + 7) / 8;
switch(count % 8) {
 case 0: do {  *to = *from++;
 case 7:     *to = *from++;
 case 6:     *to = *from++;
 case 5:     *to = *from++;
 case 4:     *to = *from++;
 case 3:     *to = *from++;
 case 2:     *to = *from++;
 case 1:     *to = *from++;
      } while(--n > 0);
}

16:名無しさん@お腹いっぱい。
13/05/04 00:57:47.63 EHWA8zF+0
RGB=PeekColor(512,384)
これやると真ん中指定しますが
X座標を502~522、Y座標を374~394くらいの範囲で指定したいんですけどできますか?
イメージはこんな感じです
URLリンク(www1.axfc.net)

17:名無しさん@お腹いっぱい。
13/05/04 01:02:00.35 jsdWHLfU0
できますよ

18:名無しさん@お腹いっぱい。
13/05/04 02:02:27.40 EHWA8zF+0
>>17
よかったら教えてください

RGB=PeekColor(502,374,522,394)
↑こうではないですよね・・・?

19:名無しさん@お腹いっぱい。
13/05/04 09:57:57.81 RMywkBWm0
>>18
範囲でってどういうこと?
A. その周辺の色を混ぜ合わせた色?
B. それとも、その周辺のドットの集合?

どちらにせよUWSCでは2重ループで繰り返し実行ですね。
A の場合はそれを配列に入れて平均値を計算。

WindowsAPI なら BitBlt で矩形指定してコピーもできる。
ただし、メモリイメージそのままなので色の平均値は自分で計算だし、
BitBltするまでがちょっとめんどい。

20:名無しさん@お腹いっぱい。
13/05/04 13:10:04.43 EHWA8zF+0
>>19
RGB=PeekColor(512,384)
これだと画面の真ん中のみ有効じゃないですか
画面の真ん中から少しずれてもいいように多少大きく範囲をとりたいと思ってるんです

色ではなく場所です

21:名無しさん@お腹いっぱい。
13/05/04 13:36:51.44 RMywkBWm0
>>20
いや、PeekColor に範囲とかないから。

アクセサリのペイントを開いてスポイトツールを使ってみて。
それが PeekColor と同じ機能。

22:名無しさん@お腹いっぱい。
13/05/04 14:10:16.36 bgLiGgAt0
>>20
だから取りあえず2重ループでやってみればいいじゃん
スピードが遅いんならそんとき別の方法を考えれば良いんだし

23:名無しさん@お腹いっぱい。
13/05/04 14:13:21.57 fhgFSR4lT
範囲をとりたいってどういう意味だ

24:名無しさん@お腹いっぱい。
13/05/04 18:52:56.14 D1FvgZDG0
なんか1ドットの画像用意してchkimgのほうが…


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