トップページsoftware
1001コメント384KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2014/10/18(土) 11:46:19.83ID:yC04f7EM0
Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html

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

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

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

●スクリプトテンプレサイト
ttp://izagne.com/uwsc/
ttp://scripts.web.fc2.com/
ttp://www.nagomi-jp.net/~liners/
ttp://nem.symphonic-net.com/uwsct/0610uwsct.html
ttp://siromasa.digi2.jp/uwsc/
ttp://iriyak.adam.ne.jp/uwsc.html
0598名無しさん@お腹いっぱい。2015/01/17(土) 11:46:43.05ID:gGLHyJnh0
chrome開発者「何?ウィンドウの影に隠れて見えてないのに描画してるだと?高速化と省エネのためにそういう無駄が発生しないよう改良しよう。サムネイルに渡す縮小画像だけ描画すればいいよね。」
他のソフト開発者「さすがgoogle、俺達も真似しよう。」
UWSCユーザー「」
ソフト開発者「知らんがな」
0599名無しさん@お腹いっぱい。2015/01/17(土) 12:07:21.91ID:0LBfpaM+0
>>597
詳細設定→システムの所のチェックボックスのハードウェアアクセラレーションなんたらを消したら行けました
ありがとうございました
0600名無しさん@お腹いっぱい。2015/01/17(土) 18:01:06.69ID:3mJTrcde0
GUIでそのまま記録したものを等倍速で再生する方法ないですか?
0601名無しさん@お腹いっぱい。2015/01/17(土) 23:54:32.00ID:nZDbWDTl0
if ary[0]
 …
elseif ary[1]
 …
elseif ary[2]
 …
elseif ary[3]
 …
endif

こんな感じの構文をうまく短くする事って出来る?
if elseifを使いたいからwhileとかで回して全判定はしたくないんだ
0602名無しさん@お腹いっぱい。2015/01/18(日) 00:23:38.21ID:ZVysZL020
>>601
添字が全部違う上に if-elseif 縛りの時点でその書き方以外ないと思うけど
何がしたいのか分からんから何とも言えんな
06036012015/01/18(日) 00:29:12.77ID:V3DOXyGu0
自己解決
よく考えたらスッキリまとめれたわ
0604名無しさん@お腹いっぱい。2015/01/18(日) 00:32:42.92ID:ZVysZL020
ヽ(・ω・)/ズコー
06056012015/01/18(日) 00:43:22.91ID:V3DOXyGu0
なんかすまん
それじゃ代わりに悩んでいる事を質問するんだけど
キーを押下した瞬間を判定したいんだ
getkeystateだと押している間はずっと判定されるからさ

現状ではフラグを作って管理しているけど、すごく面倒なコードになっている
スマートなコードや関数等教えてください><
0606名無しさん@お腹いっぱい。2015/01/18(日) 01:46:42.40ID:ZVysZL020
public last_key_stroke = false
public use_key = VK_A // ここに実際に使う仮想キーを入れる

thread watch_key()

ここにメイン処理

procedure watch_key
while true
last_key_stroke = getkeystate(use_key)
sleep(0.1)
wend
fend

function trigger_key
if getkeystate(use_key) and last_key_stroke = false
result = true
else
result = false
endif
fend

押した瞬間が欲しい場合は自作の trigger_key 関数を使う
こんな感じではどうだろうか
0607名無しさん@お腹いっぱい。2015/01/18(日) 02:32:19.47ID:V3DOXyGu0
>>606
実際にコードを試したわけじゃないけど、この場合watch_keyスレッドのlast_key_strokeが更新されるタイミングによっては
trigger_key関数のlast_key_strokeがtrueになって最初の押下判定に失敗する事ありそうだけど、そんな事ないのかな?
0608名無しさん@お腹いっぱい。2015/01/18(日) 02:40:01.51ID:ZVysZL020
>>607
自分で試した時はならなかったけど watch_key の sleep は 0.01 ぐらいにしたほうがいいのかも?
そこら辺は自分の目で確かめてくれ
0609名無しさん@お腹いっぱい。2015/01/18(日) 09:02:55.39ID:St4EGFl00
そもそもRTOSの割り込みでも使わん限り、押した「瞬間」は補足できない。
0610名無しさん@お腹いっぱい。2015/01/18(日) 13:38:11.42ID:St4EGFl00
ダブルクリック検知コードがあった
http://anago.2ch.net/test/read.cgi/software/1389240960/652-661
0611名無しさん@お腹いっぱい。2015/01/18(日) 13:39:43.13ID:St4EGFl00
要件によってはSETHOTKEYで済むな
0612名無しさん@お腹いっぱい。2015/01/18(日) 23:13:53.67ID:ZVysZL020
mouseorg でバックグラウンド動作にしててもクリックを送信するとフォーカス取られるんだけど
フォーカスが移らないようにってできない?
0613名無しさん@お腹いっぱい。2015/01/18(日) 23:23:27.52ID:a71zhW4Y0
クリックイベントを受信した相手側の挙動だからなぁ~
散々言われているが
仮想化してその中で最前面で動作させ
その仮想環境をバックグラウンドで動作させるのが一番安定する
0614名無しさん@お腹いっぱい。2015/01/18(日) 23:37:21.07ID:Wm/Kkd/Y0
みんな仮想化には何使ってる?俺はWin8のクライアントHyper-V
裏でサービスみたいに動いてるから表のユーザがログアウトしても関係なく動いてくれるのと、
動的メモリ管理で複数インスタンス動かしてもメモリが圧迫されないのが気に入ってる
ただGPUが使えないからAeroが動かないのがネックだな
0615名無しさん@お腹いっぱい。2015/01/18(日) 23:45:29.83ID:ZVysZL020
仮想PC使ったことないけど導入面倒臭そう
OSも余ってるのないし
ブラゲのマクロのためにわざわざ導入するのも面倒だしフォーカス取られるのは我慢するか(´・ω・`)
0616名無しさん@お腹いっぱい。2015/01/19(月) 00:02:43.89ID:tbnDDgHR0
パソコン操作を自動化したくてぐぐったら
これとhimacroEXっていうのが出てきたんだけど
どっちがいいっすか?
0617名無しさん@お腹いっぱい。2015/01/19(月) 01:41:16.18ID:vCCkqJR90
himacroEX
0618名無しさん@お腹いっぱい。2015/01/19(月) 02:05:20.41ID:X/rcpTxc0
>>615
クソ簡単に導入できるけど止めたほうがいいよ
0619名無しさん@お腹いっぱい。2015/01/19(月) 17:29:40.92ID:CIkr+oOF0
[Ver5.1.0]
  IE関連の関数にて マルチフレームでの操作が NGなのを修正(KB3025390対策)
  文字関連の関数にて サロゲートペア1文字が カウント2されるのを 1に変更
  サロゲートペア1文字を 2でカウントする LENGTHS関数を付けた
  POWERSHELL関数にて \文字がエスケープシーケンスされるのを修正
  STATUS関数の ST_MONITORの値が MONITOR関数と符合してなかったのを修正
  Pro版:
  CREATEFORM関数にて フォームを 2つまで作れるようにした
  RecIE: マルチフレームにて 記録できないパターンがあったのを修正
0620名無しさん@お腹いっぱい。2015/01/19(月) 20:37:21.83ID:ET3cyewU0
Ver5.1対応の強調表示ファイル生成ツールを作ったのでせっかくなので公開
ttps://github.com/momosolo/UWSC-syntax-files

・秀丸
・Mery
・Notepad++
・サクラエディタ
の強調表示ファイル入り
0621名無しさん@お腹いっぱい。2015/01/20(火) 04:07:39.12ID:/+JTebX70
拾ったものになるんですがUWSCに読み込んでスタートを押すと

変数: INIF が定義されていません
14行目: TITL = READINI("Config","titl",INIF)

という表示が出て動いてくれません。
UWSファイルをテキストパッドで開いたところ文字化けしていて14行目も確認出来ないのですが
これはもう諦めるしかないのでしょうか。
0622名無しさん@お腹いっぱい。2015/01/20(火) 04:48:36.27ID:F+YzFycm0
>>621
文字化けしてるんだから、編集不可
諦めるしかない
0623名無しさん@お腹いっぱい。2015/01/20(火) 04:53:58.81ID:/+JTebX70
>>622
そうですか・・・。
ありがとうございます。
0624名無しさん@お腹いっぱい。2015/01/20(火) 09:12:46.21ID:rRj4Po5j0
プログラムのアンインストールをシンプルにする方法はないでしょうか。
現状appwiz.cplのショートカットをデスクトップに作ってそれを開いて、普通にクリックしてってアンインストールしています。

問題は、アンインストールするプログラムを選択する時にBTN関数で座標指定しているので、新しくプログラムをインストールすると位置が変わってしまい、またマクロを作り直さないといけなくなってしまいます。
0625名無しさん@お腹いっぱい。2015/01/20(火) 11:46:24.26ID:XbkCHKCR0
>>624
id = EXEC("control appwiz.cpl")
CTRLWIN(id, ACTIVATE)
REPEAT
 SLEEP(0.1)
UNTIL CLKITEM(id, "プログラム名", CLK_LISTVIEW or CLK_DBLCLK, TRUE)
0626名無しさん@お腹いっぱい。2015/01/20(火) 13:28:45.40ID:rRj4Po5j0
>>625
ありがとうございます。帰ったらやってみます
0627名無しさん@お腹いっぱい。2015/01/20(火) 23:16:38.47ID:z8197NVp0
アンインストールってマクロ化が必要なほど多用する?
0628名無しさん@お腹いっぱい。2015/01/21(水) 01:43:34.23ID:gOayFlWh0
愚問
0629名無しさん@お腹いっぱい。2015/01/21(水) 09:59:22.51ID:dejlWq//0
試用期間終わったら再度インストとか変わった使い方なんだろうけど、普通なら必要じゃないだろうけど
その人に取っては必要な物だったんだろうね
0630名無しさん@お腹いっぱい。2015/01/21(水) 10:06:02.89ID:ehWPHX5V0
不具合の検証とか、バカみたいに繰り返すことある
0631名無しさん@お腹いっぱい。2015/01/21(水) 15:10:23.41ID:8OMqoQgz0
レジストリは reg ファイル使って削除した後に、
インストールファイルはDELコマンドで削除
全部バッチファイルに書けてダブルクリック1回でアンインストールできるよ
サービス登録だのDLLだのも調べれば同様の方法がある
0632名無しさん@お腹いっぱい。2015/01/21(水) 16:46:38.92ID:MBcf6bm+0
どうせどっかのゲームのBOTマクロに仕込みたかっただけだろ
0633名無しさん@お腹いっぱい。2015/01/21(水) 17:03:16.77ID:m9M/5VVn0
今時、OSなら自動インストールできるような機能ついてるよね
0634名無しさん@お腹いっぱい。2015/01/21(水) 22:14:57.93ID:SOG/T3Ce0
仮想環境にインストールしてポイするだけで良いと…
0635名無しさん@お腹いっぱい。2015/01/21(水) 22:59:21.45ID:MUWZRKNF0
win8評価版だけど仮想化してマクロ動かしてみた
便利やな
こうやってテキスト入力しててもフォーカスを取られないのが良い
0636名無しさん@お腹いっぱい。2015/01/23(金) 18:54:07.45ID:1YMI9dxz0
AとBの2つのパソコンがあって、Aで手順x→y, 終わったらyでできた文書を共有フォルダに送り、Bでα→βの手順を実行し、またxに戻ってくるループを作りたいと思っています。

それで質問なのですが、Bのパソコンが共有フォルダに文書をうけとるまで待機するような記述の仕方ってどのようにしたらいいでしょうか。
0637名無しさん@お腹いっぱい。2015/01/23(金) 20:14:59.62ID:CU7RlmW+0
個人的にはAスクリプトとBスクリプトは分けてそれぞれ一括処理する方法が良いと思うよ

(面倒なポイントその1)
AとBそれぞれにインストールされている環境でしか出来ない処理だとしたら
一つのスクリプトでやろうとするとリモートデスクトップ等で操作する局面が発生する

(面倒なポイントその2)
ファイルのコピーや移動の終了検知はOS側が勝手に並行動作しちゃうので地味に面倒な処理です
一つのスクリプトでやろうとするとスレッド化による並行動作で操作する局面が発生する
共有フォルダを監視するスレッドまたはイベントを用意して対処する方法もありますが・・・
(興味があるなら「UWSC フォルダ監視」等で検索して)
0638名無しさん@お腹いっぱい。2015/01/23(金) 21:52:07.63ID:c21+gs780
つかフォルダ監視というそのものズバリのフリーソフトがあるな。
ファイルの有無をトリガーに何かを実行させるフリーソフトがそれかどうか忘れたが、
探せばあるにはあったはずだよ。
もちろんUWSCでもVBSでもVisualStudioでも何でも書けば出来るけど。
UWSCの本来の存在理由を考えれば、まずツール探すのをお勧めするな。
0639名無しさん@お腹いっぱい。2015/01/23(金) 21:58:39.13ID:PTVsKKY+0
あのソフトすぐバグるんだよ
0640名無しさん@お腹いっぱい。2015/01/23(金) 22:03:58.48ID:YeVYrbD/0
最初から共有フォルダで作業したらええんちゃうの
0641名無しさん@お腹いっぱい。2015/01/23(金) 23:05:49.91ID:bBI20xyX0
>>636
While True
 IF GETDIR(共有フォルダ\B,受信ファイル) = 1 Then Break
 Sleep(1)
Wend
α→β手順
加工したデータを共有フォルダ\Aに書き込み共有フォルダ\Bの元データを削除

こんな感じで行けるんでないでしょうか?
0642名無しさん@お腹いっぱい。2015/01/23(金) 23:17:34.07ID:CU7RlmW+0
それ受信中に動作開始する可能性あるぜよ
0643名無しさん@お腹いっぱい。2015/01/23(金) 23:26:06.02ID:bBI20xyX0
フェイルセーフは当人に考えてもらう方針で
0644名無しさん@お腹いっぱい。2015/01/24(土) 07:39:20.06ID:/00kd0Z40
ありがとうございました。参考にしてマクロ作ります!
0645名無しさん@お腹いっぱい。2015/01/27(火) 16:06:43.60ID:0S7bl2tT0
先日から勉強し始めた素人なのですが困ってます。
以下の様なスクリプトを書いて、正常に動作しているのですが、
30分ほど経過すると「UWSCは動作を停止しました」とアラート出て止まってしまいます。

HOGE1()
PROCEDURE HOGE1()
While True
IFB CHCKIMG(hoge.png) then
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y, 10)
HOGE2()
ELSE
sleep(0.1)
ENDIF
Wend
FEND
PROCEDURE HOGE2()
//内容は同じでHOGE2→HOGE3と呼び出し、最後まで行くとHOGE1を呼び出してループする

OSはWin7で、HDDのスリープやディスプレイの停止、スクリーンセーバーも全て切っています。
何か原因のヒントとかくれませんでしょうか。
0646名無しさん@お腹いっぱい。2015/01/27(火) 16:46:49.63ID:hBy/B/Rk0
スタックオーバーフローエラーですな。
正しいやり方は、

while 続行条件
  hoge1()
  hoge2()
  hoge3()
wend

とこの程度の基本が判らないのも、
最初に手を付けたプログラミング言語が
UWSCみたいなマイナーで
HELPが不親切なスクリプトだからなんだろうね。
0647名無しさん@お腹いっぱい。2015/01/27(火) 16:48:41.02ID:SdV0f61t0
>>645
hoge2を読んだらexitしないとダメ
ついでに言うなら関数内から関数を呼ぶんじゃなくて
HOGE関数では画像を見つけて規定処理が終わればEXITするようにして
Main関数のようなものを作って
HOGE1()
HOGE2()
HOGE3()
のように並べるほうがいいと思う
0648名無しさん@お腹いっぱい。2015/01/27(火) 17:02:42.70ID:hBy/B/Rk0
やりたいことがいまいち判らんけどこういうことか?

x=0; y=0
while true
  for i=1 to 3
    ifb waitImgAndGetXY("hoge"+i+".bmp", x, y)
      btn(left, click, x, y)
    else
      print "hoge"+i+".bmpは見つかりませんでした"
      exitexit
    endif
  next
wend
waitImgAndGetXY(waitBmp, VAR imgX, VAR imgY, timeout=3600)
  result=false; imgX=ERR_VALUE; imgY=ERR_VALUE
  for i=1 to timeout*10
    ifb chkimg(waitBmp) then
      imgX=G_IMG_X; imgY=G_IMG_Y; result=true; exit
    endif
    sleep(0.1)
  next
FEND

chkimgは必ずbmpで無くてはならないし、ファイル名は""で括って文字列として指定する必要がある。
0649名無しさん@お腹いっぱい。2015/01/27(火) 17:15:45.63ID:hBy/B/Rk0
ミス function句が抜けてた
function waitImgAndGetXY(waitBmp, ...

http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%95%E3%83%AD%E3%83%BC

hoge1,2,3の中で異なるアクションがあって別々に定義する必要があるなら、
それぞれfunctionにしてresultを返すようにし、
hoge1,2,3の戻り値で条件分岐するようにする。
0650名無しさん@お腹いっぱい。2015/01/27(火) 17:26:50.96ID:l+w+iP+N0
>>646-648
やりたいことは、Aをクリック → 画面遷移 → Bをクリック → 画面遷移・・・Cをクリック→Aをクリック
という一連の動作をループすることでした。

ネットに落ちているソースを見たりしながらやっているのですが、基本から間違っていたみたいですね・・・
いただいたソースを見ながら、基本構造から直してみます。
ありがとうございます!
0651名無しさん@お腹いっぱい。2015/01/27(火) 19:35:28.39ID:hBy/B/Rk0
dim targetImages[] = "hoge1.bmp", "hoge2.bmp", "hoge3.bmp"
dim resultImages[] = "huga1.bmp", "huga2.bmp", "huga3.bmp"
while true
  initSituation()
  while true
    for idx=0 to resize(targetImages)
      if !clickImg(targetImages[idx]) then continue 2
      if !waitImage(resultImages[idx]) then break 2
    next
  wend
  recoverySituation()
wend
詳細は自分で考えてね
0652名無しさん@お腹いっぱい。2015/01/28(水) 07:57:21.00ID:gDbqAnKa0
>>612
それがフラッシュで動作してるのかは分からんけど
もしそうならハードウェアアクセラレーションを有効化チェックを外してウィンドウを再起動すれば行ける

クロームでしか試してないけどな
0653名無しさん@お腹いっぱい。2015/01/28(水) 17:16:25.39ID:eK2T9EFP0
UWSCのSENDSTR関数を使いたいと思っているのですが
文字数が100文字とかになるとものすごく時間がかかってしまいます
コピペのように一瞬でペーストする方法などないものでしょうか?
0654名無しさん@お腹いっぱい。2015/01/28(水) 17:53:48.98ID:S2l+TJ5p0
>>653
クリップボードに文字列を入れておいて、
キー操作でペーストする
0655名無しさん@お腹いっぱい。2015/01/28(水) 18:05:52.68ID:BRdlOPlr0
うまく動かない
動きはするが使い物にならない

と質問する奴は大抵ソースコードを見せたがらない
その結果、いつまでたっても成長しない
0656名無しさん@お腹いっぱい。2015/01/28(水) 20:26:09.69ID:uAon0jx10
>>653
既に答え出てますが
初心者でも判るように書いて置きます

//文字をコピペで入力する方法
SENDSTR(0, "入力したい文章")
SCKEY(id, VK_CTRL, VK_V)
0657名無しさん@お腹いっぱい。2015/01/30(金) 01:08:09.66ID:9dkz127U0
例えば、一連の操作は同じで1ヶ所だけ座標を変えたい場合に、
デスクトップに座標値変更用のボックスを用意して簡単に座標を変更
できるようにしたいのですが、どのようにやれば良いですか?
0658名無しさん@お腹いっぱい。2015/01/30(金) 01:30:00.02ID:fnRsd/jl0
>>657
座標 = INPUT("座標?")
0659名無しさん@お腹いっぱい。2015/01/30(金) 01:58:32.97ID:9dkz127U0
>>658さんありがとうございます。
私も今input関数について調べていました。""これを使ってしまうと
文字としての戻り値になりませんか?そもそも座標の値は数値なのか文字として
UWSCで認識されるかわかりませんが、間違っていたらすいません
0660名無しさん@お腹いっぱい。2015/01/30(金) 02:18:02.66ID:fnRsd/jl0
>>659
そもそも、UWSCの変数に型はない

半角数字を入力すれば数字
それ以外なら文字列で処理されることが多い

入力したいものを試してみたらいい

座標A = INPUT("座標A?")
座標B = INPUT("座標B?")
PRINT 座標A + 座標B
0661名無しさん@お腹いっぱい。2015/01/30(金) 02:31:56.86ID:kXzg60NC0
THREAD ChangeXY()
0662名無しさん@お腹いっぱい。2015/01/30(金) 02:39:22.72ID:kXzg60NC0
THREAD ChangeXY()

While true
 Print Readini("Setting","X","User.INI")+","+Readini("Setting","Y","User.INI")
 Sleep(1)
Wend

Procedure ChangeXY()
 While True
  IFB GETKEYSTATE(VK_ESC)
   WriteINI("Setting","X",G_MOUSE_X,"User.INI")
   WriteINI("Setting","Y",G_MOUSE_Y,"User.INI")
   While GETKEYSTATE(VK_ESC);Sleep(0.1);Wend
  Endif
  Sleep(0.1)
 Wend
Fend

いちいち入力するよりボタンひとつの方が楽でない?
0663名無しさん@お腹いっぱい。2015/01/31(土) 16:24:09.60ID:eWCexTzs0
ソースをmsXMLで読みたいのですが
文字化けすることがあります

何を加えればいいですか?

Function GetPage(PageURL)
COM_ERR_IGN
  msXMLhttp = CREATEOLEOBJ("Microsoft.XMLhttp")
  msXMLhttp.open("GET", PageURL, 0)
  msXMLhttp.send()
  Result = msXMLhttp.responseText
COM_ERR_RET
Fend
0664名無しさん@お腹いっぱい。2015/01/31(土) 16:36:25.70ID:DIhJ48Hh0
>>663
// 文字のデコード処理
戻値 = DECODE( 文字列, 変換指定 )
0665名無しさん@お腹いっぱい。2015/02/01(日) 12:40:02.40ID:embOqH5f0
>>664
どうもありがとうございます
何故かそれでは出来ないようです
他に方法はありますか?
0666名無しさん@お腹いっぱい。2015/02/01(日) 13:43:27.55ID:XIPjeraq0
これはUWSCの知識というより microsoft.xmlhttp の使い方的なアレなんで
「microsoft.xmlhttp 文字化け」で検索してみるといいよ
0667名無しさん@お腹いっぱい。2015/02/03(火) 03:15:41.67ID:5IZddXMh0
X - 50*n = 1
X - 50*n = 2
...
X - 50*n = 50
というようなXの値によって50パターンの動作をするものを組みたいのですが、nを0から5の範囲だと簡潔に指定するにはどのようにすればいいのでしょうか

if X < 51
 n = 0
elseif X < 101
 n = 1
...
elseif X < 301
 n = 5
endif

と自分で考えたのですが、もっと簡潔に表したいと思い試行錯誤したもののできなかったので教えてください
0668名無しさん@お腹いっぱい。2015/02/03(火) 03:32:32.95ID:HjzMfLZl0
MOD使え
0669名無しさん@お腹いっぱい。2015/02/03(火) 04:27:49.98ID:MdV10ZUz0
>>667

for(int n=0:n<6:n++){



for文使う。
0670名無しさん@お腹いっぱい。2015/02/03(火) 05:02:37.88ID:GKiisgE/0
>>667
x の入力に対して50パターンの A が欲しいとするなら
こんな感じだと思うよ
これはデモの為に全体をループしているが
実際の x の入手方法次第なので大外の For は必須では無い
(もちろん Print も)

 For x = 1 to 299
  n = int(x / 50)
  A = x-50*n
  Print "x["+x+"]-50*n["+n+"]="+A
 Next
0671名無しさん@お腹いっぱい。2015/02/03(火) 05:04:49.17ID:GKiisgE/0
あ、自己レス A+1 しないとアカンね

 For x = 1 to 299
  n = int(x / 50)
  A = x-50*n+1
  Print "x["+x+"]-50*n["+n+"]="+A
 Next
06726672015/02/03(火) 05:51:32.60ID:5IZddXMh0
>>670さんのものでできました
教えていただきありがとうございました
0673Nekorabbit ◆jpnWwiLScI 2015/02/03(火) 06:05:32.55ID:HjzMfLZl0
画像認識関数 ChkImgX-ver1.2.1
https://googledrive.com/host/0B83tioTzFacPQkFKWm52dVhsaXc/ChkImgX-ver1.2.1.zip

対象領域がパターン画像より小さい場合にエラーになっていたので修正
0674名無しさん@お腹いっぱい。2015/02/03(火) 06:10:51.41ID:GKiisgE/0
朝ごはん食べたらアホレスしてるのに気がついた
50パターンってだけならアレでいいんだけれど
X が 50 の倍数の時の Aがゼロになるのが不味い場合はこうしないとあダメね

 For x = 1 to 300
  n = int(x / 50)
  A = x-50*n
  If A = 0 Then A = 50
  Print "x["+x+"]-50*n["+n+"]="+A
 Next
0675名無しさん@お腹いっぱい。2015/02/03(火) 07:28:39.30ID:N/imRZIf0
>>673
ありがとうございます
0676名無しさん@お腹いっぱい。2015/02/03(火) 07:34:01.50ID:N/imRZIf0
>>674
>>667

IFB X>0 AND X<301 THEN
  A = INT( (X-1) / 50 )
ELSE
  A = ERR_VALUE
ENDIF
0677名無しさん@お腹いっぱい。2015/02/03(火) 10:22:52.00ID:wM/Z+UdE0
>>673
お陰様で、Rocket Mouseを全然使わなくなりました!
0678名無しさん@お腹いっぱい。2015/02/04(水) 02:21:11.65ID:ICAinnSu0
explorerの再起動(タスクバーやデスクトップのアイコンの再表示)をしたいんですが、
コマンドプロンプト上の挙動と違って困ってます。

■コマンドプロンプト上で実行
taskkill /f /im explorer.exe
explorer.exe
→タスクバーやデスクトップアイコンが表示される
■uwsc上で実行
doscmd("taskkill /f /im explorer.exe")
doscmd("explorer.exe")
→エクスプローラのウィンドウが表示される(タスクバーやアイコンは表示されない)

OSはwindows7で、uwscのバージョンは5.1です。
uwsc.exeの管理者権限や互換性も変えたり、コマンドをバッチ化して呼び出ししてみたりと
いろいろ試したのですが、うまくいかず・・・
環境周りがおかしそうなのですが、考えられる原因の指摘をしていただけるとありがたいです。
0679名無しさん@お腹いっぱい。2015/02/04(水) 02:45:10.05ID:UG+/jzoM0
バッチファイルの中に2行書いて、
doscmdでそのバッチファイルを実行したらどうなる?
0680名無しさん@お腹いっぱい。2015/02/04(水) 03:00:48.13ID:ICAinnSu0
>>679
結果は同様で、ウィンドウのみが表示されますね

explorer.batファイルを作成して↓を実行してみました
doscmd("xxxxx\explorer.bat")
0681名無しさん@お腹いっぱい。2015/02/04(水) 08:18:01.48ID:+RZexeeJ0
>>678
OSもuwscも同じバージョンだけどちゃんとdoscmd関数だけでうまくいくわ

>doscmd("taskkill /f /im explorer.exe")
これの戻り値を見て標準出力はどうなってる?
何らかの要因でtaskkillが終わる前にexplorer.exeが呼ばれているのかな
0682名無しさん@お腹いっぱい。2015/02/04(水) 19:24:02.65ID:+RZexeeJ0
あー分かった
64ビットPCで動かしてるんじゃね?

echo %PROCESSOR_ARCHITECTURE%
を比較すると分かるけど64ビットOSの場合、cmd.exeには2種類ある
uwscは32ビットアプリだから32ビットのcmd.exeを動かす
そこからexplorer.exeって呼んでもcmd.exeと同じフォルダ内の32ビットエクスプローラが起動するだけ

doscmd("taskkill /f /im explorer.exe")
doscmd("C:\Windows\explorer.exe")
みたいに64ビットエクスプローラを直接呼び出す
06836782015/02/04(水) 19:38:52.43ID:ICAinnSu0
>>682
おお!それが原因でした!
おっしゃるとおり64bitPCです
64bit用と32bit用の実行ファイルで挙動が違うとは・・・
フルパスで試したときもわざわざsystem32配下のexe叩いたりしてました・・・
ありがとうございました
0684名無しさん@お腹いっぱい。2015/02/05(木) 02:28:02.59ID:bmA9JyZT0
saveimgでID指定をブラウザにすると真っ黒な画像を返される事があるのですが原因分かる人いませんか?
id = GETID("yahoo")
for i = 1 to 4
GETTIME()
t = G_TIME_DD + "日" + G_TIME_HH + "時"+ G_TIME_NN + "分"+ G_time_SS
SAVEIMG("" + t,id)
sleep(2)
next

半分は成功しますが50%くらいの確率で真っ黒な画像が保存されます。ブラウザを前面に出しても出さなくても結果は同じです
スクリーン全体にすれば失敗はありません
0685名無しさん@お腹いっぱい。2015/02/05(木) 07:36:44.60ID:Gr2vFznP0
getid後にid<>-1チェックを入れ、
mouseorgとacwしてからsleepで待ち、
その後やっとsaveimg
ぐらいはしてから悩んでね
0686名無しさん@お腹いっぱい。2015/02/05(木) 07:43:44.21ID:ViVdvX9P0
いっそ真っ暗な画像を用意しておいて
比較一致したらキャプチャをやり直すアルゴリズムにしたら?
0687名無しさん@お腹いっぱい。2015/02/05(木) 07:59:59.93ID:sFRrnvY+0
たぶんクローム使いなんでしょ
クロームだと解決方法がないと思ってるんだけど解決方法あるのかな?
ブラウザーをIEに変えるのが一番簡単な解決方法だけど、クロームでの解決方法が知りたいよな
0688名無しさん@お腹いっぱい。2015/02/05(木) 08:01:36.09ID:A5D/fqGE0
uwsc saveimg 真っ黒
でググれば何個か出てくるけど試してみた?
IEやChromeで試してみたが俺の環境ではふつうに取れたよ
06896842015/02/05(木) 09:14:45.43ID:bmA9JyZT0
色々ありがとうございます。ACW入れて試しましたがchromeとoperaでは駄目なままでした
IEでは上のメニューは保存できましたがメーン部分が真っ黒になるパターン。。
XPなのでAeroは関係ないですし、ハードウェアなんたらのチェックは外してます
ループ中に成功する時と失敗する時がランダムに発生するのがよく分からない
0690名無しさん@お腹いっぱい。2015/02/05(木) 12:33:54.32ID:HTOGka7B0
uwscを使って自動でゲームを動かしています。
最近、頻繁にページの読み込み失敗でブラウザがフリーズしてしまうのですが、(その度にブラウザを再起動)フリーズしたら音を鳴らすとかって出来ますか?
0691名無しさん@お腹いっぱい。2015/02/05(木) 12:41:23.37ID:A5D/fqGE0
フリーズしたら再起動するスクリプト組めば良くね?
0692名無しさん@お腹いっぱい。2015/02/05(木) 13:50:09.99ID:K7FWvl7r0
>>689
>ハードウェアなんたらのチェックは外してます
これブラウザのチェック?
XPなら画面のプロパティ→詳細→トラブルシューティング無効試してみては
0693名無しさん@お腹いっぱい。2015/02/05(木) 23:43:23.43ID:W/pwIVXi0
画面に特定の数字が出たら特定の処理に進む、
というのをやりたいのですが、その現れる数字が静止しておらず
ピコンとポップアップするような動きをする為、
chkimgでなかなか捉えられません。
画像を小さくする、検索範囲を縮める、以外に何か方法はありますでしょうか。

https://vine.co/v/OFnr6rVi3ba
0694名無しさん@お腹いっぱい。2015/02/05(木) 23:57:23.19ID:3jT6GgTi0
こんなもん無理
諦めろ
0695名無しさん@お腹いっぱい。2015/02/06(金) 00:15:39.46ID:h5BNhu3Z0
>>693
>>673
0696名無しさん@お腹いっぱい。2015/02/06(金) 03:23:34.33ID:MPWBOcrt0
なんかのゲームならメモリ覗いた方が早そう
0697名無しさん@お腹いっぱい。2015/02/06(金) 11:03:48.00ID:K6agUDp30
>>691
この画像(フリーズ中の画像)を見つけたら再起動するってスクリプトはどう書けばいいですか?

ifb chkimg("フリーズ中の画像.bmp")
ifb chkimg("ブラウザの閉じるのバッテン.bmp") Than BTN(LEFT, CLICK, x+2, y+2)

このあと、スリープ入れて
Thanを使ってブラウザのアイコンをダブルクリックさせるようにしてみましたが、ダブルクリックさせても起動する時としない時があるので行き詰まってしまいました。

ちなみにブラウザはironです。
■ このスレッドは過去ログ倉庫に格納されています