[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/19 04:01 / Filesize : 303 KB / Number-of Response : 1078
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

自動化ツールUWSC使いよ集まれ16



1 名前:名無しさん@お腹いっぱい。 [2015/11/11(水) 13:45:28.80 ID:+oPzgSay0.net]
Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html

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

●UWSC - Wikipedia
ja.wikipedia.org/wiki/UWSC

●使い方・基礎解説学習サイト
uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
www.confrage.com/uwsc/
necro.jp/dev/uwsc/
park14.wakwak.com/~simizu/uwsc/fruwsc.html
canal22.org/
big.tm.land.to/handbook/uwsc.htm
www.game-rev.com/review/gameut/uwsc.html

●スクリプトテンプレサイト
izagne.com/uwsc/
scripts.web.fc2.com/
www.nagomi-jp.net/~liners/
nem.symphonic-net.com/uwsct/0610uwsct.html
siromasa.digi2.jp/uwsc/
iriyak.adam.ne.jp/uwsc.html

前スレ 自動化ツールUWSC使いよ集まれ15
anago.2ch.net/test/read.cgi/software/1436671958/

29 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 08:59:23.55 ID:IhUc+KMu0.net]
初歩的でスマンが質問させてくれ

去年の12月にDLしたフリー版を使ってたんだがwin10環境で動くのか試したら動かなかった
最新版DLしてもう一回動かしてみたら今度はIF文が閉じてませんみたいな構文エラーが出た

UWSC本体のバージョンで構文まで変わっちゃうのか?
win10で使おうと思ったらまた組み直さないとダメ?

30 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 09:42:35.18 ID:IpRJAxcj0.net]
破壊的な仕様変更があれば更新履歴にあるさ
IF絡みだと
14/02/03 ver4.9c IF文のブロック文にてIFB-ENDIFではなく、IF-ENDIFでも可にした
これかな

31 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 09:52:52.41 ID:IhUc+KMu0.net]
使ってた方のバージョン見たらVer 5.0.4.0 2014-12-14ってなってるから多分違うかな
でも更新履歴ざっと見てもそれらしいのが見当たらないし、ちょっと弄ってみるか

32 名前:名無しさん@お腹いっぱい。 [2015/11/14(土) 09:56:22.61 ID:tGYrtzLK0.net]
仮想化でwin10使ってるが、win7で組んだ物をそのまま持って行っても動く
特定の構文にバグが起きてる可能性もあるが、勘違いの可能性のほうが大きいだろうな

33 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 10:01:32.40 ID:IhUc+KMu0.net]
最新版をwin7でやってみたらやっぱり今まで使えてたのが構文エラー出たわ
過去のバージョンで大丈夫だったのがダメになってるっぽい

34 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 10:59:52.55 ID:PfOb/o3h0.net]
そういうのは大体お前の記述ミスだ

35 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 11:48:55.59 ID:BNINhbNt0.net]
>>27
せめて動いたUWSCのバージョンとOS、動かないUWSCのバージョンとOSを教えてあげないと
>>29さんでもエスパーしきれないかもしれない

36 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 13:03:47.71 ID:9wBwsNfQ0.net]
構文エラーが出るソース

37 名前:コードを提示できないってことは
そもそも過去に動いてたってのが勘違い、あるいは妄想だろう

どうせコードを全行コピーしてなかったとかいうオチだろ
[]
[ここ壊れてます]



38 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 13:10:52.02 ID:NA9ksDwd0.net]
>>31
いいからさっさとコードうpしてみろよ解析好きなおせっかいがいっぱいいるぞ

39 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 13:22:40.54 ID:IIbYKaCR0.net]
win7からwin10にしたらスクリプトエラーではなくてフリーズするようになったな
そこまで実害はないけどちょっと面倒

40 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 13:22:56.45 ID:GE7AjOYz0.net]
俺も5以上のバージョンのUWSCだと頻繁にフリーズするので未だに4.9c使ってる。
構文エラーだとどこの行がおかしいってすぐにわかるんだが固まるだけなのでわからん。
5000行近くあるのでどこがどうなってるのか調べる気が起きない…

41 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 16:56:44.98 ID:RCUdLg7b0.net]
5000行とか。どんだけ低レベルなコーディングしてんだよ

42 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 17:18:01.21 ID:GE7AjOYz0.net]
流石に1ファイルじゃないよ。
関数は分類して5つほどの別ファイルにして
CALLで一まとめにしてるけど、関数のどこがガンなのかわからんし。

43 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 17:58:18.92 ID:IpRJAxcj0.net]
ある程度以上の規模になったら
デバッグ(トレース)フラグを用意して開発
普段はオフにしつつ運用
何かあったらオンにして診断するでしょ

44 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 18:38:55.24 ID:GE7AjOYz0.net]
やたら大きくなってしまって収拾がつかないけど、プログラミング全般において素人で
遊びでやってるもんなので所謂デバッグとかやり方知らない。

触らぬ神にたたりなしって感じでバージョンアップできずにいる

45 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/14(土) 22:00:21.04 ID:oICue9LH0.net]
いつやるの?今でしょ!

書き溜めた無駄に長いコードの整理は考えてる以上に身になる
これとないチャンスやで

46 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 01:28:43.76 ID:l+eb1X660.net]
おれが300行にまとめてやんよ

47 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 11:15:02.57 ID:De6xOu7/0.net]
ちゃんと確認したら11ファイルに267個の関数になってた
どの関数がどの関数から呼び出されてるのかちゃんと把握してないし
フローチャートとか書いてないし、あんまりコメントも残してないから
我ながら訳が分からん。大体の流れしか把握してない…
こっちを書き換えたらあっちでトラブってとか日常茶飯事orz



48 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 11:27:52.84 ID:hnZ7/qL70.net]
> ある程度以上の規模になったら
> デバッグ(トレース)フラグを用意して開発
> 普段はオフにしつつ運用
> 何かあったらオンにして診断するでしょ


フラグだと On/Off しかできないから DebugLevel で制御してる。

49 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 11:29:41.24 ID:tIw6v2Vv0.net]
変更が怖いならバージョン管理導入すればいいよ

50 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 12:10:43.83 ID:wd/6nnII0.net]
ちゃんと動いて目的果たしてるなら
バージョンアップとかいらなくね

51 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 12:23:24.06 ID:De6xOu7/0.net]
それ。

ただ、4.9cではfor-in構文が使えない。使いたいなとは思ってるんだけど。

52 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 13:26:11.73 ID:L+1ycDEI0.net]
言うほど使うか? for to で十分なんだけど

53 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 13:51:26.50 ID:3LQPqe8Y0.net]
for inてfor eachと同じ内容?

54 名前:名無しさん@お腹いっぱい。 [2015/11/15(日) 14:11:04.40 ID:yRPypCxb0.net]
Dim array[2];
print VARTYPE(array);

上記を実行すると、以下のエラーがでます。
なぜなのでしょうか。(uwscのverは5.2.0)

変数:ARRAY 次元

55 名前:数が合いません
2行目:PRINT VARTYPE(ARRAY);
[]
[ここ壊れてます]

56 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 14:44:31.81 ID:3LQPqe8Y0.net]
>>51
引数の配列に添字追加

57 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 17:30:57.89 ID:Xc7Hv4el0.net]
SafeArray()で取った配列ならVAR_ARRAYが返るのに
DIMの配列だとVAR_ARRAYが返らないどころかエラーになるのは何故?って質問なのでは?



58 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 18:03:21.92 ID:JWUP4/i00.net]
普通の配列はLENGTHかRESIZE使って判断しろって事でしょ
要するにVARTYPEは配列の中身のチェックしか出来ない

59 名前:50 mailto:sage1 [2015/11/15(日) 18:37:18.45 ID:yRPypCxb0.net]
>>53さんが書いてくれている通りの疑問です。

60 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 20:41:38.88 ID:YS+SiHiA0.net]
>>55
作者がそう作ったからそうなのであって、作者以外の誰がその疑問に答えられると思ったの?

61 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 23:16:55.13 ID:UTZQ0cqw0.net]
Dimで0〜9を定義した配列から最後の数字(9)を取り除くにはどうしたらいいでょうか。
再定義するとエラーになり、SETCLEAR、RESIZEはうまく扱うことができませんでした・・・。

現在定義した数をシャッフルしていて、その結果から9を省きたいのです。
単純に任意の配列を削除、或いは再定義できればいいのですが・・・。
初心者のため発想が貧弱でして手詰まりです・・・アドバイスお願いします!

シャッフルはこんな感じのをCallで呼び出してます。
Procedure shuffle(var CarSel[])

Dim n = length(CarSel)
Dim i, r, tmp
for i = 0 to n -1

r = random(n)

tmp = CarSel[r]
CarSel[r] = CarSel[i]
CarSel[i] = tmp
next

Fend

62 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 23:44:35.20 ID:De6xOu7/0.net]
普通にRESIZEすればいいだけの話では?

RESIZE(CarSel, 8)

63 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 23:45:03.04 ID:YS+SiHiA0.net]
>>57
本当に配列のサイズを変更して最後を取り除くことができないなら、
扱う配列の長さをlengthで取るのではなく、
別の変数や配列の頭に入れるなりして管理すればいいのでは?

ちなみに
DIM CarSel[]=1,2,3,4,5,6,7,8,9
print length(CarSel) + ":" + JOIN(CarSel,",")
RESIZE( CarSel, length(CarSel)-2 )
print length(CarSel) + ":" + JOIN(CarSel,",")
を実行したら
9:1,2,3,4,5,6,7,8,9
8:1,2,3,4,5,6,7,8
となる

64 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 11:34:56.95 ID:kzKcDPQp0.net]
シャッフルで混ぜてるせいかうまくいかないですね・・・
ttp://i.imgur.com/4XcV618.png

Dim n = length(CarSel) を毎回変化させられればResizeと合わせて実現できるっぽいんですが、
引数で変化させようとCALL ShuffleNumbers.uws(10)
として Dim n = PARAM_STR[0]にするとエラー、
Resizeのあとに手動で Dim n = 9 と
記述しても再定義でエラーになってしまいます。

多分Procedureで10桁用、9桁用みたいにそれぞれ作ればいいんでしょうが
できればシンプルなコードで柔軟に使っていけたらいいなと思っております・・・

65 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 12:07:44.32 ID:Xu2hTlmU0.net]
>>60
shuffle関数に要素数の引数追加してみたら?

66 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 12:45:32.71 ID:9wFZf3al0.net]
>>60
再定義でエラーってことは、nを2回定義してるんじゃないの?

67 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 14:40:41.84 ID:W0rLrKGS0.net]
>>60
期待値が良くわからないけど、こういうこと?

Dim Original[] =0,1,2,3,4,5,6,7,8,9
Dim CarSel[0]

copyArray(Original, CarSel)
shuffle(CarSel)
print Length(CarSel) +":"+Join(CarSel,",")

copyArray(Original, CarSel)
Resize(CarSel,8)
shuffle(CarSel)
print Length(CarSel) +":"+Join(CarSel,",")

Function copyArray(var src[], var dst[])
  for i=0 to Length(src)-1
    Resize(dst, i)
    dst[i] =src[i]
  next
  Result =i
Fend



68 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 15:44:23.25 ID:9tIhQjLx0.net]
再定義でエラーになってるってことはその言葉通り定義が再び行われてるからエラーになってるんであって…
定義している部分を見れば一目瞭然なんでは?

既に定義された変数に値を代入するなら定義をする必要ないんだから
その部分のDIM外せばいいだけなんじゃ…

69 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 15:55:39.20 ID:9tIhQjLx0.net]
今まで何を問題としてるかわからなかったけど、もしかして問題となってるのはここ?

> //結果(9通り最大8)
> 9: 9,1,4,6,8,5,7,3

2回目のシャッフル結果に9が入ってて最大が8ではないのは
1回目にシャッフルされた配列を入力してるから当然の話だよ。
resizeでは配列の最後を切り飛ばすだけで、内容の最大値を定義するなんて機能は無いから
1回目の結果の最後が9で無ければ2回目の結果に9が入る。

70 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 16:32:44.46 ID:NGCV+QQo0.net]
「0-9の数字をランダムに使用するが、ある条件下で0-8、0-7のように振れ幅が変わる」
というような挙動をするものが必要だったのですが、>>63さんのコードで実現できました。

エラーになってる原因はわかるが、それに対する解決法がわからないため質問してました。
引数で渡すのはA = PARAM_STR[0]として、Aを関数に代入しても「Aが定義されてない」といわれよく分からず…

とりあえず自分が配列や要素について基本的な理解が足りていないことがよくわかりました。
引数の扱いやFunctionとProcedureの使い分けなど、皆さんのアドバイスを基に研究したいと思います。
ありがとうございました・・・

71 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 17:41:55.59 ID:U7RMM+Pu0.net]
少し前に重複しない乱数を希望した数だけ予め用意したいって質問していた人かな?
その実装方法だと関数を呼ぶ側と呼ばれる側の連携密度が高すぎると思うよ
こんな感じで乱数配列が欲しい時に一度作成したらそれは捨てる位の方が疎結合になって保守性が上がると思う

For item In GetRandomArray(10)
 print item
Next

Function GetRandomArray(value)
 result = SAFEARRAY(0, value - 1)

 For i = 0 To value - 1
  result[i] = i
 Next

 For i = 0 To value - 1
  r = Random(value - 1)
  swapValue = result[i]
  result[r] = result[i]
  result[i] = swapValue
 Next
Fend

72 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 17:47:31.69 ID:U7RMM+Pu0.net]
繰り返しテストしてみたらこれ入替えでバグってるねw
すまん

73 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 17:50:15.00 ID:U7RMM+Pu0.net]
入替え部分の添字だけ差し替え

  r = Random(value - 1)
  swapValue = result[i]
  result[i] = result[r]
  result[r] = swapValue

74 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 22:57:57.42 ID:NGCV+QQo0.net]
>>67-69
おぉ、参考にさせていただきます!
そうです前スレの終わり頃に質問した者です。
運用することを考えたら独立させたほうが柔軟になると…なるほど
関数やSafeArray等ちゃんと理解して使えるよう頑張ってみます、ありがとうございました

75 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 00:19:41.16 ID:r3ygr5190.net]
IE = GETACTIVEOLEOBJ("InternetExplorer.Application")
IE.document.querySelector("#hogehoge").click()

このようなスクリプトで、querySelectorで実際には無いセレクタを指定した時
COMエラーで落ちるのですが、存在しない場合にエラー無しでスルーするような方法は
try-exceptを使ったり、あらかじめ存在確認してからクリック

if IE.document.querySelector("#hogehoge")&l

76 名前:t;>NULL then IE.document.querySelector("#hogehoge").click()

というような方法しかないのでしょうか?
スクリプト実行中にページの内容が書き換わって目標とするセレクタが消えて
COMエラーで落ちるというパターンが時々あって困っています。
[]
[ここ壊れてます]

77 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 01:11:47.62 ID:EmLKpCk20.net]
// COMエラーメッセージの抑止
COM_ERR_IGN
  // 何等かのCOM処理
COM_ERR_RET
でどうですか



78 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 02:35:05.29 ID:X+X/Girc0.net]
ハンゲのリングドリーム(Flashゲーム)でマクロを組んでるんだけど、MOUSEORGをMORG_DIRECTにするとフラッシュ上の
ボタンをうまく押せない(当該ボタン上にカーソルを合わせると押そうとしているような挙動はするんだけど実際には押せていない)
状態になってMORG_CLIENTを指定するとしっかりボタンを押せるんだけど、これってどうにかMORG_DIRECTでボタンを押せるよう
にすることは出来ないのかな?

79 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 08:30:36.92 ID:r3ygr5190.net]
>>72
こんな機能あったんですね。ありがとうございます。

80 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 15:14:10.19 ID:r3ygr5190.net]
> CALL UWSファイル名.uws(xxx, xxx, ...)  // 引数を付けた場合に値は PARAM_STR[] 変数に入る

CALLでスクリプトを呼んだ時のように、不定個の引数を受け取って
内部で配列として扱う関数を作りたいのですが、どうしたら出来るでしょうか?

81 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 16:20:50.27 ID:t2yi2j7b0.net]
SafeArry使いなよ

82 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 16:58:26.39 ID:r3ygr5190.net]
SafeArrayを使うとは具体的には?

引数が不定数だと、実行時に引数の数が違うと怒られてしまうんですが。
配列を作る関数が欲しいのですが、順序が逆の
先に配列を作ってから関数に入れる事しか思いつかないです。

83 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 19:35:50.10 ID:kvx4k+FL0.net]
pram[] が使える言語も受け側は配列として処理するだけの糖衣構文
あると便利な機能だけど無いとコレが出来ないって事はない
結果に加工した配列が欲しい場合はSafeArray使えって話でしょ

UWSCはpram[] は使えないので配列長なしの配列を引数に使うしか無いので
こんな感じで引数用の配列を用意する必要があるのは仕方ない

Dim a[] = 1,2,3
Dim b[] = 5,10
Print JOIN(test(a), ",")
Print JOIN(test(b), ",")

Function Test(value[])
 Dim iMax = Length(value) - 1
 result = SAFEARRAY(0, iMax)
 For i = 0 To iMax
  result[i] = value[i] * 2 //2倍に加工
 Next
Fend

//実行結果
//2,4,6
//10,20

84 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 23:27:48.86 ID:3Sfs5iCK0.net]
引数を多目に書いておいて関数内で処理するんはダメなのか?

85 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 00:57:58.26 ID:DCQo+QOr0.net]
要するに不特定の因数を受け取って配列を吐き出したいんだろ?

関数内で配列を作るか関数外で用意しておいたところに入れるかの差はあるが
関数内で配列を作って外に放り出すにはSafeArrayしかないし
関数外であらかじめ用意しておくなら配列数でリサイズすればいいだけじゃないっていう話

関数に不特定の因数を渡す際には
セパレータ記号を付けて一つの因数にしておいて、関数内で分解すればよろし

dim array = test(a+"#"+b+"#"+c+"#"+d+"#"+e)

function test(param)
testarray = safearray(0, 0); testarray[0] = token("#", param)
while pos("#", param); testarray[resize(testarray, resize(testarray)+1)] = token("#", param); wend
result = testarray; fend

86 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 10:58:24.63 ID:R9oruk2c0.net]
UWSC初心者です。つまづいてしまったのでどなたかお教えください。
Bluestacks上でアプリを起動してマウス操作などの自動化を行いたいのですが記録されても再生するとマウスがBluestacks上動いたりクリックしたりしません。PCゲーでは今まで動いていたのですが‥
なぜでしょう?どなたかお

87 名前:願いします。 []
[ここ壊れてます]



88 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 11:08:48.43 ID:6gzLq2020.net]
>>80
内部で配列として扱いたいだけで、出力は配列というわけではないのです。
結局のところ、不特定数の引数を受け取りたいだけなんですが、
そのままの入力はどうやら無理のようですね。
素直に配列作って渡すことにします。
無名配列でも作れたらよかったのですが。

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

89 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 11:24:54.22 ID:zICgyZ9/0.net]
>>82
単純に受け側でsplitで良いような…

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 11:37:45.83 ID:6gzLq2020.net]
受け取る変数も不特定なのでセパレータが被る恐れがあります

91 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 14:17:53.45 ID:95T98vMj0.net]
特定の画像が出た時に直前の作業をもう一度起こす事で安定性を上げたいです
a→b→cと処理勧めてきて
while
if checking
処理dに進む
break

elseif checkingエラー画面
call b→c処理を書いた別ファイル
endif
wend
みたいな形でなんとか動かせてはいるんですけど修正の作業とかが面倒なので別のアイデア無いでしょうか

92 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:02:48.84 ID:WUTAg8ze0.net]
>>85
b→cを別ファイルにするだけではあかんの?


a→
call b→c処理を書いた別ファイル
while
if checking
処理dに進む
break

elseif checkingエラー画面
call b→c処理を書いた別ファイル
endif
wend

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:07:24.77 ID:WUTAg8ze0.net]
安定性を上げる手段としては、状態判定と処理をループにしておくという手も。

while true
状態判定 a →処理 a
状態判定 b →処理 b
状態判定 c →処理 c
状態判定 d →ループ抜ける
wend

処理 d

94 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:15:35.51 ID:gRViVlbY0.net]
>>84
分ってるかもだけれど
セパレータは2文字でも3文字でもOK

95 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:38:20.45 ID:bJyAh8OV0.net]
>>88
自前でセパレータを仕込むのなら
もう自分で配列造るのと何も変わらないさ

96 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 16:34:39.80 ID:95T98vMj0.net]
>>87
なるほど
手探りで一本で書いて後から必要な部分だけ別ファイル用意してcall・・・みたいな事してぐちゃぐちゃになってしまったんですが最初かは処理毎に作っておいて判定してcallする形にすればあちこち修正しなくても済みそうですね
その方向で整理してみます ありがとうございました

97 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 16:56:34.30 ID:nYaQHfF60.net]
>>90
お前は次に、長時間動作させているとエラーでUWSCが落ちる、と書き込む



98 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 17:20:08.96 ID:bJyAh8OV0.net]
そして私はスタックオーバーフローしないようにCALLは出来るだけ最初に1回
CALL先のスクリプトは関数化して本処理ではその関数を呼ぶと安定するよとFAQなアドバイスしておくのだった

CALLをループ内に仕込むのは展開された動作を把握しきっていないと
資源の衝突や初期化周りで予期しない動作が発生するトラブルの原因のトップランカーさんです

99 名前:名無しさん@お腹いっぱい。 [2015/11/18(水) 20:34:52.95 ID:ya19mM+o0.net]
下記のように画像判定を使ってループを処理した際に

repeat
状態判定a →処理a
状態判定b →処理b
until chkimg(処理abが実行された後の画像)

ループ中にエラー(Flashがクラッシュするなど)が発生した際にどのように対処すればいいでしょうか。
現在苦肉の策としてFlashがクラッシュした際に出る画像を判定するプロシージャをThreadで走らせておいて
エラー画像を検出したらエラーフラグ(Publicなエラーフラグ変数)をTrueにして各repeat内でフラグが立っていたら
breakするように記述しているのですが、repeatすべてにこの処理を導入しているため大変見苦しいコードとなって
しまっているので何かいい方法はないかと・・・

100 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 20:52:19.47 ID:bJyAh8OV0.net]
エラー画像を発見したら終わらせるだけなら
寧ろメインループをそっちにして
別スレッドで他の処理すると

101 名前:yだよ
終わらせたくなったらメインループを抜けるだけで全て終わるからね

処理毎の終了処理が必要なら今の方法しか無いかな
[]
[ここ壊れてます]

102 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 20:57:06.76 ID:bJyAh8OV0.net]
但し、デバッガがメインスレッド以外のスレッドのデバッグにマトモに対応していないから
完成した後にそうするか最初からprintデバッグする必要があるけれどね

103 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 20:57:49.77 ID:JQ1Q8izi0.net]
Flashのクラッシュみたいな大きなエラーはもう別プロセス(別UWSC)で監視しちゃえば。

104 名前:名無しさん@お腹いっぱい。 [2015/11/18(水) 21:23:51.36 ID:ya19mM+o0.net]
クラッシュを検出したらリロードを行ってまた処理を行うようにしているので
メインループを抜けてしまうのは出来ないです。

別プロセスでエラーを監視した場合、メインプロセスを再起動させて処理を再開するというような感じになるのでしょうかか?

105 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 21:49:32.35 ID:bJyAh8OV0.net]
終わらせないなら特に楽にならないから今まで通りで良いんじゃないかな

UWSCから他のスレッドを殺す事はやろうと思えば出来るけれど
予めスレッドの起動毎にプロセス番号をグローバルな配列に保存して
それらをゴニョゴニョって感じになるから
今のフラグでループ制御しているのと面倒臭さは大して変わらない

でも一旦終わらせて、それを検知する別スクリプトが再起動させるという考え方もあるんだけれどね
(ログに書き出すとか色々方法はある)

106 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 23:05:59.51 ID:R9oruk2c0.net]
>81です
初歩的な質問すぎて呆れてしまわれましたかね?ごめんなさい

107 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 23:15:08.17 ID:xUeF/cfW0.net]
失せろカス



108 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 00:52:14.47 ID:d6Osv4Zy0.net]
誰か教えてやれよ

109 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 19:16:18.41 ID:5LbifL7P0.net]
>>97-98
その辺の実践経験者から言わせてもらうと、
結局は人間が操作するならどういう流れで操作するか、その流れのコード化に尽きる。
処理の区切り区切りの尽くに、クラッシュその他の予期しない自体を検知する処理を行う関数を挟み込む。
何らかの無限ループがあればその内側に必ず挟みこむか、無限ループをやめて回数制限またはタイムアウトを設ける。
クラッシュを検知してリロードして処理を1からやり直すということは、
その1からの部分に何時でも戻れるよう、プログラムの十分な構造化が要求されることは言うまでもない。
関数化、関数化そして関数化だ。関数が出来過ぎてしまうので分類だ。凄まじい数の独自関数群になる。

>>81
使ったことのない対象なので無責任に答えるが、
記録できないだけなのであればキャプチャ画像から割り出した座標をDOWN-UPでゆっくりクリックするのを書いて、
それでも認識されないか否か試してみたら?認識されないのなら不可能だから諦めろってことだ。

110 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 22:29:12.84 ID:ZWZs69JY0.net]
>>81
高レベルではなく低レベル記録する

111 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 22:43:42.91 ID:oG2sQJna0.net]
仮想OS上のアプリをホスト側から操作しようなんてのは無理

112 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/20(金) 09:33:31.45 ID:Pd39Iv5K0.net]
フラッシュは、ジョブズが嫌ってた。
firefoxとも相性が悪くてクラッシュしまくりだから大嫌い!

113 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 10:27:37.94 ID:kt2iHckZ0.net]
UWSCのスレッド内からIEの操作を行うと、
アプリケーションは、別のスレッドにマーシャリングされたインターフェースを呼び出しました
ってエラーが出るんですが、回避の方法はありますかね?

IEobj = CREATEOLEOBJ("InternetExplorer.Application")
thread test_thread(IEobj)
msgbox("")
// ここまでmain

procedure test_thread(IE)
PRINT "IE Navigate start"
IE.Navigate("www.google.co.jp")


114 名前:PRINT "IE Navigate end"
wait(IE)
fend

procedure wait(IE)
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
fend
[]
[ここ壊れてます]

115 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 11:26:31.22 ID:B04dZN/C0.net]
そのケースならメインで CREATEOLEOBJ する意味がないと思う

念のため thread test_thread(IEobj) で test_thread はメインとは別スレッドになるけれど
test_threadから wait を呼び出しでも wait は test_thread と同じスレッドだからね

同じ OLEOBJ を複数のスレッドで使いたい場合は
どちらかを GETACTIVEOLEOBJ にしたら良いと思う

116 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 12:11:56.37 ID:kt2iHckZ0.net]
>>107
サンクス
メイン側で生成したオブジェクトをスレッドに渡しても(グローバル変数でも駄目だった)、動かないって事で
すかね。

メインでタブを二つ作ってそれぞれのオブジェクトをスレッドに渡して処理させようとしてたんだけど、タブは
作ったうえでスレッド側でオブジェクトを生成するようにしたら期待する動作になったようです。

117 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 17:03:31.49 ID:+ESe50Z90.net]
UWSCでループを用いないキー入力待ちって作れる?



118 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 17:25:25.61 ID:B04dZN/C0.net]
SETHOTKEYを使えば出来るよ
でも厳密にはこれは待たないからね
イベントドリブンなスクリプトになるイメージ

119 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:07:35.61 ID:+ESe50Z90.net]
それってホットキーの入力を待つ時には結局ループ系必要にならない?

120 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:24:22.67 ID:valwfeOZ0.net]
ならない

121 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:34:12.81 ID:+ESe50Z90.net]
>>110,111
ありがとう
やってみるわ

122 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:38:50.90 ID:B04dZN/C0.net]
ホットキーで割り込む隙もなくメイン処理が終わるなら当然終わるよ
キー入力の待機ループが不要なだけさ

123 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 21:26:37.91 ID:+ESe50Z90.net]
>>114
sleep中でも無視して関数呼び出してくれるんだね
これでPCへの負荷が激減した
ありがとう

124 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 17:32:21.47 ID:3BpSGfNj0.net]
test

125 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 22:48:31.92 ID:JF3Q3VkF0.net]
UWSCのウィンドウを出しておいて
右クリックからランチメニューを辿って
スクリプトを実行しようとしたとき
メニューにある「タスクトレイに格納」で
左クリックしてるわけでもないのに
タスクトレイに格納されてしまうことがあるけど
これは仕様なの?

ゆっくりやれば問題ないけど
ササッとやりたいときに
タスクトレイに格納されてしまって萎える

Free版 ver5.2.0

126 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 22:55:07.30 ID:qS8AAPnY0.net]
マウスが古くなっていてチャタリングが発生している可能性はゼロなの?

127 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:07:09.04 ID:W5FAQXAx0.net]
何言ってんだと思ってやってみたらなるほど

右クリックするとメニューが表示されるわけではなく、右ボタンを押下した時点(離す前)でメニューが表示される
そして丁度カーソルの位置にタスクトレイに格納がある。
そのため、メニューを開く時に右クリック(押して離す)をしてしまうと格納されてしまうことがある。

こういうことかな?
それなら右ボタン押してメニューを開いたら、押したままドラッグでランチメニュー→スクリプトの上で離すってやればいいんじゃね



128 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:30:20.08 ID:s/LW23zM0.net]
HOTKEYじゃ駄目なの?

129 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:32:44.91 ID:JF3Q3VkF0.net]
右クリックメニュー上で右クリックしても
決定したことになるのか

それは知らなかった






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<303KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef