[表示 : 全て 最新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/

826 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 17:10:22.64 ID:qcabtBIu0.net]
プログラミングって具体的な目標が無いと向上しないな

827 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 19:28:46.89 ID:0avFt52T0.net]
MOUSEORG関数でMORG_DIRECTを指定するとCHKIMG関数とBTN関数の座標に
ズレが発生します。
どうせればズレを解消または補正できますか?

828 名前:名無しさん@お腹いっぱい。 [2016/03/04(金) 20:28:03.15 ID:Cx1nPm1Z0.net]
>>781
たぶん、ウィンドウ座標とクライアント座標のズレが原因だから
ウィンドウ座標を基準にすれば一致すると思う。

829 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 22:31:12.71 ID:6AjLUgCP0.net]
>>782
ウィンドウ位置を(0,0)に合わせて起動してもズレます

830 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 22:53:16.26 ID:ojY0v8Jg0.net]
>>783
たいていウィンドウには枠があるでしょ
タイトルバーとかウィンドウを広げたり縮めたりする細い線
アレが影響してると思われるから
ウィンドウ位置を00にしても・・・

831 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 22:54:21.95 ID:1DETh6nk0.net]
これはさすがにネタだろw
uwsc以前のWindowsの基礎知識の問題だぞ

832 名前:名無しさん@お腹いっぱい。 [2016/03/04(金) 23:02:35.51 ID:Cx1nPm1Z0.net]
>>783
MOUSEORG( ID, MORG_CLIENT ) と MOUSEORG( ID ) で比較してみて

あと、CHKIMG で取得する座標は画像の左上になるけど、
検索画像と座標の間にどのようなズレがあるのか書いてね。

833 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/05(土) 04:26:25.45 ID:TP9s+Xc10.net]
>>786
MOUSEORG(id)→(260,100)
MOUSEORG(id, MORG_CLIENT)→(260,125)
MOUSEORG(id,MORG_DIRECT)→(100,400)
こんな感じですが、なぜかMORG_DIRECTはUWSC本体の位置を移動すると座標が変わります

ちなみにコードは↓これです。
id = GetID("Android Screen Monitor")
MOUSEORG(id,MORG_DIRECT)
num = 1
name = "BMP\画像" + FORMAT( num, 1 ) + ".bmp"
While TRUE
if !chkimg(name) Then continue
x=G_IMG_X
y=G_IMG_Y
BTN( LEFT, CLICK, x, y , 200)
sleep( 10 )
if num >= 7 Then num = 0
num = num + 1
name = "BMP\画像" + FORMAT( num, 1 ) + ".bmp"
WEnd

834 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/05(土) 04:31:42.39 ID:TP9s+Xc10.net]
MOUSEORG(id)とMOUSEORG(id, MORG_CLIENT)の座標逆でした



835 名前:名無しさん@お腹いっぱい。 [2016/03/05(土) 05:02:22.36 ID:PQgaMRcF0.net]
>>787
www.vuzix.jp/dev/images/asm/device_list.png
この画像と比較すると、横の枠がない状態なので
タイトルバーの幅

836 名前:の分だけ MORG_CLIENT のありなしで違う状態ですね。

MORG_DIRECT の方は訳が分かりませんね。
原因を調べるには、MORG_DIRECT を指定した状態で SAVEIMG することです。
画面が崩れて見えると思います。

画面が崩れて見えるだけで、クリックが正常に行えるなら、
MOUSEORG をその都度実行して
CHKIMG のときは MORG_DIRECT なし
BTN のときは MORG_DIRECT あり とかにすればいいと思います。
[]
[ここ壊れてます]

837 名前:名無しさん@お腹いっぱい。 [2016/03/05(土) 23:00:40.60 ID:+UaXZBac0.net]
WinnyでMP3ファイルを手に入れたのだが、10曲が1つのMP3ファイルになっている。
これを1曲ずつ10個のMP3ファイルに分けたいのだがどうしたらいいのかね?

838 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/05(土) 23:04:45.09 ID:t6t79+190.net]
うーん

わかんない!

839 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 00:14:59.81 ID:dCUjX7lH0.net]
>>790
torスレに回答してくれてる人がいるぞクソ虫

840 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 09:47:42.18 ID:TvpTaFVp0.net]
>>790
.zipをつけて解答

841 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 10:49:16.69 ID:zGk8lpZo0.net]
>>790
手動でやればいいんじゃない?

842 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 11:37:41.69 ID:RRLqddKE0.net]
10個のmp3のアーカイブならともかく、10曲が一つのmp3になってるなら
編集ソフトで切り出すしかないのでは

843 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 12:04:50.72 ID:WY+6IsJt0.net]
なんでおまえら答えてんの

844 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 14:52:09.82 ID:9LHTjHFn0.net]
関数の呼び出しで参照引数の初期値代入とか出来ないんでしょうか?
あらかじめ先に初期値代入するしかない?

abc(hoge=111)
print hoge

procedure abc(var hoge)
 hoge = hoge + 100
fend



845 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:09:06.92 ID:WbyHlW0e0.net]
なんじゃそれ

abc(111)

でいいだろ

846 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:12:10.38 ID:WbyHlW0e0.net]
ああ、そんでhogeを続きの処理で使いたいのか
それで動かないんならできないんだろ
大人しく先に代入しとけよ
1行増えるだけじゃん
どうしてもそうしたい理由でもあんの?

847 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:51:15.35 ID:67LYGWDp0.net]
>>797
hoge = 111; abc(hoge); print hoge //1行で済んで行も短い

huga = bcd(112); print huga //でもなんでこうしないの?
print bcd(113)

procedure abc(var hoge)
 hoge = hoge + 100
fend

function bcd(hage)
 result = hage + 150
fend

848 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:58:21.83 ID:9LHTjHFn0.net]
上で挙げてるのはただの例です。
実際は参照引数が多く、引数の一部だけ初期値代入したいのと
print文は無いですね。

849 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 16:09:04.11 ID:gjVyQnvH0.net]
はげ+150本 = そんなに増えていませんよ

850 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 20:04:53.77 ID:tjYcm4Q90.net]
それは参照渡しを使うことが間違いなんじゃね?

851 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 20:20:19.36 ID:tjYcm4Q90.net]
参照引数ってのは値じゃなくてメモリの番地とかそういうものを入れてるんじゃなかったっけ?
だから参照引数に値は代入できない

852 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 21:49:34.48 ID:Yt8oL/UZ0.net]
そもそも一度も代入も宣言もしていない変数は使えないよ

dim hoge
abc(hoge , 111)
print hoge
sleep(10)

procedure abc(var hoge , hoge0 = hoge)
hoge = hoge0 + 100
fend

これなら動くけど最初のdim文外すと怒られるから意味が無い

853 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 22:27:49.67 ID:9LHTjHFn0.net]
一つの関数で複数の変数を変更するのだけど、その関数より前には使わない
結果受け取り専用の引数で

a=0;b=0;c=0;…10個くらい   //まあこれが無意味な文に思えてならない
abc(a,b,c,…)

procedure abc(var a, var b, var c,…)
 …
fend

854 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 22:43:28.84 ID:YgJHqyxo0.net]
>>797を見ると受け取り専用とは見えなかったけど
単にその目的なんだったら>>805の人が書いてるように

Dim a,b,c...
abc(a,b,c...)
でいいんじゃないの?



855 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 0 ]
[ここ壊れてます]

856 名前:9:25:26.60 ID:X39hgh8s0.net mailto: 1つの引数に参照渡しが多すぎるのは関数分割が出来てなくて
無駄に粒度が大きすぎる疑いがあるが、UWSCの言語仕様上仕方ない面もある。
それより使用する変数については、module変数とそのコンストラクタを利用して
初期化すれば何の問題もなくスマートに書けるはず。
ただし最初からそう書いていればスマートで苦労もないが、
後から直そうとすると抜本的な書き直しとなり苦労する俺。
[]
[ここ壊れてます]

857 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 11:36:49.32 ID:mdQ0PQ+40.net]
>>808
正にそんな感じ…

参照引数が多いのは外部からのデータ取得を一気にやるせいで
その関数の内部は整理されてるんだけど。

最初は小規模なスクリプトで変数の管理とか適当で、後から書き加えていったから
今はこんなはずじゃなかったorzって状態になってて後悔してる。

858 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 14:04:27.07 ID:EYyC3Yny0.net]
質問です。
MOUSEORGを使用したバックグラウンド操作で、
マウスオーバーする方法ってありますかね?

マウスオーバーして出てくる画像の認識をしたいんだけどできぬ

859 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:29:09.82 ID:X39hgh8s0.net]
それはバックグラウンドのウィンドウにマウスオーバーイベントを
発生させろと言っているに等しいんだが…
これ自動化ツールよ?
まずあなたが手動で隠れたウィンドウにマウスオーバーしてみなさいよ!
とんちかな?

860 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:47:28.50 ID:YrarT/t10.net]
一休さんのトラの屏風の事だな

次の方どうぞ

861 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:52:30.08 ID:uEQeFD2u0.net]
mmvのこといってるんじゃない?

862 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:58:04.94 ID:/957NIFT0.net]
煽りたいだけで答えられないならちょっと黙ってろよ
俺は黙る

863 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 16:05:17.57 ID:CELrwcnT0.net]
>>811
どういう理屈だよ
元々UWSCで出来るバックグラウンド操作は手動で出来ないでしょ

864 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 16:25:16.15 ID:XRfaJMaM0.net]
バックグラウンド操作でもマウスオーバーイベントが発生するかどうかという
その対象ソフト側の問題なんだから、UWSCの質問じゃないぞ。



865 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 16:54:18.27 ID:oQSRIGCR0.net]
なんかレベル下がったなここ

866 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:08:25.81 ID:X39hgh8s0.net]
>>815
バックグラウンド操作は元々のUWSCのコンセプトPC操作の自動化を
あくまで拡張したものであって、
出来なくて当然のことが出来るようになった機能だよ。
それをあたかも出来て当然のように認識されても困るわな。
まぁこんなソフトが無料で使えるだけでも奇跡的なんだが。
マウスオーバーイベントをマウスオーバーせず強制的に
外から発生させることが可能なAPIが公開されてるならば、
もはやマウスオーバー画像を直接ぶっこ抜くことも出来るんじゃね?
自動操作というよりアプリハッキングだわな。
まぁこれであっさり出来ますよとかコードが出てきて
俺が逆立ちするハメになるかもしれんがw

867 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:29:48.80 ID:d7jVEpko0.net]
Win32ApiのSendMessage(PostMessage)等を使ってイベントを発生させる方法はあるにはあるよ
それをアプリハックと呼ぶかは置いておいて

重要なのは作業中のマウスは普通に存在し続けているって事なので
バックグラウンドだと資源衝突が発生するのでやっぱり安定しないのよ

平たく言うとスクリプトがここにマウスがあるよとした直後に
本当のマウス位置に更新されるのでここにはマウスは無いよとなる

だからよく分からなければ別PC用意して最前面でやる
仮想環境が分かるならそっちの最前面でやれ(内部的なマウス位置が存在するので資源衝突しない)がFAQとな

868 名前:チてるのよ []
[ここ壊れてます]

869 名前:名無しさん@お腹いっぱい。 [2016/03/08(火) 17:39:00.04 ID:OiSIw5XY0.net]
VBScript で一般的なキー入力のエミュのやり方
https://msdn.microsoft.com/ja-jp/library/cc364423.aspx
"2"のキーをクリック
> WshShell.SendKeys "2"

ドライバ→Windows→アプリってのを
自動化ソフト→アプリって短縮しただけでしょ。
アプリに直接送る方が簡単だけど(それで動くとは言ってない)

UWSCが選ばれる理由は画像認識と操作の記録再生が簡単ってところだよ。
別に自動操縦が特別ってことはない。(特許を取ってるところはある)

870 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:41:37.94 ID:EYyC3Yny0.net]
>>811-817
無知でごめんな
>>818-819
詳しく教えてくれてありがとう
やっぱり仮想環境構築か物理的にもう一台PC用意するのが手っ取り早いってことですね
仮想環境構築してやってみます

871 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:43:25.86 ID:bSkm1Om50.net]
1日調べてわからなかったので質問させてください。
-----------------------------------------------------------------

THREAD スレッド(1)
THREAD スレッド(2)
sleep(200.0)

PROCEDURE スレッド(i)

ID[i] = GETID(GET_FROMPOINT_WIN)
中略
MOUSEORG (ID[i])

CALL 関数.uws

REPEAT
sleep(0.1)
UNTIL CheckColorScope(124,374,

872 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:44:19.61 ID:bSkm1Om50.net]
UNTIL CheckColorScope(124,374,"R",35,10)
BTN(LEFT,CLICK,80,108,100)

FEND


この状態でスレッド2側がスレッド2側の相対座標のCheckColorScopeを行ってくれず
スレッド1側の相対座標をCheckColorScopeしてしまいます。
ボタンクリックやPeekColor単体、関数の中身をバラしてREPEAT〜UNTIL間に
組み込むとスレッド2側の相対座標のCheckColorScopeを行います。
関数を組み込んだ状態でスレッド2側の相対座標をCheckColorScopeさせるには
どうしたらいいでしょうか。

873 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:06:11.90 ID:mdQ0PQ+40.net]
ユーザー作成関数を組み込み関数であるかのように書かれても…

874 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:10:36.84 ID:mdQ0PQ+40.net]
あとそれスレッド1とスレッド2とほぼ同時に走るから実質同じものかと



875 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:16:33.76 ID:X39hgh8s0.net]
たしかUWSCのスレッドは、スレッド無いから呼び出したユーザー定義関数を、
そのスレッド内で実行しなかったような気が?
引数だけで算数して結果を返すだけのようなリエントラントな関数ならいいけど、
Windows上のリソースにアクセスするようなのは期待した動きをしなかった気がする。
試しに、自作関数を一時的にスレッドで呼び出すプロシージャ内に展開してやってみて。

876 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:32:29.53 ID:bSkm1Om50.net]
>>824 申し訳ないです。自作関数の中身です。処理は一緒ですが、相対座標だけをずらして
並列で処理させてようとしてうまくいかず、、、
Function CheckColorScope(PosX, PosY, Element, BaseValue, Scope)
Select Element
Case "R"
ElementValue = PeekColor(PosX, PosY,COL_R)
Case "G"
ElementValue = PeekColor(PosX, PosY,COL_G)
Case "B"
ElementValue = PeekColor(PosX, PosY,COL_B)
Default
Result = False;
exit;
SelEnd
Ifb (ElementValue >= BaseValue - Scope) And (ElementValue <= BaseValue + Scope) Then
Result = True;
Else
Result = False;
EndIf
Fend

877 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:41:58.65 ID:bSkm1Om50.net]
連投ですいません。
>>826
Windows上のリソースにアクセスするようなものではないですね。
ブラウザを2個起動した状態で同じ動作を並列処理させようとしてるのですが
>>827 の関数を使うと相対座標が片方に寄ってしまうんですよね。。。
展開すると関数が入れ子しているか、閉じていませんでエラーになります。。

878 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:46:18.69 ID:4EtCLtde0.net]
ID[i] = GETID(GET_FROMPOINT_WIN)

これってカーソルの下のウィンドウよね?
スレッドでほぼ同時に取得してるのにこれでIDきちんと2つ取れてるん?

879 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:49:12.06 ID:4EtCLtde0.net]
どっちか片方のIDしか取れてなくて2つのスレッドが同じウィンドウにMOUSEORGしているような気がする
ID二つとも確認してみたら

880 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:59:56.84 ID:bSkm1Om50.net]
>>829
スレッド2側の処理ですが、以下のように処理されますので、
可能性としては低いと思われますが、念のため確認してきます。
UNTIL CheckColorScope(124,374,"R",35,10) ←×こっちがスレッド1側の相対座標に
BTN(LEFT,CLICK,80,108,100) ←◯こっちはスレッド2側の相対座標

881 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:03:16.67 ID:X39hgh8s0.net]
今テストプログラムで確認してみたら、
PCが高負荷でなければスレッドがリソース云々は無かった。
それよか、各スレッドのpeekcolorが対象にするウィンドウIDが
mouseorgで指定されないから、
たまたまアクティブなウィンドウが対象になる。
ウィンドウID管理しなきゃ。

882 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:05:47.87 ID:X39hgh8s0.net]
具体的には、スレッドにする関数の引数にウィンドウIDを追加して自作関数呼び出す直前にmouseorg
または自作関数の引数にも追加してpeekcolorの直前にmouseorg

883 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:22:19.67 ID:bSkm1Om50.net]
>>830 PRINTにID表示させてみました。1と2でしっかり別れてました。
>>832 助言感謝です。さっそくやってみます。

884 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:24:40.32 ID:X39hgh8s0.net]
mouseorg使ってたねスマンね、きっと想定通りにウィンドウIDが取れてないんだろうね。
現在対象にしてるウィンドウIDをball0onで表示するようにしてみるといいよ
(スレッドごとに表示されるのでID*100ぐらいの座標指定して重ならないよう別位置に表示)



885 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:27:50.46 ID:X39hgh8s0.net]
被った、IDがいいなら後は判らんな
判定直前に対象ウィンドウをCTRLWIN(ID, ACTIVATE)してみるとか、
判定対象の位置付近にballoonを表示してみて見てるとこ合ってるかどうか確認
ぐらいかな

886 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:32:50.77 ID:bSkm1Om50.net]
>>836 了解です。バルーンで追うのはまだやってなかったので
バルーンでしばらく追いつつ試してみます!

887 名前:名無しさん@お腹いっぱい。 [2016/03/08(火) 19:57:44.27 ID:OiSIw5XY0.net]
>>822
CALL をスレッド関数内でやってんの?
これはスレッドで動かないんじゃない?

あと、スレッドを使うならグローバル変数使うんじゃなく
データを渡してしまった方がいい。
なんで添え字を渡してグローバル変数の配列にアクセスさせるのかわからない。
そういうのはC言語でやってください。
C言語でも配列の添え字を渡してグローバル変数にアクセスとかしないと思うけど。
普通はアドレスを渡しますね。

別にグローバル変数にアクセスしてもいいんだけど
それは変化するデータをリアルタイムにアクセスする必要があるときや
スレッド関数から値を戻すときくらいですね。
一度取得したIDは変化しないからコピーを渡してしまって構わない。

888 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 20:13:05.28 ID:X39hgh8s0.net]
それは多分ね、UWSCのスレッドとして呼び出した関数は、
戻り値を得ることが出来ないから、スレッドで取得した値を
メインから得る方法はグローバル変数しか無く、
スレッドがGETIDしたウィンドウIDをメインから見たいんじゃないかな。
CALLをスレッド内に入れるのはちょっと変態的なのは同意

889 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 20:44:35.98 ID:bSkm1Om50.net]
返事遅れて申し訳ないです!
別の方法(スレッド化せず処理)でさっくり想定通りの結果が得られました!
無駄に難しい処理しようとしてたんだなと・・・
ハマって色々学べたのでよかったです。
>>838 今後のために参考にさせて頂きますOTZ
>>839 他皆様、ご助言たくさんいただき有難う御座いました!

890 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 17:41:50.93 ID:mQOmooo80.net]
getidで2窓で開いているIE上の同じページを区別させたいんですが、
クラス名で区別させるんだと思いますがそのクラス名が分かりません

今現在は
getid("ウインドウタイトル","IEFrame")

でやっています
どなたかお願いします

891 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 18:17:29.81 ID:llmIWy ]
[ここ壊れてます]

892 名前:Ss0.net mailto: やれているならそれで良いんじゃないの

クラス名が知りたいなら
自分で調査スクリプトを描け(個人的には最初に造るもんだと思う)
SPY++使えVisualStudioCommunityは無料でコレも付いてる
過去レスにSPY++互換ツールもあってそれを使っている人も居る

でもURLとかでクラス名は変わったりしないから一緒だよ
[]
[ここ壊れてます]

893 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 18:25:43.67 ID:sRxQkC9R0.net]
>>841 教えてヤフーにあったよ
オイラもそれでフラッシュゲームのバックグラウンド化に成功した
(´・ω・`)

894 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 18:47:20.16 ID:mQOmooo80.net]
>>842
ごめんなさい
今現在↓こう書いてるのですが、このIEFrameというのがクラス名ですよね?
getid("ウインドウタイトル","IEFrame")
二つ目のIEではこれはなんと書けばいいんでしょう?

>>843
お手数ですが、そのURL教えてもらえませんか?



895 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:04:38.44 ID:sRxQkC9R0.net]
おいおい それぐらい自分で探しなよ
オイラはそれを保存してるからもうそのページに用はないんだよね
(´・ω・`)

オイラもフラッシュゲームのバックグラウンド化について
検索しながら試行錯誤しながら廻りまわってたどり着いたんだよね

オイラたちはヒントをだす
あとは自分で調べる、試す これは基本だよ

896 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:26:22.70 ID:llmIWySs0.net]
一般論として
クラス名は単なるウインドウの種類の宣言でしかない
従ってほぼ全てのアプリで2つ目のウインドウだからといって違うクラス名になったりはしない
それぞれのウインドウはIDで区別される

UWSCの機能だけでやろうとしたらGETALLWINを使ったりする

個人的にはIEのタブを探して操作するなら
SHDocVw.ShellWindows から目当ての SHDocVw.InternetExplorer を見つけてCOM操作するけれどね

どっちにしてもいきなり二つ目のウインドウってアクセスは出来ない
IEのウインドウをループで回して対象URLのウインドウをピックアップして集めてから
その何個目ってしないと駄目

897 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:28:29.35 ID:llmIWySs0.net]
で、面倒臭いなと思ったら半自動スクリプトにしたら良いんだよ

スクリプトの最初に操作対象をクリックして下さいとか表示するとかね
完全自動化はそのための知識が揃ってからチャンジしたら良い

898 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:59:37.81 ID:ZH6SCA5x0.net]
UWSC公式サイトのFAQに載ってる毎度の質問だな

899 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/10(木) 00:09:29.62 ID:kbf2APsQ0.net]
canal22.org/kansu/getctlhnd/

900 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 02:09:47.22 ID:vpN6R87y0.net]
AutoHotKeyとの違いってなに?
こっちに出来て向こうにできない、またはその逆とか

901 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 02:24:04.07 ID:q9CfIyKs0.net]
日本語変数は無理なんじゃないかな

902 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 02:34:58.77 ID:ZLCOlBAo0.net]
自作関数をEXITで抜けるみたいに、CALLで呼んだものを途中で抜けるってできるの?

903 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 03:46:02.49 ID:fLUkQ1x50.net]
EXITじゃないの?

904 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 03:53:20.39 ID:8BXL68Gt0.net]
CALLが何かを全く理解してない奴って多いよね



905 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 13:22:41.14 ID:TzmisRaw0.net]
「呼んだもの」のなかで途中で抜けるように作れば抜けるし、最後までやるように作れば最後までやるだけだが。

906 名前:名無しさん@お腹いっぱい。 [2016/03/11(金) 15:51:14.74 ID:9MIhB+Zw0.net]
Firefox系ブラウザ って
FLASHブラウザゲームに
MOUSEORGのMORG_DIRECTって使えないの?
BTNが反応しませんでした
Chromeは使えましたが、
Chromの方は、MORG_BACKがCHKIMGで認識しませんでした

907 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 17:05:56.39 ID:xL247s8c0.net]
煽りじゃなくて頑張った結果が使えないのなら使えないのでしょう

ブラウザはIE以外はマルチプラットフォームのため標準コントロールを使用していないし
裏になったら再描画しないパターンもあるしね

裏動作は出来る時もある位の気持ちで
仮想化環境を使って最前面か別PCが安定ってのがFAQだよ

908 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 17:41:53.19 ID:uLXjBvrS0.net]
hoge=

909 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 17:52:21.69 ID:uLXjBvrS0.net]
すいません、NGワードで弾かれたっぽいです


hoge="あいうえおあいうえお"

上記変数の、左から5番目の「お」だけを
「ん」に変えたいんですけど、そんな命令ありますか?
置換命令のREPLACEだと、番号指定は無理ですよね?

hoge=COPY(hoge,1,4)+"ん"+COPY(hoge,6)
遠回りな気がしますが、こんな感じにするしかないんでしょうか?

910 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 17:57:29.45 ID:8eZkzZWt0.net]
仮想化はOS用意しないといけないからなあ
linuxとか無料らしいからそれ使えればいいけどな

911 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 18:21:03.26 ID:xL247s8c0.net]
>>859
それしかないって事はないけれど特に近道も無いよってのが答えだと思う

VBSの文字列操作用や正規表現用のオブジェクトを生成して処理したり出来るが
特に行数が減るわけではない(寧ろ増える)

昔と違ってメモリを節約する努力なんて不要なんだから
行数や命令を減らす努力はそれ程重要じゃない
最適化しすぎて同じ結果になるけれどやりたい事との文脈が違う場合とか
後から見ると混乱のもとになるからね

メインの処理のやりたい事が「文字列のn文字を入れ替える」なら
そういうユーザ関数を作成して抽象化したら良いのよ

912 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 18:28:44.96 ID:HWMGVE3/0.net]
遠回りどころか、処理的には replace よりむしろ近道なのでは

913 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 19:10:33.56 ID:9aIMxtHY0.net]
>>856 ただのバックグラウンドならできる
(画面が隠れてたり最小化だとできない)
クラス名を取得してハンドルする
教えてヤフーにやり方のヒントがある
(´・ω・`)

914 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 19:19:08.73 ID:LoB9QIb70.net]
バックグラウンドと画面が隠れていることの違いって何



915 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 20:39:57.96 ID:9MIhB+Zw0.net]
>>863
クラス名なら、Firefoxは、MizillaWindowsClass
Chromeは、Chrome_RenderWidgetHostHWND
これは取得できて、ハンドルも取得できていて
それは、わかってるんです。
ただのバッググラウンド状態でももちろん試しました
Yahoo知恵袋なども結構参照した方です
ですが、IEとChromeは、MORG_DIRECTが使えて
Firefoxだけは、MORG_DIRECTが使えませんでした。
BTNが反応してくれない。それってあり得るんですかね?

916 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 23:22:31.33 ID:V+G/WUuc0.net]
While True

ifb CHKIMG("A.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

else
ifb CHKIMG("B.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

else
ifb CHKIMG("C.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
else
sleep(0.3)
BTN(LEFT,CLICK,1000,500)

endif
endif
endif

sleep(0.1)
WEND

こんな感じのマクロを組んだのですが最後の
sleep(0.1)
BTN(LEFT,CLICK,1000,500)
が1秒くらい間隔開けて連打するので困っています
0.3秒くらいの間隔で連打させたいのですが何を弄ればいいのでしょうか?

917 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 23:37:24.40 ID:q9CfIyKs0.net]
0.3秒+500ミリ秒+0.1秒=0.9秒

当たり前の話でんがな

918 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 23:40:11.60 ID:q9CfIyKs0.net]
間違えたハズカシ
つかchkimgは範囲が広いとそれだけ時間かかるからPCのスペック次第で時間が変わる

919 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 23:55:24.06 ID:V+G/WUuc0.net]
>>868
なるほど、処理が追いついていないと
そこそこのスペック持たせてるはずなのに画像認識の処理ってけっこうパワーいるのに驚きです

920 名前:名無しさん@お腹いっぱい。 [2016/03/12(土) 00:22:19.71 ID:vIYJtZWi0.net]
× BTN(LEFT,CLICK,1000,500)

○ BTN(LEFT,CLICK)

921 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/12(土) 00:58:30.41 ID:JA7kK ]
[ここ壊れてます]

922 名前:oOW0.net mailto: >>870
その場合どうやって座標の指定をするので?
[]
[ここ壊れてます]

923 名前:名無しさん@お腹いっぱい。 [2016/03/12(土) 05:37:53.21 ID:vIYJtZWi0.net]
あ、つい。数字をミリ秒と読んでしまって。

画像を小さくして範囲を絞れば速くなります。

範囲を絞るために GETID() で対象ウィンドウを特定して
STATUS() で座標を取って CHKIMG() で範囲を指定します。
MOUSEORGで基準座標を対象ウィンドウにすれば
範囲は 0, 0 からサイズ x, y で指定できるので楽です。

他の方法としては
数ドットの色だけで判定できる場合は
検索範囲の画像を SAVEIMG() でクリップボードにコピーして
クリップボードから PEEKCOLOR() で検索すると早いです。
でも、数ドットで済むようなら1秒もかかってませんね。

924 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/12(土) 08:55:36.12 ID:1ZX49PQ60.net]
>>866
なんか凄い見にくいけどこういうことだよね?
While True
  ifb CHKIMG("A.bmp")
    BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  elseif CHKIMG("B.bmp")
    BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  elseif CHKIMG("C.bmp")
    BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  else
    sleep(0.3)
    BTN(LEFT,CLICK,1000,500)
  endif
  sleep(0.1)
WEND

sleep(0.3)の部分は3回試した後だし、sleep要らないのでは



925 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/12(土) 12:51:15.36 ID:ah+GWDsu0.net]
ヒント@
ループ開始時に開始時間を記録
その他のボタンクリック前の時間と開始時間を引いて経過時間を記録
経過時間が300ミリ秒以内ならその時間だけスリープ

ヒントA
DEF_DLL timeGetTime(): LONG: winmm.dll //ミリ秒単位の時間を取得
(わざわざwin32api使うのはUWSCは経過時間の取得は小数点(割合)になるので直感的じゃないから)

926 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/12(土) 12:54:01.60 ID:fkR2rJoF0.net]
まあ今回の場合、処理が0.6秒位かかっているようだから
スリープ0にしたところでダメだし時間測るのは無意味と思うけどね。

どちらかというと範囲制限の方が有効だろう






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

前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