16/02/14 09:28:54.14 Oo27r2AD0.net
以前書いた奴
ID = GETID("BlueStacks App Player","WindowsForms10.Window.")
// MOUSEORG( ID, MORG_CLIENT or MORG_DIRECT, MORG_BACK ) // MORG_DIRECT だとAndroidが反応してしまう。
// MOUSEORG( ID, MORG_CLIENT ) // MORG_CLIENT だと ChkImgX と標準関数とで原点位置が食い違う。
MOUSEORG( ID )
>>593-594 の流れはおかしい。
仮想環境でも画像で操縦は可能だし
>>592 は「MOUSORG(winid,0,0)」では動くと書いてるのに。
>>595
BlueStacks は裏でも描画する
XP時代は隠れた部分は描画されなかったけど
636:名無しさん@お腹いっぱい。
16/02/14 11:08:44.73 4bRrPD2X0.net
>>596
よく考えたらそうですね・・・
その後の処理はifb CHKIMG→BTNでクリックさせる→スリープ1秒 を何パターンも作ってるだけの簡単な
ゲーム操作をさせるマクロなんですが色々ぐぐっても原因わからずでした
637:名無しさん@お腹いっぱい。
16/02/15 01:57:12.49 0dWxJSmB0.net
画像検索の特殊変数G_IMG_X,G_IMG_Yってのは
ローカル変数扱いなんでしょうか?
画像検索でヒットしたG_IMG_X,G_IMG_Yの値を
別の関数で使いたい場合は、引数で渡すか
グローバル変数を使うかしかないんでしょうか?
638:名無しさん@お腹いっぱい。
16/02/15 07:11:02.66 X50nyRyC0.net
>>598
グローバルだったとしても、そういうのは引数で渡す癖をつけたほうがいいよ。
グローバル変数に入れなおすのもNG。
639:名無しさん@お腹いっぱい。
16/02/15 12:48:14.51 fuyjfYD1
640:0.net
641:名無しさん@お腹いっぱい。
16/02/15 14:28:14.98 lRH39zN60.net
>>600
個人的にはそれが必要な情報なら引数にする事を厭わないかな
でもクラス(モジュール)を使って必要な情報を整理して保持できるならそっちを優先する
グローバル変数は最後の手段だけどクラスのメンバ変数は使用を躊躇する必要ないしね
642:名無しさん@お腹いっぱい。
16/02/15 15:17:21.06 mpgO3egX0.net
引数を配列で渡すとか、関数を分割するとか
643:名無しさん@お腹いっぱい。
16/02/15 17:00:42.69 ml/Gl3ot0.net
ワシにはなんのこったかさっぱり
UWSCはプログラミング未経験者が使うツールだと思ってた
644:名無しさん@お腹いっぱい。
16/02/15 18:51:08.74 iW+KTqvB0.net
>>603
その話題について知りたいなら素直に知りたいって書いたほうが得だよ
逆にどうでもいいなら黙ってようよ
645:名無しさん@お腹いっぱい。
16/02/15 18:55:50.05 iV3+q7Ob0.net
うざいからお前出てって
646:名無しさん@お腹いっぱい。
16/02/15 20:36:48.80 ml/Gl3ot0.net
わかったよもう来ないよ
そのかわり質問スレに誘導してくれ
647:名無しさん@お腹いっぱい。
16/02/15 20:47:06.23 TntgXZj60.net
>>606
うざいと言われてるのは>>604の方だと思うがな
648:名無しさん@お腹いっぱい。
16/02/15 20:54:00.51 VKY0mmNh0.net
もっと短いクワイン書けないでしょうか?自分の実力ではこれが限界です
UWSC上級の人よろしくお願いします
a=chr(34);b=
649:名無しさん@お腹いっぱい。
16/02/15 21:00:29.60 VKY0mmNh0.net
なんか切れたんでこっちに貼りました
URLリンク(gist.github.com)
650:名無しさん@お腹いっぱい。
16/02/15 21:24:10.17 ekeGmjS90.net
特定の武器を一回だけ使って元の武器に戻す
特定の武器に持ち替えて使用する
↑ここまではUWSCでできるんだけど
直前に持っていた武器に戻す
↑識別方法がなくて諦めた
651:名無しさん@お腹いっぱい。
16/02/15 21:45:50.39 k4y1Ql7g0.net
日記か
652:名無しさん@お腹いっぱい。
16/02/15 22:00:26.19 0XdlPD550.net
最近恥ずかしげもなくゲームマクロの質問ばかりだな
653:名無しさん@お腹いっぱい。
16/02/15 22:05:32.67 GSjAFn9q0.net
>>610
お前が何を見て直前に持っていた武器だと認識するのかを
そのままコードに書けばできるだろ
お前も認識できないなら知らん
654:名無しさん@お腹いっぱい。
16/02/15 22:21:08.17 ZQ5I0KNy0.net
>>603
特定の画像出現をポーリングで待機しながらタイムアウトとか考えるのは組み込みに近いから
言語自体はシンプルだけどコード書くのはそこそこ経験必要よ
655:名無しさん@お腹いっぱい。
16/02/15 22:37:12.48 ScNC+Izw0.net
ゲームで使うのはいけないけど
楽しく学べるから一番上達が早いのよね
(´・ω・`)
656:名無しさん@お腹いっぱい。
16/02/15 22:42:37.20 6/AzYlfK0.net
>ゲームで使うのはいけないけど
どういうこと?
657:名無しさん@お腹いっぱい。
16/02/15 23:01:56.67 TntgXZj60.net
ゲームマクロ使用がいけないことであるっていう常識が無い奴がいるのは戦慄を覚えるね
658:名無しさん@お腹いっぱい。
16/02/15 23:08:31.27 6/AzYlfK0.net
ソフトが良くてゲームがいけない意味が分からん
最近もパズドラ攻略機械組んでる動画みてただすげえって思ったけど
もともとゲーム内にプログラム要素あるのもあるし
659:imi
16/02/15 23:11:18.16 Et+z3L6S0.net
君規約とか一切読まないタイプ?
660:名無しさん@お腹いっぱい。
16/02/15 23:12:37.28 ZQ5I0KNy0.net
オフゲなら好きに汁オンゲなら垢バンされても泣かない
ここはマクロの善悪を語る場ではないので
661:名無しさん@お腹いっぱい。
16/02/15 23:12:46.12 lRH39zN60.net
利用規約違反になるので本来公言するもんじゃないのよ
だからゲームのためのノウハウ教えてと言われると供与できない
建前でゲームじゃないフリしてろ
662:名無しさん@お腹いっぱい。
16/02/15 23:15:05.33
663: ID:6/AzYlfK0.net
664:名無しさん@お腹いっぱい。
16/02/15 23:18:49.53 lRH39zN60.net
許されているジャンルならそのスレでマクロの話をすれば良い
665:名無しさん@お腹いっぱい。
16/02/15 23:23:35.26 6/AzYlfK0.net
あー課金したりネットワークで他人と競う系のゲームか
自分そういうのぜんぜんやらないからな
「ゲーム」って一まとめで言うのは御幣あるじゃないか
ゲーム名明記してない限り規約に違反してるかどうかは分からんわけでしょ
>>623
その論理だとすべてのマクロの話Windowsスレとか別スレでしろって話になっちゃうんじゃ
666:名無しさん@お腹いっぱい。
16/02/15 23:30:04.89 lRH39zN60.net
利用規約にマクロが禁止されているツールならそうなるかもね
だから規約違反しているか判断できないゲームの話はするのは勝手けど
供与は出来ないからボカせというのが私の主張
667:名無しさん@お腹いっぱい。
16/02/15 23:31:45.80 0XdlPD550.net
いやー規約違反云々もあるが
調べもしない子供が多いからここでゲームの質問は暗黙の了解でNGだったんだが
最近は普通に受け入れられるようになったんだなーと思った
668:名無しさん@お腹いっぱい。
16/02/16 00:26:03.06 Qfud2JiX0.net
ゲームの規約はUWSCの規約じゃないからそれ自体はどうでもいいんだけどね。
「何をやりたいか」を有効な言葉に変換できずに、ゲームの動作そのまま質問しちゃうような人だと
自分で何もせず結局全部丸投げしてくる人ばかりだから叩かれたというだけ。
669:名無しさん@お腹いっぱい。
16/02/16 00:44:27.17 i6aChOQJ0.net
ゲーム関連で荒れなかった試しがないからな
670:名無しさん@お腹いっぱい。
16/02/16 02:56:23.77 QoFwoTib0.net
A⇔Bって決まってるなら
AからBは出来るんだから(Bを探した?)
その逆をやればいい(Aを探す?)
もし途中からAと同種のやつがもりもり増えていくとかだとめんどいけど
まぁAが増える可能性もあるということはBも増える可能性があるわけで・・・
671:名無しさん@お腹いっぱい。
16/02/17 04:35:41.66 kb0x6ds+0.net
ゲームのプレイ行為そのものが報酬であるとデザインされたオフゲと違って、
ネトゲはゲームのプレイ行為を手段として主に自己顕示による自己実現気分を
味わうヤクであり、ソシャゲはそのヤクの販売ルート拡大とマネタイズに
成功した事業なのである。
仮想自己実現を売り物にするネトゲ・ソシャゲ業者にとって、
ゲームのプレイ行為そのものが報酬となる程に、
ゲームそのものを工夫して面白くするのは過剰品質であり粗利が減るので、
あえて、いわゆるクリックゲーと呼ばれる、ゲームというより単重労働を
ユーザーに課すのが通例であり、これを自動化されては産業革命が起きてしまい
商売が成り立たないので規約で禁止する率はほぼ100%。
よってゲームの自動化需要で圧倒的多数はソシャゲであり、ほぼ無確認でも間違いない。
そしてゲーム開始時にソシャゲ業者から口を酸っぱくして明示的に禁止されていることに
気づかず、臆面もなく赤の他人にホイホイ業者との契約違反方法を聞いて恥じない愚者は
知能的にプログラミングを教える段階にない。
672:名無しさん@お腹いっぱい。
16/02/17 04:53:53.69 hPLvEUTu0.net
このスレでゲームの話題が禁止されてるのは
オンライン/オフラインに限らず全てなので
別にゲームの規約違反とは関係ないと思うよ。
たぶん、ゲームの質問するやつって常に新規で初歩的な質問なんで
それ以外の話ができないとかそんなんだろ。
673:名無しさん@お腹いっぱい。
16/02/17 04:57:14.01 hPLvEUTu0.net
ソシャゲではこういうことはないけど、一般的なオンラインゲームでは
ゲーム側でUWSCが
674:動かないようにされてるから、そういうのは関係あるかも > 42 :名無しさん@お腹いっぱい。:2012/04/27(金) 08:17:32.89 ID:n7YHJBnV0 > 作成したマクロをオンラインゲームで実行しようとすると動作しませんでした > ググってUWSCをUNKOに変更してもダメでした・・・ > ゲーム側でマクロ対策されてたら出来ないのでしょうか? > > 43 :名無しさん@お腹いっぱい。:2012/04/27(金) 10:16:31.41 ID:hwEpQpsX0 > >>43 > マクロ対策されてたら出来ないから > 仮想PCでゲーム走らせてやるんだよ
675:名無しさん@お腹いっぱい。
16/02/17 04:57:20.17 pIoDNX4q0.net
そんなゲーム業者の都合なんてどうでもいいことだろう。
重要なのは、このスレの住人が答えたくなるような質問ができるかどうかだ。
676:名無しさん@お腹いっぱい。
16/02/17 05:06:46.52 hPLvEUTu0.net
ゲームの仮想化では必需品だった VMware Player も開発中止になっちゃって今後どうしたらいいのやら。
マイクロソフトの Hyper-V を VMware Player のように使うことは可能だけど
マイクロソフト製品は画面表示に通信系の技術を使ってて
帯域を減らすために画像圧縮を使ってるせいで
常に画面はノイズが入った状態で
UWSC の画像認識では動かない・・・。
Hyper-V で音を出すためには Windows Server または Ultimate が必要だ。
7月までなら無償アップグレードが可能だから、
とりあえず Hyper-V 環境の Winddows を一つくらい
無償アップグレードしといたほうがいいかも。
音を出す程度のことでそんなことが必要なくらい、Hyper-V は不便なんだぞー。
そして、ほかの仮想化ソフトは全然使い物にならないんだぞー
※ Mac の Parallelsだけは例外
KVM とかは Linux では安定して動くらしいけど
Windows は満足に動かせないらしい。
設定もめんどくさいし。
677:名無しさん@お腹いっぱい。
16/02/17 05:25:15.26 GIOAQLSV0.net
煽りとかじゃないんだけどゲーム以外だと何に使ってるの?
678:名無しさん@お腹いっぱい。
16/02/17 06:32:41.54 beI7tmqh0.net
>>635
業務
679:名無しさん@お腹いっぱい。
16/02/17 08:13:26.19 /1ajP00K0.net
ゲームの話になると仮想環境とかUWSC対策の回避方法の話ばかりになる
ゲーム操作一般スレ作っておいて誘導したほうがお互いのためにもいいよ
680:名無しさん@お腹いっぱい。
16/02/17 08:15:00.12 rcyqh9600.net
動画見てるときにでてくる広告クリック
681:名無しさん@お腹いっぱい。
16/02/17 08:21:56.99 91rSfnp00.net
Windows起動時に窓を残したまま立ち上がる常駐アプリ(LINEとか)のウィンドウクローズ
マイドキュメントの定時バックアップ、手動でWindows終了した時のバックアップの自動化
株取引アプリの起動時、アプリ側で保存されない設定の自動セット
チャートアプリで毎回同じ流れの操作をダブルクリックで実行
682:名無しさん@お腹いっぱい。
16/02/17 10:58:48.44 dGarNdwa0.net
バックグラウンドで動いてて欲しいけどよく止まるソフトの異常検知と再起動
ビューアで見ている画像にフォルダ名をつけてマイドキュメントにコピー
683:名無しさん@お腹いっぱい。
16/02/17 11:10:03.79 7mLT8oDH0.net
SPEAK関数使ったマクロでカーナビ音声認識機能のデバッグ
海外向けナビは音声認識機能がデフォルトなので全ての機能に音声認識が割り当てられてるから人の手でやると超大変
684:名無しさん@お腹いっぱい。
16/02/17 19:23:28.68 CDYU1lyI0.net
>>638
スケベ
685:名無しさん@お腹いっぱい。
16/02/17 23:05:55.63 Z2OJH21P0.net
a~z+1~9の中からランダムに入力したい場合ってどうやればいいですか?
686:名無しさん@お腹いっぱい。
16/02/17 23:38:43.99 7mLT8oDH0.net
>>643
ざっくり設計
1.該当のAscii文字コードが入った配列を作成
2.配列の添
687:数をランダムで生成 3.chr関数を使って文字に変換 Ascii文字コードでA と aは別物なので必要に応じて修正拡張 //関数呼び出しサンプル 戻り値はstr print fnc_RandomStr() //0-9,a-zをランダムで生成する関数 function fnc_RandomStr() dim ts[35],i for i= 0 to 9 ts[i] = Asc("0")+i next for i= 10 to 35 ts[i] = Asc("W")+i next result = chr(ts[random(36)]) fend
688:名無しさん@お腹いっぱい。
16/02/17 23:44:26.11 Y0AJ5NIx0.net
kbd(random(VK_Z - VK_0) + VK_0)
とかでいいんでない?
689:名無しさん@お腹いっぱい。
16/02/17 23:53:36.29 7mLT8oDH0.net
それだとVK_0からVK_Z-1までの文字コード出すだけだから
58(:)-64(@)の記号まで含まれちゃうし多分Zは出てこないね
690:名無しさん@お腹いっぱい。
16/02/17 23:54:40.60 5diPod+M0.net
丸投げに応じるなよ・・・
691:名無しさん@お腹いっぱい。
16/02/17 23:56:59.22 7mLT8oDH0.net
ランダムでの文字列生成はたまにコード書いておかないと大事な事抜け落ちるからな
692:名無しさん@お腹いっぱい。
16/02/18 00:03:21.41 eoG2gd950.net
>>648
わかる、一回の実行で使い回す頻度を考えて準備と取得は分けたりもするよね
グローバル変数を汚染をしないためにもクラス使った方が良いパターンだと思う
>>647
自分も丸投げは検索キーワードを教える位までかな
でも対処は個人の自由かと
(勿論ツッコミを入れるのも自由だと思うので非難はしていない)
693:名無しさん@お腹いっぱい。
16/02/18 00:17:37.78 OlbQAj/J0.net
>>649
そうそう 引数に渡すクラス内の配列サイズ取得してrandomの範囲決めて関数自体は汎用化させた方がスマートだったね
randomの取得範囲が以下か未満かもたまに怪しくなるしランダム文字列生成ではいつもコードレビューが厳しくなる
694:名無しさん@お腹いっぱい。
16/02/18 00:43:39.97 RFqQoptg0.net
>>649
>>2
●質問したい方へ
「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」
「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる
「○○作って下さい」→ 依頼スレじゃありません。
過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。
自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。
備考:PRI NT文を利用してデバッグする。管理者権限で起動してみる。AEROを切る。fcuc.uwsを走らせてみる。
丸投げに対応する奴は荒らしと同類
この手のスレでは鉄則だろ
695:名無しさん@お腹いっぱい。
16/02/18 00:49:06.01 YGG8mhQL0.net
コードを晒す目的でオススメのWebサイトありますか
696:名無しさん@お腹いっぱい。
16/02/18 00:52:04.81 OlbQAj/J0.net
この話題止めね?
コード書いた本人が自分のためにコード書いてんだからコピペ張るよりコード張ろうぜ
697:名無しさん@お腹いっぱい。
16/02/18 01:11:07.18 MFRYafp00.net
そもそも>>643を見ただけでは丸投げかどうかわからないと思うが
698:名無しさん@お腹いっぱい。
16/02/18 02:06:21.02 dUe+VgX70.net
丸投げでも面白い問題ならパズルのように解きたくなるものもある
解かれないってことは問題がうんこ
699:名無しさん@お腹いっぱい。
16/02/18 08:09:18.41 PV/kQd7A0.net
より短いクワインができました
URLリンク(gist.github.com)
700:名無しさん@お腹いっぱい。
16/02/18 08:33:26.58 HYi07iZS0.net
ヘルプにある仮想キーコードの説明って、プログラマ経験者前提過ぎなんだよね。
↓こういうのテンプレに入れようぜ
URLリンク(www.comrade.co.jp)
701:tp/km2/manual/Properties/VKeyCode.htm
702:名無しさん@お腹いっぱい。
16/02/18 08:38:09.64 HYi07iZS0.net
あとこれな
SendStrによる文字列送信
URLリンク(siromasa.html.xdomain.jp)
703:名無しさん@お腹いっぱい。
16/02/18 08:39:32.11 eoG2gd950.net
ヘルプファイルの
「スクリプト」「その他項目」「予約後、関数一覧」
の「定義済み仮想キー」にあるのよ
704:名無しさん@お腹いっぱい。
16/02/18 19:09:42.48 HYi07iZS0.net
いや、仮想キーが定数であることも、具体的な値も書いてないでしょ。
Aに1加算したらBになるって、
何のプログラミング経験もなくあのヘルプだけ見て判る人は相当才能あるよw
705:名無しさん@お腹いっぱい。
16/02/18 22:34:44.95 8Ev3PTaE0.net
そらそういう使い方をして欲しくないからでしょ
706:名無しさん@お腹いっぱい。
16/02/18 23:06:12.24 6tMhXUrt0.net
確かに予約語なんていつ内部値が切り替わるかわからんし
それこそ今後メインストリームがUnicode一辺倒になってUWSCが内部処理含めてUnicode対応なんて事が起きたら
現状VK_の内部値がAsciiコードである前提で書かれてるソースなんて不具合でまくる予感しかしないもんな
初心者なりに変にテクニックに依らず素直なコード書けるってのも十分に才能ではあるわけだし
707:名無しさん@お腹いっぱい。
16/02/19 07:52:42.34 TWzjjF0u0.net
s=split("s=split( msgbox(s[0]+chr(34)+join(s)+chr(34)+s[2]) );eval(s[1])");eval(s[1])
708:名無しさん@お腹いっぱい。
16/02/19 11:27:58.73 IPiQDr2h0.net
Googleの画像認識/分類API、Cloud Vision APIが誰でも使える公開ベータへ
URLリンク(jp.techcrunch.com)
こういうのってuwscでもなんとかして使えるようにしたりできるのかな
やっぱり他の言語学ばなきゃダメか
709:名無しさん@お腹いっぱい。
16/02/19 12:05:56.90 2x32U0G20.net
それの使い方って、単に画像データをPOSTするだけでいいんじゃないの?
710:名無しさん@お腹いっぱい。
16/02/22 01:02:46.99 P6qbXDjw0.net
DIM hoge[2][2] = 0,1,2, 3,4,5, 6,7,8
たとえば、こんな感じで二次元配列を定義しまして
hoge[0][2] + hoge[1][2] + hoge[2][2] を求めたいんですけど
CALCARRAYで出すには、どう書けばいいんでしょうか?
試しに、MSGBOX( CALCARRAY(hoge[][2],CALC_ADD,0,2) )
としてみましたが、「21」と表示されました
どうも、hoge[2][0] + hoge[2][1] + hoge[2][2]を計算してるようです
CALCARRAYでは、無理ですか?
711:名無しさん@お腹いっぱい。
16/02/22 01:51:26.70 wzprd0m10.net
デバッグすればわかるけれど hoge[][2] では内部的に hoge[2] として扱われている
CALCARRAYを使って合計や平均を求めたいなら
行列から指定列を抽出した配列を返す必要がある
DIM hoge[][2] = 0,1,2, 3,4,5, 6,7,8
print CALCARRAY(GetColumnArray(hoge, 2), CALC_ADD)
Function GetColumnArray(array[][], column)
rowLength = Length(array) - 1
columnLength = Length(array[0]) - 1
result = SAFEARRAY(0, rowLength)
If 0 < rowLength And 0 < column And column <= columnLength Then
For i = 0 To Length(array) - 1
result[i] = array[i][column]
Next
EndIf
Fend
712:名無しさん@お腹いっぱい。
16/02/22 02:02:09.37 wzprd0m10.net
補足すると合計や平均等の単機能なら関数内で直接計算させた方が当然ながら速いからね
合計も欲しいし平均も欲しい等のケースなら一旦指定列の配列を変数に入れるためにこんな感じの関数を使った方が効率が良くなる
713:名無しさん@お腹いっぱい。
16/02/22 06:06:44.36 P6qbXDjw0.net
>>667
ありがとうございました
714:名無しさん@お腹いっぱい。
16/02/23 20:44:15.98 gO96bxCq0.net
上にもあったけどやっぱ配列系関数は説明が難しいなー
なんか通常の宣言と混ざる傾向にある
このヘルプ少し配列について改善できないかね
><変数>
> 変数に型はありません
715:名無しさん@お腹いっぱい。
16/02/23 21:03:47.15 iXx0mMI80.net
そこの補足で十分だと思うけれどなぁ
ローカル変数には宣言は要りません(Option指定で変更可:DIM 変数名)
多次元配列には宣言が必要: DIM 変数名[数]
(配列での初期値代入: DIM X[2]=1,2,3 配列数の省略可 DIM X[]=1,2,3 )
個人的には再利用するスコープが短いローカル変数は意図的に宣言しないようにしている
(宣言する=グローバル変数かモジュール変数か配列)
716:名無しさん@お腹いっぱい。
16/02/25 09:24:51.24 x6EjoBIB0.net
× 過去ログには有益情報の宝庫
○ 過去ログには有益情報がたくさんある
○ 過去ログは有益情報の宝庫
717:名無しさん@お腹いっぱい。
16/02/25 16:03:26.26 fkkSYKXG0.net
質問です
ループでフォルダ監視し待機、ファイルが送られたら動作実行しまた待機
これのプログラム終了時に1回だけ別の動作を実行させる方法無いでしょうか?
出来ればダイアログなしで
別のバッチファイルでも実行しUWSCの常駐終了後実行とか出来ればいいんですが
方法が分かりません、宜しくお願いします
718:名無しさん@お腹いっぱい。
16/02/25 16:08:19.62 ukh1Qs010.net
>>673
なにを悩んでるのかよくわからない
こんな感じじゃないの
while true
if ファイルが北 then
ファイルが来た時の処理
endif
if 終了アクション then
最後の処理
終了処理
endif
wend
719:666
16/02/25 16:55:06.89 fkkSYKXG0.net
>>674
終了アクションは閉じる以外無いんですが
どうやって検知すれば良いのでしょうか?
720:名無しさん@お腹いっぱい。
16/02/25 17:09:05.93 ukh1Qs010.net
>>675
プロセスの終了で強制終了してるとかってこと?
使用状況によるけど、そういうスクリプトなら
終了用の空ファイルを送る、そのためのスクリプト組むとか
721:名無しさん@お腹いっぱい。
16/02/25 17:19:09.87 sdAeFe3E0.net
PRINT GET_CUR_DIR
DOSCMD("cd /d C:\Windows\System32")
PRINT GET_CUR_DIR
なんでカレントディレクトリが変わらないのだろう?
722:名無しさん@お腹いっぱい。
16/02/25 17:32:30.68 /glPAZis0.net
DOSCMD(チャイルドプロセス)のカレントディレクトリしか移動していないから
スクリプトでファイル操作する時はフルパス操作した方がいいよ
723:名無しさん@お腹いっぱい。
16/02/25 17:35:42.52 fkkSYKXG0.net
>>676
自己解決しました有難うございました
画面上にダイアログ無しでタスクバーからの終了です
方法は/nl でもう一個起動GETID
724:名無しさん@お腹いっぱい。
16/02/25 20:34:49.03 sdAeFe3E0.net
>>678
あぁ なるほど・・・
ggったらDOSCMDで出来るみたいに書いてあったけどダメなんだね
カレントディレクトリの変更はAPIか何か使わないとダメなのか
PRINT GET_CUR_DIR
DEF_DLL SetCurrentDirectoryA(string) : long: kernel32
IF !SetCurrentDirectoryA("C:\Windows\System32") THEN PRINT "error"
PRINT GET_CUR_DIR
こんな感じで問題ないかな?
助かりました。ありがとう♪
725:名無しさん@お腹いっぱい。
16/02/27 01:15:28.83 VvH2GmY20.net
画像A 画像B 画像C がランダムに現れて画像Aと画像Cが出た時は画像を左クリックする。
ググりながら下記内容にしたのですが、もっと処理速度と言うかクリックするまでの時間を早くするためには
どのようにすればいいでしょうか。
今回はじめてしたので間違いだらけな内容かもしれません。
k_id = GetID("k - Mozilla Firefox")
If k_id = -1 Then
726:ExitExit CtrlWin(k_id, ACTIVATE) px = Status(k_id, ST_X) + 42 py = Status(k_id, ST_Y) + 42 sx = 350 + px sy = 570 + py Sleep(1) While Status(k_id, ST_ACTIVE) Ifb ChkImg("AAA.bmp", 0, px, py, sx, sy) Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16) Endif Ifb ChkImg("CCC.bmp", 0, px, py, sx, sy) Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16) Endif Wend
727:名無しさん@お腹いっぱい。
16/02/27 01:20:46.23 OyTefc3Z0.net
Sleep(1)をSleep(0.1)にしたら?
728:名無しさん@お腹いっぱい。
16/02/27 01:29:14.52 f7poLGup0.net
chkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
とやったほうが良いんじゃないか?
729:名無しさん@お腹いっぱい。
16/02/27 01:35:13.96 VvH2GmY20.net
>>682
>>683
ありがとうございます、変更してみます。
730:名無しさん@お腹いっぱい。
16/02/27 02:04:58.57 VvH2GmY20.net
>>683
While Status(k_id, ST_ACTIVE)
Ifb ChkImgchkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16)
と変更したところ画像Aクリックしない 画像Cクリックするになりました。
試しに以下に変更したところ逆の結果になりました
Ifb ChkImgchkimg("ccc.bmp",ほにゃほにゃ) or chkimg("aaa.bmp",ほにゃほにゃ)
後の記述のみ実行されるようです。
自分でもググッて解決策を探してみます。
731:名無しさん@お腹いっぱい。
16/02/27 02:14:04.68 +U0TNGIH0.net
chkimgでorする場合は
最初にOPTION SHORTCIRCITを宣言しとかなダメよ
前者が存在しても後者の判定してまうから
732:名無しさん@お腹いっぱい。
16/02/27 02:14:41.87 +U0TNGIH0.net
というか>>683はそこまで教えてあげないと
733:名無しさん@お腹いっぱい。
16/02/27 02:55:14.02 mDOHEmLU0.net
これが終わったらこれ、みたいな単純な流れ作業は書けるようになったので
すごろくのようにあっちこっちに飛ぶ条件を付けていこうと思うんですが
文字だけだと順番が訳わからなくなりそうなんですがやってれば目が慣れてくるものですか?
734:名無しさん@お腹いっぱい。
16/02/27 03:03:43.45 VvH2GmY20.net
>>686
ありがとうございます。
OPTION SHORTCIRCITを宣言したところ
Ifb ChkImgchkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
での処理ができるようになりました。
>>682
>>683
>>686
みなさんのご教示により
最初に記載した物より、早くなりました。
低スペPCの為、どこまで出来るか分かりませんが
色々調べながらやってみます。
735:名無しさん@お腹いっぱい。
16/02/27 03:31:25.12 DVc62XNO0.net
>>689
もしwin7使ってるならデスクトップコンポジションを切るとchkimgが速くなるよ
736:名無しさん@お腹いっぱい。
16/02/27 13:19:18.71 EORKr9mx0.net
画像Aと画像Cが出た時は画像を左クリック
and?or? ???? ってなってるんだけど
737:名無しさん@お腹いっぱい。
16/02/27 13:21:01.50 Iow3jdwl0.net
?
738:名無しさん@お腹いっぱい。
16/02/27 13:38:04.37 38mQ0onS0.net
両方を満たすなら当然ANDだけど
少し上の短絡評価の話で混乱しているのかな?
739:名無しさん@お腹いっぱい。
16/02/27 15:10:47.45 IJ0wxpKe0.net
AかCが、なら or だろうけど
AとCが、という質問なんだから and じゃなきゃおかしい。
でも流れを見た感じでは質問の方がおかしかったっぽいね。
740:名無しさん@お腹いっぱい。
16/02/27 16:05:27.86 +U0TNGIH0.net
いや>>681のコードまでちゃんと見ればorだなってわかるだろ
読解力の問題
ANDに取れるような書き方が悪い!とか言っちゃう奴は
読解力のないバカか理屈バカのどっちか
741:名無しさん@お腹いっぱい。
16/02/27 16:28:31.65 sQuDImeT0.net
卵があったら牛乳うんぬんかんぬん
742:名無しさん@お腹いっぱい。
16/02/27 16:53:15.04 f6jdCZ8k0.net
windowsマクロテクニック読みつぶしたから2冊目買ったわ
(´・ω・`)
743:名無しさん@お腹いっぱい。
16/02/27 16:57:01.43 f7poLGup0.net
文字列を数値に変換するのはVAL
数値を文字列にするのはformatでいいのかな?
744:名無しさん@お腹いっぱい。
16/02/27 17:11:37.28 jnFT48H20.net
sleep(20+random(120))
20秒+0~119秒の待ち時間ってこれでいい?20秒の部分は固定だよね?
745:名無しさん@お腹いっぱい。
16/02/27 17:25:32.73 IJ0wxpKe0.net
>>695
>>681を見ても、質問文が間違ってるのかコードが間違ってるのかわからないだろう。
746:名無しさん@お腹いっぱい。
16/02/27 18:45:03.26 +U0TNGIH0.net
>読解力のないバカか理屈バカのどっちか
って言ってるのにまだ言う
どんだけだよ
747:名無しさん@お腹いっぱい。
16/02/27 20:47:36.55 jnFT48H20.net
>>699
これあってる?
748:名無しさん@お腹いっぱい。
16/02/27 21:07:31.07 tsk8CpEJ0.net
>>702
どこに疑問がある?
試せば判ることを何故聞く?
749:名無しさん@お腹いっぱい。
16/02/27 22:31:03.41 1L8PKm630.net
もう一週間以上も悩んで解決出来ないんだけど
CLKITEMでクリックするそのアイテムが無かった時の条件分岐って出来ない?
CLKITEM(GID,"閉じる")とかにすると閉じるが無かった場合、待ち時間指定が無いから
そこで長い間止まってしまう
これを1秒とかで判定して条件分岐するにはどうしたらいいの?
750:名無しさん@お腹いっぱい。
16/02/27 23:00:05.73 Iow3jdwl0.net
>>704
戻値 = CLKITEM( ID, アイテム名, [種別, On/Off, 番号] )
戻値
TRUE:正常、 FALSE:処理不能
ヘルプくらい見ろや
751:名無しさん@お腹いっぱい。
16/02/27 23:30:25.92 gFrWrIbO0.net
>>703
ランダム値は試せばわかるって性質のもんじゃないだろw
752:名無しさん@お腹いっぱい。
16/02/27 23:38:07.11 38mQ0onS0.net
値が範囲内に収まるか気になるなら期待値以外になればNG表示する関数を数千回ループさせてみてるとか
スリープの単位がヘルプの内容と同じか気になるなら前後でミリ秒表示してみるとか
仕様が気になった時は検証可能な単位にどうやって分解するか考えよう
753:名無しさん@お腹いっぱい。
16/02/27 23:38:09.23 sQuDImeT0.net
print 0.1+random(3)みたいに
小さい桁で試すとかいくらでも試しようはあんだろ
754:名無しさん@お腹いっぱい。
16/02/27 23:39:50.44 1L8PKm630.net
>>705
ACC系だとFALSEが返ってこないで、そこで動作が止まっちゃうんだよ
一瞬で判定してくれるならいいんだが
755:名無しさん@お腹いっぱい。
16/02/27 23:54:14.26 jnFT48H20.net
>>707
^3^
756:名無しさん@お腹いっぱい。
16/02/27 23:59:06.69 gFrWrIbO0.net
ランダムだと外見的には何回ループしても、多分仕様通りといえるが100%仕様通りと断言できなくなるだろ
ソース見りゃ一目瞭然だけど、テストの結果だけ見るとそういう事になるじゃん。
757:名無しさん@お腹いっぱい。
16/02/28 00:20:30.70 9QYQdQG/0.net
そりゃその通りだが、少なくとも今回の話題である>>699の言う固定だのは試せば確実に分かることだろうが
758:名無しさん@お腹いっぱい。
16/02/28 00:56:26.92 qefict4b0.net
そこもランダム値と足されちゃうから試してわかるのは100%確実ではないなw
そして今のところYES/NOで答えられる質問にだれも答えられていないという・・・
>>699
いい、はず
759:名無しさん@お腹いっぱい。
16/02/28 01:03:30.83 9QYQdQG/0.net
だから固定値は0.1にすりゃわかるって言ってんだろアホ
少しは頭使えや
760:名無しさん@お腹いっぱい。
16/02/28 02:00:59.24 pR7C6fW20.net
>>706
仕様のないものならそうだけど
期待値があって、それにあってそうかどうかを確認するだけなんだから
100万回でも1000万回でもrandom()の引数に対して充分な回数試せばいいだろ
仕様があってるか否かを確認するわけじゃないんだから
761:名無しさん@お腹いっぱい。
16/02/28 02:08:27.06 qefict4b0.net
1000万と1回目で想定外値がでる可能性が微レ存
762:名無しさん@お腹いっぱい。
16/02/28 02:28:46.68 0r4UbGuu0.net
>>716
しつこいぞ
763:名無しさん@お腹いっぱい。
16/02/28 02:38:57.53 9QYQdQG/0.net
的外れにも程があるな阿呆は
764:名無しさん@お腹いっぱい。
16/02/28 02:40:28.35 qefict4b0.net
いや707は言うとおりだけど708は論理的じゃないしさ
あと一応>>711の名誉のために言っておくと自分はそのヒトとは別人です
765:名無しさん@お腹いっぱい。
16/02/28 03:55:09.54 +XXpVUCC0.net
random関数にバグがあるかも知れないからとか
そもそもコンピュータには本物の乱
766:数の生成は不可能だとか そういう話をしてるんだろうか?
767:名無しさん@お腹いっぱい。
16/02/28 04:18:12.48 8+yUHWxH0.net
自分か運用する上で許容できる範囲内かどうかという話なんだけれどね
768:sage
16/02/28 07:54:55.15 k7lnu1y6g
ここで質問して良い内容でしょうか。
ロードス島戦記オンラインにて、KBD関数が動作しません。
原因、対策等わかりましたら教えてください。
769:名無しさん@お腹いっぱい。
16/02/28 11:33:31.44 pR7C6fW20.net
>>716
自分のにたいしてだと思うから一応答えておくと
それは単なるバグで元の質問とは無関係でしょ
770:名無しさん@お腹いっぱい。
16/02/28 12:59:00.66 f5PR4wTV0.net
元質問の人明らかにrandom関数の仕様を理解してないところから来てるから…
バグとそうでないものの違いを判別できない。
だから何回ループしてもその結果をもって仕様通りに動いていると結論付けられない。
771:名無しさん@お腹いっぱい。
16/02/28 13:04:53.34 9oz8zZQ80.net
実はPCを揺らすと数値が飛ぶバグがあるんだ
772:名無しさん@お腹いっぱい。
16/02/28 14:07:12.58 fiqkpaBc0.net
落下中のPCはランダムを返してくれないとかなりそうだなおい。
773:名無しさん@お腹いっぱい。
16/02/28 14:27:31.94 blrfAobm0.net
実は念を送るとランダムの確率が変動するんだ
774:名無しさん@お腹いっぱい。
16/02/28 15:35:04.40 WeWO61jV9
Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
実際の待ち時間が20+120秒以上にならないという保証は無いよ
普通はそこまで気にする必要が無いってのも言うまでも無い
775:名無しさん@お腹いっぱい。
16/02/28 15:34:52.99 Xg5e+H4y0.net
UWSCは大昔のBASICみたいに、何度走らせてもRANDOM関数は同じ乱数と思ってた。
BASICでは、RANDOMIZEでタイマーを引数にしてたなぁ。
776:名無しさん@お腹いっぱい。
16/02/28 15:38:07.16 n2+v+wZb0.net
Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
実際の待ち時間が20+120秒以上にならないという保証は無いよ
普通はそこまで気にする必要が無いってのも言うまでも無い
777:名無しさん@お腹いっぱい。
16/02/28 19:51:10.87 5dU2/tOb0.net
>>730
> Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
> 実際の待ち時間が20+120秒以上にならないという保証は無いよ
そんな厳しい精度で動かす言語じゃないからね。Windows自体がRTOSじゃないからネイティブアプリでも
保証はないし。
778:名無しさん@お腹いっぱい。
16/02/28 20:34:52.25 J1sXa2fC0.net
ごめん単純に使い方が間違ってないかって質問だったごめんなさい
779:名無しさん@お腹いっぱい。
16/02/29 01:14:12.41 kLHNktmf0.net
式による設定のところで7時から19時までの間に9分間隔で実行て出来ます?
780:名無しさん@お腹いっぱい。
16/02/29 02:57:03.79 Y5wKBi2d0.net
GETTIME()でG_TIME_HHを取得して
7時から19時までの間は実行させて
9分間隔はSLEEP(540)でいけるのではないかと
781:名無しさん@お腹いっぱい。
16/02/29 03:01:49.33 kLHNktmf0.net
>>734
すいません
初心者すぎてよくわからないです
例えばこういう場合だと○月○日の7時からのみになってしまうんですよね
(YMDNN>=7894680) AND (YMDNN<=7894980) AND ((YMDNN MOD 60)=0)
毎日7時からというその方法はどう書けば良いのでしょうか
782:名無しさん@お腹いっぱい。
16/02/29 03:11:25.69 vc3n0bkN0.net
>>735
書いてあることそのままやればいいと思うけどな
GETTIME()を実行するとG_TIME_HHに実行時の時間が格納される
あとは7とは19と比較すればいい
GETTIME()
If (G_TIME_HH>=7) and (G_TIME_HH<19) then
やりたいこと
EndIf
783:名無しさん@お腹いっぱい。
16/02/29 03:20:04.69 kLHNktmf0.net
>>736
やりたい事が複数あって時間間隔も色んなパターンがある場合もそれで出来ますか?
784:名無しさん@お腹いっぱい。
16/02/29 03:40:29.09 vc3n0bkN0.net
>>737
条件式変えてやれば大体の動きはできると思うけど…
とりあえず自分で書いてみないと覚えないぞ
785:名無しさん@お腹いっぱい。
16/02/29 03:44:48.44 kLHNktmf0.net
>>738
ちょっと色々と試してみます
どうもです
786:名無しさん@お腹いっぱい。
16/02/29 05:02:19.00 UwM6ts+X0.net
ヘルプも読まずに拾ったマクロの改造法を聞いてるだけっぽいな
787:名無しさん@お腹いっぱい。
16/02/29 05:23:18.45 kLHNktmf0.net
いやもう初心者なんで全然わからんのですよ
788:名無しさん@お腹いっぱい。
16/02/29 06:20:04.43 W4Lx+MiB0.net
初心者っていちいち書くな わかってる
789:名無しさん@お腹いっぱい。
16/02/29 09:56:53.47 S3AkKIbC0.net
なんでも只で手に入ると思うなよw
プログラムの基礎教養があればネット上の情報だけで理解できるが、
それがなければ情報の取捨選択すらできずやりたいことにたどり着けない
1冊くらいは金出して本を読め
790:名無しさん@お腹いっぱい。
16/02/29 10:13:32.76 7awlWggQw
式による設定 7時から19時までの間に9分間隔で実行
HH>=7 AND HH<19 AND (YMDNN MOD 9)= 0
791:名無しさん@お腹いっぱい。
16/02/29 11:07:56.89 W4Lx+MiB0.net
それよりプログラマ雇えといいたい
792:名無しさん@お腹いっぱい。
16/02/29 11:11:22.54 OC88kjRQ0.net
プログラムの素養もネットで身に着けられるし
プログラムの素養が必要って情報もこうやって手に入ってるし
やりとりしてれば2chでのイラつかせるワードも分ってくるし
地道に調べて試してけばいいと思うよ
793:名無しさん@お腹いっぱい。
16/02/29 12:08:54.45 zgYAM+0i0.net
質問してる程度の知識ならすぐにネットで手に入る
だから「初心者なのでわからん」が通用しない
もう少し自分で調べて、具体的にわからない部分が出たらもう一度質問しに来れば良いよ
794:名無しさん@お腹いっぱい。
16/02/29 12:22:07.58 yBnnbdV70.net
初心者さんはまずフローチャート書くか日本語で処理手順を箇条書きにするようにしたらええのよ
んでヘルプなり解説サイトの熟読
いきあたりばったりでスクリプトに手を入れようとするとわけわかんなくなって当たり前よ(´・ω・`)
795:名無しさん@お腹いっぱい。
16/02/29 12:32:25.62 3ZfsBzX30.net
動作がおかしくなったのでプリントでログを確認していたらpublicが原因と分かりましたがいまいち納得ができないです
SLCTBOXやpublicの動作を確認しても問題ないと思うのですが、どうしてpublicをつかったらダメなんでしょうか?
SELECT SLCTBOX(SLCT_BTN, 0,"画面の大きさ設定","デフォルト画面","50%画面")
CASE SLCT_1
public size = 100
print "size(100)=" + size
CASE SLCT_2
public size = 50
print "size(50)=" + size
SELEND
print "size=" + size
この状態のプリントは
size(100)=50
size=50
2つのpublicをはずすと
size(100)=100
size=100
となります。
796:名無しさん@お腹いっぱい。
16/02/29 12:38:11.72 3ZfsBzX30.net
すいません
プリント結果はSLCT_1を選んだ時です
797:名無しさん@お腹いっぱい。
16/02/29 12:45:54.58 Hitpgwgs0.net
CASEに入ってからPUBLIC使ったら見た目通りの順序じゃなくなるよ
実行時にPUBLICを付けた行は先頭に移動するイメージなのです
そのような使い方をしたければPUBLIC宣言は空宣言か0代入をSELECT前に行って下さい
(つまり移動しても大丈夫な所に置く)
798:名無しさん@お腹いっぱい。
16/02/29 12:47:46.09 i1OgRjUe0.net
publicはプログラム実行時に真っ先にに値を読み込むから最後に書いたpublic size = 50が優先されてるんじゃないの
同じ変数を使用する場合でも宣言は基本的に一回だけ
public size
SELECT SLCTBOX(SLCT_BTN, 0,"画面の大きさ設定","デフォルト画面","50%画面")
CASE SLCT_1
size = 100
print "size(100)=" + size
CASE SLCT_2
size = 50
print "size(50)=" + size
SELEND
print "size=" + size
799:名無しさん@お腹いっぱい。
16/02/29 12:50:36.85 7tqwHv410.net
OPTIONと同じやね
後勝ちになる
つーか、同じ変数を何度もPUBLICで宣言なんてするもんじゃない
800:名無しさん@お腹いっぱい。
16/02/29 12:57:09.80 3ZfsBzX30.net
>>751-753
ありがとうございます納得できました
なるべく簡潔に書こうと思っていたのですが良くない書き方だったみたいですね
グローバル変数は極力使わないようにとよく目にするので気をつけます
801:名無しさん@お腹いっぱい。
16/02/29 17:14:21.74 7awlWggQw
>>744 自己レス
式による設定 7時から19時までの間に9分間隔で実行
毎日7時からカウントスタートする式
HH>=7 AND HH<19 AND ((HH*60+NN-(7*60)) MOD 9)= 0
802:名無しさん@お腹いっぱい。
16/02/29 19:14:05.70 7awlWggQw
>>704
if -1 <> CHKBTN(GID,"閉じる") then CLKITEM(GID,"閉じる")
803:名無しさん@お腹いっぱい。
16/02/29 20:24:39.97 7awlWggQw
>>709
URLリンク(www.uwsc.info)
CLKITEM関数のCLK_ACC指定にてダイアログを出すと閉じるまで制御が戻らない #N15
CLK_LEFTCLK を付加してください。
CLKITEM(id, "xxx", CLK_ACC or CLK_LEFTCLK)
804:名無しさん@お腹いっぱい。
16/03/01 00:51:55.84 Hw/6RB5N0.net
基本的な操作でお恥ずかしいのですが、どうしても自力で解決できなかったので
ヒントだけでもお教えください。
Win 7 Professional 64 bit + IE 11での操作です。
テーブル内にダウンロード用リンクが複数(*および青文字のアルファベット部)あり、
それらを自動でひとつずつダウンロードしようとしています。
URLリンク(s1.gazo.cc)
画面の状態までは持ってこれたのですが、どうしても赤枠で囲った保存(S)を
押すことが出来ません。サンプルコードも試してみたのですが、
理解不足かIE, OSのバージョン違いなのか、上手く動作させられませんでした。
クリックすると緑枠部に一瞬新しいタブが出来ているのでそこが関係あるのか、
或いはCLKITEM部が間違っているとは思うのですが……。
A = 0
Repeat
DLLTEXT = IE.document.links[A].innertext
IfB DLLTEXT <>
805:名無しさん@お腹いっぱい。
16/03/01 01:30:04.42 Hw/6RB5N0.net
切れてしまったのでコード部だけ貼り直します。すみません。
A = 0
Repeat
DLLTEXT = IE.document.links[A].innertext
IfB DLLTEXT <> "" Then
IE.document.links[A].click()
SLEEP(10)
CLKITEM(GETID("Internet Explorer","#32770"),"保存(S)", CLK_ACC)
EndIf
A = A + 1
Until A = 100
DLLTEXT~部は、ソースを確認したところ見えないリンクがあったので、それを回避しようと思い付け加えました。
長々とすみません。よろしくお願いします。
806:名無しさん@お腹いっぱい。
16/03/01 04:46:22.39 mSZ5heBH0.net
IEの "ファイルのダウンロード" にて "保存" ボタンが反応しない #N23
URLリンク(www.uwsc.info)
807:名無しさん@お腹いっぱい。
16/03/01 07:01:07.94 pMN1suyz0.net
エクセルのマクロでリンクを取り出してファイルに書き出して、ロダに食わせるほうがいんでないのかね
808:名無しさん@お腹いっぱい。
16/03/01 07:34:10.51 uRkQmwxK0.net
>>760-761
ありがとうございます。
#N23は試してみたのですが、上手く出来なかったのでWin7だからかIE11だから無理なのかと
思っていたのですが、何か間違えていたのかもしれません。
エクセルマクロの方は考えてもいませんでした。
あまりに手間取るようなら別の方法を試したほうがいいですね……。
もう少し自分でやってみます。ありがとうございました。
809:名無しさん@お腹いっぱい。
16/03/01 07:53:15.84 mSZ5heBH0.net
であればクリックに必要なタイトル、クラス名を調査用のスクリプトを書いて調査したり
開発環境にあるSPY++をつかって調査したりすると良いよ
問題点は
保存ボタンがあるウインドウ(ポップアップ)のIDが取得できていない
保存ボタンのアイテム名が正しくない
のどちらかだからね
後、リンクのクリックまで手動でやってみて
保存ボタンのクリックだけスクリプトで可能かも評価が必要
失敗するなら
IEの操作(COM)にて、ダイアログが出ると動作が停止する #N25
URLリンク(www.uwsc.info)
810:名無しさん@お腹いっぱい。
16/03/01 07:57:24.35 mSZ5heBH0.net
あ、ごめん
リンククリック(手動)、保存ボタンクリック(スクリプト)→成功
リンククリック(スクリプト)、保存ボタンクリック(スクリプト)→失敗
なら
IEの操作(COM)にて、ダイアログが出ると動作が停止する #N25
URLリンク(www.uwsc.info)
の対処も必要かも
811:名無しさん@お腹いっぱい。
16/03/01 08:07:35.16 w83/qWlj0.net
ようわからんが
win7のie11で下を走らせて置いてダウンロードダイアログだしたら普通に押してくれるが
while true
if CLKITEM(GETID("Internet Explorer"),"保存(S)", CLK_ACC) then break
sleep(1)
wend
#32770これいらんのとちゃうんか
812:名無しさん@お腹いっぱい。
16/03/01 22:50:42.13 HDjL1sAH+
>>763-764
親切にありがとうございます。
SPY++はVisualStudio?を持っていないので用意できなかったのですが、
類似のuuSPYを使用して調べたところ
親の"IEFrame"→子"Frame Notification Bar"→孫"DirectUIHWND"というクラス名の
ダイアログだと分かったので、そこから調べて操作できるようになりました。
問題点の洗い出し方も勉強になりました。これでもう少し自分で調べて解決できるように
なれそうです。
>>765
サンプルまで用意して頂きすみません。
実際に動かしてみたのですが、やはりIDが取得できていないのか
押してくれず……。
お二人とも親切にありがとうございました。
813:749
16/03/02 01:27:17.46 41jBzZAb0.net
>>763-764
一応動作させることが出来ました。
結果的には、保存ボタンのウィンドウIDが取得できていなかったようです。
(クラス名IEFrameだと思っていたのですが、ダイアログは別の名前でした)
SPY++はVisualStudio?を持っていないので用意できなかったのですが、
uuSPYという類似ソフトで調べられました。
SPY++的なソフトの存在(というか問題の洗い出し方?)すら知らなかったので勉強になりました。
丁寧にありがとうございました。
>>765
サンプルまで提示して頂き、すみません。
流してみたのですが、やはり反応せず……
ダイアログが出た後もそのまま動いていったので、
動作停止したわけでもなさそうなんですが……
ともかく、ありがとうございました。
814:名無しさん@お腹いっぱい。
16/03/02 20:36:33.34 TfJohTOi0.net
A.bmpがあったとき
Aからx+30、y+30の場所にB.bmpがあったときのみC.bmpを押す
画像範囲について検索しましたが画面全体から範囲を指定するみたいですし
Aはいろいろな場所に現れます Bは複数現れます
Aから相対座標で検索範囲指定するためにはどうすればいいのですか?
815:名無しさん@お腹いっぱい。
16/03/02 20:39:40.47 yBkd0HNE0.net
>>768
【ヘルプより引用】
座標情報は配列変数 ALL_IMG_X[], ALL_IMG_Y[] に格納(配列はゼロから)
B探してから配列変数をコピー
ループさせながら相対範囲指定でAを探して
あればCをクリックしたら良いんじゃないかな
816:名無しさん@お腹いっぱい。
16/03/02 21:39:50.37 TfJohTOi0.net
ありがとうございます いろいろ試してみます
817:名無しさん@お腹いっぱい。
16/03/03 12:25:37.00 u+vEEjvS0.net
IFB CHKIMG("A")
ax=G_IMG_X;ay=G_IMG_Y
IFB CHKIMG("B",0,ax+29,ay+29,…)
IFB CHKIMG("C")
BTN(LEFT,CLICK,G_IMG_X+9,G_IMG_Y+9)
ENDIF
ENDIF
ENDIF
格納がよくわかんないし雑だけどこんな感じは
818:名無しさん@お腹いっぱい。
16/03/03 12:50:46.44 Ck6IE5Sq0.net
PCからスマホの内臓ストレージにファイルやフォルダを転送したいです。
アイテムには日本語が含まれているため、DOSCMD+ADBでは文字化けしていたので、
[MultiByteToWideChar][WideByteToMultiChar]を組み合わせましたが、
半角スペースや特定の文字のため、転送ができませんでした。
何か回避策はないでしょうか?
819:名無しさん@お腹いっぱい。
16/03/03 14:01:05.13 0xlIg63T0.net
よく知らんから適当いうけど、コマンドプロンプトのshift_jisをUTF-8にするとかで解決しない?
820:名無しさん@お腹いっぱい。
16/03/03 14:38:58.59 o8n0++8T0.net
UWSCってどう?
ブラウザとか制御しにくい気がするんだけど
821:名無しさん@お腹いっぱい。
16/03/03 16:23:03.08 Ck6IE5Sq0.net
> 759
それも試しました。
CHCPでSHIFT-JISからUTF-8に変換して、書き込みに行ったんですが、
UTF-8化した文字列が受け付けませんでした。
822:名無しさん@お腹いっぱい。
16/03/04 02:14:39.26 EA8iP2810.net
すみません、助けてください
bluestacks uwscをつかって自動化しようとしてるのですが
uwscのクリックを認識?してくれません
マウスでツムツムの操作は普通にできます。
bluestacksの代わりにエクセルを起動させておく(画面に表示)とクリックも認識してくれています。
非アクティブの問題かとおもいアクティブ化もいれてみましたがだめでした
助言お願いいたします
823:名無しさん@お腹いっぱい。
16/03/04 02:49:01.44 sp+52hH20.net
UWSCが使いないアプリもある
bluestacksはそれ
以上
824:名無しさん@お腹いっぱい。
16/03/04 04:06:59.33 32k0gAq70.net
genymotionで散々やったけど無理だったよ
ウィンドウは掴めるけど内部idが掴めない
825:名無しさん@お腹いっぱい。
16/03/04 09:01:58.98 lSRUIbNn0.net
>>776
絶対座標は?
両方ともプロパティ-互換性-管理者として実行を試す
他にもgoogleでいろいろ試す
ダメならダメ
826:名無しさん@お腹いっぱい。
16/03/04 17:10:22.64 qcabtBIu0.net
プログラミングって具体的な目標が無いと向上しないな
827:名無しさん@お腹いっぱい。
16/03/04 19:28:46.89 0avFt52T0.net
MOUSEORG関数でMORG_DIRECTを指定するとCHKIMG関数とBTN関数の座標に
ズレが発生します。
どうせればズレを解消または補正できますか?
828:名無しさん@お腹いっぱい。
16/03/04 20:28:03.15 Cx1nPm1Z0.net
>>781
たぶん、ウィンドウ座標とクライアント座標のズレが原因だから
ウィンドウ座標を基準にすれば一致すると思う。
829:名無しさん@お腹いっぱい。
16/03/04 22:31:12.71 6AjLUgCP0.net
>>782
ウィンドウ位置を(0,0)に合わせて起動してもズレます
830:名無しさん@お腹いっぱい。
16/03/04 22:53:16.26 ojY0v8Jg0.net
>>783
たいていウィンドウには枠があるでしょ
タイトルバーとかウィンドウを広げたり縮めたりする細い線
アレが影響してると思われるから
ウィンドウ位置を00にしても・・・
831:名無しさん@お腹いっぱい。
16/03/04 22:54:21.95 1DETh6nk0.net
これはさすがにネタだろw
uwsc以前のWindowsの基礎知識の問題だぞ
832:名無しさん@お腹いっぱい。
16/03/04 23:02:35.51 Cx1nPm1Z0.net
>>783
MOUSEORG( ID, MORG_CLIENT ) と MOUSEORG( ID ) で比較してみて
あと、CHKIMG で取得する座標は画像の左上になるけど、
検索画像と座標の間にどのようなズレがあるのか書いてね。
833:名無しさん@お腹いっぱい。
16/03/05 04:26:25.45 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:名無しさん@お腹いっぱい。
16/03/05 04:31:42.39 TP9s+Xc10.net
MOUSEORG(id)とMOUSEORG(id, MORG_CLIENT)の座標逆でした
835:名無しさん@お腹いっぱい。
16/03/05 05:02:22.36 PQgaMRcF0.net
>>787
URLリンク(www.vuzix.jp)
この画像と比較すると、横の枠がない状態なので
タイトルバーの幅
836:の分だけ MORG_CLIENT のありなしで違う状態ですね。 MORG_DIRECT の方は訳が分かりませんね。 原因を調べるには、MORG_DIRECT を指定した状態で SAVEIMG することです。 画面が崩れて見えると思います。 画面が崩れて見えるだけで、クリックが正常に行えるなら、 MOUSEORG をその都度実行して CHKIMG のときは MORG_DIRECT なし BTN のときは MORG_DIRECT あり とかにすればいいと思います。
837:名無しさん@お腹いっぱい。
16/03/05 23:00:40.60 +UaXZBac0.net
WinnyでMP3ファイルを手に入れたのだが、10曲が1つのMP3ファイルになっている。
これを1曲ずつ10個のMP3ファイルに分けたいのだがどうしたらいいのかね?
838:名無しさん@お腹いっぱい。
16/03/05 23:04:45.09 t6t79+190.net
うーん
わかんない!
839:名無しさん@お腹いっぱい。
16/03/06 00:14:59.81 dCUjX7lH0.net
>>790
torスレに回答してくれてる人がいるぞクソ虫
840:名無しさん@お腹いっぱい。
16/03/06 09:47:42.18 TvpTaFVp0.net
>>790
.zipをつけて解答
841:名無しさん@お腹いっぱい。
16/03/06 10:49:16.69 zGk8lpZo0.net
>>790
手動でやればいいんじゃない?
842:名無しさん@お腹いっぱい。
16/03/06 11:37:41.69 RRLqddKE0.net
10個のmp3のアーカイブならともかく、10曲が一つのmp3になってるなら
編集ソフトで切り出すしかないのでは
843:名無しさん@お腹いっぱい。
16/03/06 12:04:50.72 WY+6IsJt0.net
なんでおまえら答えてんの
844:名無しさん@お腹いっぱい。
16/03/07 14:52:09.82 9LHTjHFn0.net
関数の呼び出しで参照引数の初期値代入とか出来ないんでしょうか?
あらかじめ先に初期値代入するしかない?
abc(hoge=111)
print hoge
procedure abc(var hoge)
hoge = hoge + 100
fend
845:名無しさん@お腹いっぱい。
16/03/07 15:09:06.92 WbyHlW0e0.net
なんじゃそれ
abc(111)
でいいだろ
846:名無しさん@お腹いっぱい。
16/03/07 15:12:10.38 WbyHlW0e0.net
ああ、そんでhogeを続きの処理で使いたいのか
それで動かないんならできないんだろ
大人しく先に代入しとけよ
1行増えるだけじゃん
どうしてもそうしたい理由でもあんの?
847:名無しさん@お腹いっぱい。
16/03/07 15:51:15.35 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:名無しさん@お腹いっぱい。
16/03/07 15:58:21.83 9LHTjHFn0.net
上で挙げてるのはただの例です。
実際は参照引数が多く、引数の一部だけ初期値代入したいのと
print文は無いですね。
849:名無しさん@お腹いっぱい。
16/03/07 16:09:04.11 gjVyQnvH0.net
はげ+150本 = そんなに増えていませんよ
850:名無しさん@お腹いっぱい。
16/03/07 20:04:53.77 tjYcm4Q90.net
それは参照渡しを使うことが間違いなんじゃね?
851:名無しさん@お腹いっぱい。
16/03/07 20:20:19.36 tjYcm4Q90.net
参照引数ってのは値じゃなくてメモリの番地とかそういうものを入れてるんじゃなかったっけ?
だから参照引数に値は代入できない
852:名無しさん@お腹いっぱい。
16/03/07 21:49:34.48 Yt8oL/UZ0.net
そもそも一度も代入も宣言もしていない変数は使えないよ
dim hoge
abc(hoge , 111)
print hoge
sleep(10)
procedure abc(var hoge , hoge0 = hoge)
hoge = hoge0 + 100
fend
これなら動くけど最初のdim文外すと怒られるから意味が無い
853:名無しさん@お腹いっぱい。
16/03/07 22:27:49.67 9LHTjHFn0.net
一つの関数で複数の変数を変更するのだけど、その関数より前には使わない
結果受け取り専用の引数で
a=0;b=0;c=0;…10個くらい //まあこれが無意味な文に思えてならない
abc(a,b,c,…)
procedure abc(var a, var b, var c,…)
…
fend
854:名無しさん@お腹いっぱい。
16/03/07 22:43:28.84 YgJHqyxo0.net
>>797を見ると受け取り専用とは見えなかったけど
単にその目的なんだったら>>805の人が書いてるように
Dim a,b,c...
abc(a,b,c...)
でいいんじゃないの?
855:名無しさん@お腹いっぱい。
16/03/08 0
856:9:25:26.60 ID:X39hgh8s0.net
857:名無しさん@お腹いっぱい。
16/03/08 11:36:49.32 mdQ0PQ+40.net
>>808
正にそんな感じ…
参照引数が多いのは外部からのデータ取得を一気にやるせいで
その関数の内部は整理されてるんだけど。
最初は小規模なスクリプトで変数の管理とか適当で、後から書き加えていったから
今はこんなはずじゃなかったorzって状態になってて後悔してる。
858:名無しさん@お腹いっぱい。
16/03/08 14:04:27.07 EYyC3Yny0.net
質問です。
MOUSEORGを使用したバックグラウンド操作で、
マウスオーバーする方法ってありますかね?
マウスオーバーして出てくる画像の認識をしたいんだけどできぬ
859:名無しさん@お腹いっぱい。
16/03/08 15:29:09.82 X39hgh8s0.net
それはバックグラウンドのウィンドウにマウスオーバーイベントを
発生させろと言っているに等しいんだが…
これ自動化ツールよ?
まずあなたが手動で隠れたウィンドウにマウスオーバーしてみなさいよ!
とんちかな?
860:名無しさん@お腹いっぱい。
16/03/08 15:47:28.50 YrarT/t10.net
一休さんのトラの屏風の事だな
次の方どうぞ
861:名無しさん@お腹いっぱい。
16/03/08 15:52:30.08 uEQeFD2u0.net
mmvのこといってるんじゃない?
862:名無しさん@お腹いっぱい。
16/03/08 15:58:04.94 /957NIFT0.net
煽りたいだけで答えられないならちょっと黙ってろよ
俺は黙る
863:名無しさん@お腹いっぱい。
16/03/08 16:05:17.57 CELrwcnT0.net
>>811
どういう理屈だよ
元々UWSCで出来るバックグラウンド操作は手動で出来ないでしょ
864:名無しさん@お腹いっぱい。
16/03/08 16:25:16.15 XRfaJMaM0.net
バックグラウンド操作でもマウスオーバーイベントが発生するかどうかという
その対象ソフト側の問題なんだから、UWSCの質問じゃないぞ。
865:名無しさん@お腹いっぱい。
16/03/08 16:54:18.27 oQSRIGCR0.net
なんかレベル下がったなここ
866:名無しさん@お腹いっぱい。
16/03/08 17:08:25.81 X39hgh8s0.net
>>815
バックグラウンド操作は元々のUWSCのコンセプトPC操作の自動化を
あくまで拡張したものであって、
出来なくて当然のことが出来るようになった機能だよ。
それをあたかも出来て当然のように認識されても困るわな。
まぁこんなソフトが無料で使えるだけでも奇跡的なんだが。
マウスオーバーイベントをマウスオーバーせず強制的に
外から発生させることが可能なAPIが公開されてるならば、
もはやマウスオーバー画像を直接ぶっこ抜くことも出来るんじゃね?
自動操作というよりアプリハッキングだわな。
まぁこれであっさり出来ますよとかコードが出てきて
俺が逆立ちするハメになるかもしれんがw
867:名無しさん@お腹いっぱい。
16/03/08 17:29:48.80 d7jVEpko0.net
Win32ApiのSendMessage(PostMessage)等を使ってイベントを発生させる方法はあるにはあるよ
それをアプリハックと呼ぶかは置いておいて
重要なのは作業中のマウスは普通に存在し続けているって事なので
バックグラウンドだと資源衝突が発生するのでやっぱり安定しないのよ
平たく言うとスクリプトがここにマウスがあるよとした直後に
本当のマウス位置に更新されるのでここにはマウスは無いよとなる
だからよく分からなければ別PC用意して最前面でやる
仮想環境が分かるならそっちの最前面でやれ(内部的なマウス位置が存在するので資源衝突しない)がFAQとな�
868:チてるのよ
869:名無しさん@お腹いっぱい。
16/03/08 17:39:00.04 OiSIw5XY0.net
VBScript で一般的なキー入力のエミュのやり方
URLリンク(msdn.microsoft.com)
"2"のキーをクリック
> WshShell.SendKeys "2"
ドライバ→Windows→アプリってのを
自動化ソフト→アプリって短縮しただけでしょ。
アプリに直接送る方が簡単だけど(それで動くとは言ってない)
UWSCが選ばれる理由は画像認識と操作の記録再生が簡単ってところだよ。
別に自動操縦が特別ってことはない。(特許を取ってるところはある)
870:名無しさん@お腹いっぱい。
16/03/08 17:41:37.94 EYyC3Yny0.net
>>811-817
無知でごめんな
>>818-819
詳しく教えてくれてありがとう
やっぱり仮想環境構築か物理的にもう一台PC用意するのが手っ取り早いってことですね
仮想環境構築してやってみます
871:名無しさん@お腹いっぱい。
16/03/08 17:43:25.86 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:名無しさん@お腹いっぱい。
16/03/08 17:44:19.61 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:名無しさん@お腹いっぱい。
16/03/08 18:06:11.90 mdQ0PQ+40.net
ユーザー作成関数を組み込み関数であるかのように書かれても…
874:名無しさん@お腹いっぱい。
16/03/08 18:10:36.84 mdQ0PQ+40.net
あとそれスレッド1とスレッド2とほぼ同時に走るから実質同じものかと
875:名無しさん@お腹いっぱい。
16/03/08 18:16:33.76 X39hgh8s0.net
たしかUWSCのスレッドは、スレッド無いから呼び出したユーザー定義関数を、
そのスレッド内で実行しなかったような気が?
引数だけで算数して結果を返すだけのようなリエントラントな関数ならいいけど、
Windows上のリソースにアクセスするようなのは期待した動きをしなかった気がする。
試しに、自作関数を一時的にスレッドで呼び出すプロシージャ内に展開してやってみて。
876:名無しさん@お腹いっぱい。
16/03/08 18:32:29.53 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:名無しさん@お腹いっぱい。
16/03/08 18:41:58.65 bSkm1Om50.net
連投ですいません。
>>826
Windows上のリソースにアクセスするようなものではないですね。
ブラウザを2個起動した状態で同じ動作を並列処理させようとしてるのですが
>>827 の関数を使うと相対座標が片方に寄ってしまうんですよね。。。
展開すると関数が入れ子しているか、閉じていませんでエラーになります。。
878:名無しさん@お腹いっぱい。
16/03/08 18:46:18.69 4EtCLtde0.net
ID[i] = GETID(GET_FROMPOINT_WIN)
これってカーソルの下のウィンドウよね?
スレッドでほぼ同時に取得してるのにこれでIDきちんと2つ取れてるん?
879:名無しさん@お腹いっぱい。
16/03/08 18:49:12.06 4EtCLtde0.net
どっちか片方のIDしか取れてなくて2つのスレッドが同じウィンドウにMOUSEORGしているような気がする
ID二つとも確認してみたら
880:名無しさん@お腹いっぱい。
16/03/08 18:59:56.84 bSkm1Om50.net
>>829
スレッド2側の処理ですが、以下のように処理されますので、
可能性としては低いと思われますが、念のため確認してきます。
UNTIL CheckColorScope(124,374,"R",35,10) ←×こっちがスレッド1側の相対座標に
BTN(LEFT,CLICK,80,108,100) ←◯こっちはスレッド2側の相対座標
881:名無しさん@お腹いっぱい。
16/03/08 19:03:16.67 X39hgh8s0.net
今テストプログラムで確認してみたら、
PCが高負荷でなければスレッドがリソース云々は無かった。
それよか、各スレッドのpeekcolorが対象にするウィンドウIDが
mouseorgで指定されないから、
たまたまアクティブなウィンドウが対象になる。
ウィンドウID管理しなきゃ。
882:名無しさん@お腹いっぱい。
16/03/08 19:05:47.87 X39hgh8s0.net
具体的には、スレッドにする関数の引数にウィンドウIDを追加して自作関数呼び出す直前にmouseorg
または自作関数の引数にも追加してpeekcolorの直前にmouseorg
883:名無しさん@お腹いっぱい。
16/03/08 19:22:19.67 bSkm1Om50.net
>>830 PRINTにID表示させてみました。1と2でしっかり別れてました。
>>832 助言感謝です。さっそくやってみます。
884:名無しさん@お腹いっぱい。
16/03/08 19:24:40.32 X39hgh8s0.net
mouseorg使ってたねスマンね、きっと想定通りにウィンドウIDが取れてないんだろうね。
現在対象にしてるウィンドウIDをball0onで表示するようにしてみるといいよ
(スレッドごとに表示されるのでID*100ぐらいの座標指定して重ならないよう別位置に表示)
885:名無しさん@お腹いっぱい。
16/03/08 19:27:50.46 X39hgh8s0.net
被った、IDがいいなら後は判らんな
判定直前に対象ウィンドウをCTRLWIN(ID, ACTIVATE)してみるとか、
判定対象の位置付近にballoonを表示してみて見てるとこ合ってるかどうか確認
ぐらいかな
886:名無しさん@お腹いっぱい。
16/03/08 19:32:50.77 bSkm1Om50.net
>>836 了解です。バルーンで追うのはまだやってなかったので
バルーンでしばらく追いつつ試してみます!
887:名無しさん@お腹いっぱい。
16/03/08 19:57:44.27 OiSIw5XY0.net
>>822
CALL をスレッド関数内でやってんの?
これはスレッドで動かないんじゃない?
あと、スレッドを使うならグローバル変数使うんじゃなく
データを渡してしまった方がいい。
なんで添え字を渡してグローバル変数の配列にアクセスさせるのかわからない。
そういうのはC言語でやってください。
C言語でも配列の添え字を渡してグローバル変数にアクセスとかしないと思うけど。
普通はアドレスを渡しますね。
別にグローバル変数にアクセスしてもいいんだけど
それは変化するデータをリアルタイムにアクセスする必要があるときや
スレッド関数から値を戻すときくらいですね。
一度取得したIDは変化しないからコピーを渡してしまって構わない。
888:名無しさん@お腹いっぱい。
16/03/08 20:13:05.28 X39hgh8s0.net
それは多分ね、UWSCのスレッドとして呼び出した関数は、
戻り値を得ることが出来ないから、スレッドで取得した値を
メインから得る方法はグローバル変数しか無く、
スレッドがGETIDしたウィンドウIDをメインから見たいんじゃないかな。
CALLをスレッド内に入れるのはちょっと変態的なのは同意
889:名無しさん@お腹いっぱい。
16/03/08 20:44:35.98 bSkm1Om50.net
返事遅れて申し訳ないです!
別の方法(スレッド化せず処理)でさっくり想定通りの結果が得られました!
無駄に難しい処理しようとしてたんだなと・・・
ハマって色々学べたのでよかったです。
>>838 今後のために参考にさせて頂きますOTZ
>>839 他皆様、ご助言たくさんいただき有難う御座いました!
890:名無しさん@お腹いっぱい。
16/03/09 17:41:50.93 mQOmooo80.net
getidで2窓で開いているIE上の同じページを区別させたいんですが、
クラス名で区別させるんだと思いますがそのクラス名が分かりません
今現在は
getid("ウインドウタイトル","IEFrame")
でやっています
どなたかお願いします
891:名無しさん@お腹いっぱい。
16/03/09 18:17:29.81 llmIWy
892:Ss0.net
893:名無しさん@お腹いっぱい。
16/03/09 18:25:43.67 sRxQkC9R0.net
>>841 教えてヤフーにあったよ
オイラもそれでフラッシュゲームのバックグラウンド化に成功した
(´・ω・`)
894:名無しさん@お腹いっぱい。
16/03/09 18:47:20.16 mQOmooo80.net
>>842
ごめんなさい
今現在↓こう書いてるのですが、このIEFrameというのがクラス名ですよね?
getid("ウインドウタイトル","IEFrame")
二つ目のIEではこれはなんと書けばいいんでしょう?
>>843
お手数ですが、そのURL教えてもらえませんか?
895:名無しさん@お腹いっぱい。
16/03/09 19:04:38.44 sRxQkC9R0.net
おいおい それぐらい自分で探しなよ
オイラはそれを保存してるからもうそのページに用はないんだよね
(´・ω・`)
オイラもフラッシュゲームのバックグラウンド化について
検索しながら試行錯誤しながら廻りまわってたどり着いたんだよね
オイラたちはヒントをだす
あとは自分で調べる、試す これは基本だよ
896:名無しさん@お腹いっぱい。
16/03/09 19:26:22.70 llmIWySs0.net
一般論として
クラス名は単なるウインドウの種類の宣言でしかない
従ってほぼ全てのアプリで2つ目のウインドウだからといって違うクラス名になったりはしない
それぞれのウインドウはIDで区別される
UWSCの機能だけでやろうとしたらGETALLWINを使ったりする
個人的にはIEのタブを探して操作するなら
SHDocVw.ShellWindows から目当ての SHDocVw.InternetExplorer を見つけてCOM操作するけれどね
どっちにしてもいきなり二つ目のウインドウってアクセスは出来ない
IEのウインドウをループで回して対象URLのウインドウをピックアップして集めてから
その何個目ってしないと駄目
897:名無しさん@お腹いっぱい。
16/03/09 19:28:29.35 llmIWySs0.net
で、面倒臭いなと思ったら半自動スクリプトにしたら良いんだよ
スクリプトの最初に操作対象をクリックして下さいとか表示するとかね
完全自動化はそのための知識が揃ってからチャンジしたら良い
898:名無しさん@お腹いっぱい。
16/03/09 19:59:37.81 ZH6SCA5x0.net
UWSC公式サイトのFAQに載ってる毎度の質問だな
899:名無しさん@お腹いっぱい。
16/03/10 00:09:29.62 kbf2APsQ0.net
URLリンク(canal22.org)
900:名無しさん@お腹いっぱい。
16/03/11 02:09:47.22 vpN6R87y0.net
AutoHotKeyとの違いってなに?
こっちに出来て向こうにできない、またはその逆とか
901:名無しさん@お腹いっぱい。
16/03/11 02:24:04.07 q9CfIyKs0.net
日本語変数は無理なんじゃないかな
902:名無しさん@お腹いっぱい。
16/03/11 02:34:58.77 ZLCOlBAo0.net
自作関数をEXITで抜けるみたいに、CALLで呼んだものを途中で抜けるってできるの?
903:名無しさん@お腹いっぱい。
16/03/11 03:46:02.49 fLUkQ1x50.net
EXITじゃないの?
904:名無しさん@お腹いっぱい。
16/03/11 03:53:20.39 8BXL68Gt0.net
CALLが何かを全く理解してない奴って多いよね
905:名無しさん@お腹いっぱい。
16/03/11 13:22:41.14 TzmisRaw0.net
「呼んだもの」のなかで途中で抜けるように作れば抜けるし、最後までやるように作れば最後までやるだけだが。
906:名無しさん@お腹いっぱい。
16/03/11 15:51:14.74 9MIhB+Zw0.net
Firefox系ブラウザ って
FLASHブラウザゲームに
MOUSEORGのMORG_DIRECTって使えないの?
BTNが反応しませんでした
Chromeは使えましたが、
Chromの方は、MORG_BACKがCHKIMGで認識しませんでした
907:名無しさん@お腹いっぱい。
16/03/11 17:05:56.39 xL247s8c0.net
煽りじゃなくて頑張った結果が使えないのなら使えないのでしょう
ブラウザはIE以外はマルチプラットフォームのため標準コントロールを使用していないし
裏になったら再描画しないパターンもあるしね
裏動作は出来る時もある位の気持ちで
仮想化環境を使って最前面か別PCが安定ってのがFAQだよ
908:名無しさん@お腹いっぱい。
16/03/11 17:41:53.19 uLXjBvrS0.net
hoge=
909:名無しさん@お腹いっぱい。
16/03/11 17:52:21.69 uLXjBvrS0.net
すいません、NGワードで弾かれたっぽいです
hoge="あいうえおあいうえお"
上記変数の、左から5番目の「お」だけを
「ん」に変えたいんですけど、そんな命令ありますか?
置換命令のREPLACEだと、番号指定は無理ですよね?
hoge=COPY(hoge,1,4)+"ん"+COPY(hoge,6)
遠回りな気がしますが、こんな感じにするしかないんでしょうか?
910:名無しさん@お腹いっぱい。
16/03/11 17:57:29.45 8eZkzZWt0.net
仮想化はOS用意しないといけないからなあ
linuxとか無料らしいからそれ使えればいいけどな
911:名無しさん@お腹いっぱい。
16/03/11 18:21:03.26 xL247s8c0.net
>>859
それしかないって事はないけれど特に近道も無いよってのが答えだと思う
VBSの文字列操作用や正規表現用のオブジェクトを生成して処理したり出来るが
特に行数が減るわけではない(寧ろ増える)
昔と違ってメモリを節約する努力なんて不要なんだから
行数や命令を減らす努力はそれ程重要じゃない
最適化しすぎて同じ結果になるけれどやりたい事との文脈が違う場合とか
後から見ると混乱のもとになるからね
メインの処理のやりたい事が「文字列のn文字を入れ替える」なら
そういうユーザ関数を作成して抽象化したら良いのよ
912:名無しさん@お腹いっぱい。
16/03/11 18:28:44.96 HWMGVE3/0.net
遠回りどころか、処理的には replace よりむしろ近道なのでは
913:名無しさん@お腹いっぱい。
16/03/11 19:10:33.56 9aIMxtHY0.net
>>856 ただのバックグラウンドならできる
(画面が隠れてたり最小化だとできない)
クラス名を取得してハンドルする
教えてヤフーにやり方のヒントがある
(´・ω・`)
914:名無しさん@お腹いっぱい。
16/03/11 19:19:08.73 LoB9QIb70.net
バックグラウンドと画面が隠れていることの違いって何
915:名無しさん@お腹いっぱい。
16/03/11 20:39:57.96 9MIhB+Zw0.net
>>863
クラス名なら、Firefoxは、MizillaWindowsClass
Chromeは、Chrome_RenderWidgetHostHWND
これは取得できて、ハンドルも取得できていて
それは、わかってるんです。
ただのバッググラウンド状態でももちろん試しました
Yahoo知恵袋なども結構参照した方です
ですが、IEとChromeは、MORG_DIRECTが使えて
Firefoxだけは、MORG_DIRECTが使えませんでした。
BTNが反応してくれない。それってあり得るんですかね?
916:名無しさん@お腹いっぱい。
16/03/11 23:22:31.33 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:名無しさん@お腹いっぱい。
16/03/11 23:37:24.40 q9CfIyKs0.net
0.3秒+500ミリ秒+0.1秒=0.9秒
当たり前の話でんがな
918:名無しさん@お腹いっぱい。
16/03/11 23:40:11.60 q9CfIyKs0.net
間違えたハズカシ
つかchkimgは範囲が広いとそれだけ時間かかるからPCのスペック次第で時間が変わる
919:名無しさん@お腹いっぱい。
16/03/11 23:55:24.06 V+G/WUuc0.net
>>868
なるほど、処理が追いついていないと
そこそこのスペック持たせてるはずなのに画像認識の処理ってけっこうパワーいるのに驚きです
920:名無しさん@お腹いっぱい。
16/03/12 00:22:19.71 vIYJtZWi0.net
× BTN(LEFT,CLICK,1000,500)
○ BTN(LEFT,CLICK)
921:名無しさん@お腹いっぱい。
16/03/12 00:58:30.41 JA7kK
922:oOW0.net
923:名無しさん@お腹いっぱい。
16/03/12 05:37:53.21 vIYJtZWi0.net
あ、つい。数字をミリ秒と読んでしまって。
画像を小さくして範囲を絞れば速くなります。
範囲を絞るために GETID() で対象ウィンドウを特定して
STATUS() で座標を取って CHKIMG() で範囲を指定します。
MOUSEORGで基準座標を対象ウィンドウにすれば
範囲は 0, 0 からサイズ x, y で指定できるので楽です。
他の方法としては
数ドットの色だけで判定できる場合は
検索範囲の画像を SAVEIMG() でクリップボードにコピーして
クリップボードから PEEKCOLOR() で検索すると早いです。
でも、数ドットで済むようなら1秒もかかってませんね。
924:名無しさん@お腹いっぱい。
16/03/12 08:55:36.12 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:名無しさん@お腹いっぱい。
16/03/12 12:51:15.36 ah+GWDsu0.net
ヒント①
ループ開始時に開始時間を記録
その他のボタンクリック前の時間と開始時間を引いて経過時間を記録
経過時間が300ミリ秒以内ならその時間だけスリープ
ヒント②
DEF_DLL timeGetTime(): LONG: winmm.dll //ミリ秒単位の時間を取得
(わざわざwin32api使うのはUWSCは経過時間の取得は小数点(割合)になるので直感的じゃないから)
926:名無しさん@お腹いっぱい。
16/03/12 12:54:01.60 fkR2rJoF0.net
まあ今回の場合、処理が0.6秒位かかっているようだから
スリープ0にしたところでダメだし時間測るのは無意味と思うけどね。
どちらかというと範囲制限の方が有効だろう
927:名無しさん@お腹いっぱい。
16/03/12 13:11:01.48 ah+GWDsu0.net
それ前提のつもりでした言葉足らずだったね
0.3秒感覚でクリックしたいならそうなるようなロジックが必要ですよと
928:名無しさん@お腹いっぱい。
16/03/12 20:47:24.15 XzxPU9E/0.net
タイミングはシビアになるかもだけど、Thread()で0.3秒ごとにクリック
メインではChkimg()してヒットしたらフラグを立てて
Threadのほうのクリックを抑止してメイン側でクリック
とか?
929:名無しさん@お腹いっぱい。
16/03/13 01:10:40.53 yStCxW+O0.net
まず最初にみんなありがとう
せっかく教えてくれるのにごめん
ミジンコにとっては半分近くが呪文だったのです
>>872
もうちょい画像絞ってみます
知らない関数もあるのでそれも調べてみます
>>873
sleepよりも何よりもelseifの存在を忘れてた自分が馬鹿でした
適当なサイトのコピーから改竄してたのですがこれでC+齧ってたのかと思うと恥ずかしいです
>>874
誤差分だけスリープなんてできたんですね
>>875さんの件も含めて考えて、それで処理時間含めての最短を設定できるように調整してみます
>>877
並列は考えたのですが他の作業中に「そこ」をクリックされると困るので破棄しました
それを破棄した理由が連打させたい時に画面には決まった画像というのがないという事なのです
拾い物の改竄だけだと何も身につかないと再確認して自分を恥じます
勉強しなおして出直しますのでその時また困ったらお力をお貸しください
930:名無しさん@お腹いっぱい。
16/03/13 05:59:29.63 Oa7DQQ9u0.net
chkimg3つをそれぞれ別スレッドで動かして
発見フラグが一つもない時だけ1000,500をクリックでいいのでは
これなら今どきのマルチコアCPUなら3倍速で動くはず?
931:名無しさん@お腹いっぱい。
16/03/13 10:3
932:4:38.97 ID:5BxruRGM0.net
933:名無しさん@お腹いっぱい。
16/03/13 10:38:41.65 5BxruRGM0.net
ARToolKitで複数マーカーを使ってみた
URLリンク(youtu.be)
ARToolKitを使った 「拡張現実感」
URLリンク(kougaku-navi.net)
これだけグリグリ動くんだから
ビットマップの完全一致くらい一瞬じゃないとおかしいんだけどね。
おまけ
URLリンク(astertune.com)
> OpenGLより高速で、iOSに特化したMetalというAPIが昨年登場 (2015年8月30日の記事)
URLリンク(codeit.blog.fc2.com)
> SSE を使用することにより約二倍の高速化が見込まれ
URLリンク(tanakah.blogspot.jp)
> 車速とギアを認識するDirectXフィルター
> やり方ですが、OpenCV1.0についてくるproxytransフィルターを改造してつくります。
> OpenCV cvMatchTemplate()
OpenCvSharp 投稿日: 2014年2月6日
URLリンク(jpusergis.wordpress.com)
C#ならUWSCからPowerShell経由で呼び出せるけど
呼び出しに1秒くらいかかるんだよね。
> 315 名前:Nekorabbit ◆jpnWwiLScI [sage] 投稿日:2014/11/30(日) 07:16:25.97 ID:aCUfDH4j0.net
> 画像認識関数 ChkImgX-ver1.2.0
> URLリンク(googledrive.com)
>
> やっぱりOpenCVを使うようにした。それとソースコードを追加
934:名無しさん@お腹いっぱい。
16/03/13 10:40:01.87 5BxruRGM0.net
やっぱりシンプルで高速なライブラリってのは他にないんだな。
シンプル過ぎてな。
935:名無しさん@お腹いっぱい。
16/03/13 13:21:20.33 DqbPwOfU0.net
>>866
OPTION SHORTCIRCUIT
While True
ifb CHKIMG("A.bmp") or CHKIMG("B.bmp") or CHKIMG("C.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
else
BTN(LEFT,CLICK,1000,500)
end
WEND
試してないが、こうやったほうが早いかも
OPTION SHORTCIRCUITは片方の条件を見つけた時点で以降の条件は探さないらしい
これで動いてくれると思う
936:名無しさん@お腹いっぱい。
16/03/13 13:44:27.34 MyuwQ+3+0.net
>>883
それ一緒だから。
実質スリープ無くしただけ
937:名無しさん@お腹いっぱい。
16/03/13 14:35:12.26 0ijLe2jo0.net
UWSCのSHORTCIRCUITはオール・オア・ナッシングで
副作用への注意が必要だからあまり好きじゃない
短絡評価の条件式があれば良いんだけれどね
938:名無しさん@お腹いっぱい。
16/03/13 16:32:38.86 nEkRwzyP0.net
ただの秒数設定ミスのクソ質問かと思いきや微妙に建設的な質問になっててワロタ
939:名無しさん@お腹いっぱい。
16/03/13 16:45:35.50 E0WmGTEK0.net
>>878
いろいろな事を考えると
940:elseifでは対応できない場合も想定されるから 総合的に考えると else if のままのほうがいいみたい? まぁその分endifが増えるんだけど
941:名無しさん@お腹いっぱい。
16/03/14 19:14:44.98 i2rVe3gR0.net
それは総合的に考えるモノじゃないだろう
必要に応じて使い分けるだけで
942:名無しさん@お腹いっぱい。
16/03/14 22:57:21.23 yWL5pN6J0.net
保守のやりやすさまで考えるとelseif一択
else ifのほうが綺麗に書けるケースはちょっと思い浮かばない
943:名無しさん@お腹いっぱい。
16/03/15 01:55:30.43 47j5cpZS0.net
個人的にifは二択のときだけ
それ以外の選択肢が増えそうなときとかはcase文の方を使いたいとこだ…。
944:名無しさん@お腹いっぱい。
16/03/15 03:45:02.21 SCAnh7Td0.net
ifとcaseでは明確に用途が違うような。
945:名無しさん@お腹いっぱい。
16/03/15 03:50:19.31 dAPydsp10.net
俺はcaseは限定的な時にしか使いたくないな
逆にそれ以外はif分岐させてる
946:名無しさん@お腹いっぱい。
16/03/15 04:07:47.33 SCAnh7Td0.net
いやいやいや
caseはひとつの条件式の結果で分岐するもので
elseifは複数の条件式を使うものでしょう?
かぶる部分も無いではないけど、普通は用途で決まるような。
947:名無しさん@お腹いっぱい。
16/03/15 05:28:13.13 47j5cpZS0.net
確かに用途でも決まるね。。
俺が想定してのが単純な一つの値の判定だったから混乱させて申し訳無い
複数の判定が一つの条件式にあると
後から読みにくかったり理解しにくくなったりしそうで
ifの中には一つの判定だけをなるべく書く様にしてるからつい…。
中にどんどんif入れてくのも同様の状態になるから入れ子は少なくすることを検討した作りにしてる
948:名無しさん@お腹いっぱい。
16/03/15 11:35:32.40 Ye8AnKp+0.net
caseはbreakさせないって使い方もあるから、一概にどっちがいいとは言えないね
949:名無しさん@お腹いっぱい。
16/03/15 11:57:04.20 RI0XNTAs0.net
なるほど思い出した
950:名無しさん@お腹いっぱい。
16/03/15 13:32:13.65 H7Ch8AYF0.net
UWSCのSELECTはフォールスルー使えなくない?
ELSEIF連鎖はメーラーの振り分けみたいな優先順位付き判定群だから使い道が違う。
SELECTは1つの判定で複数の分岐。
UWSCのSELECTは、SELECTに書く式を空にして、CASE側に判定式書いても使えるんで、
ELSEIFと同様のこともできるってだけ。
951:名無しさん@お腹いっぱい。
16/03/15 14:33:20.13 K82PCnuw0.net
>>897
> SELECTに書く式を空にして、CASE側に判定式書いても使える
なにそれ。そんなこと出来る?
試した限りではselectに式書かなかったら
case側に何を書いても最初のcaseが実行されるんだが。
select
case 0=1; print "0=1"
case 1=1; print "1=1"
selend
こんなのでも0=1って表示されちゃう。エラーも出ん。
952:名無しさん@お腹いっぱい。
16/03/15 14:44:41.61 zE0f+pvP0.net
空は無理だけど
Select trueとかにしておけばいける
953:名無しさん@お腹いっぱい。
16/03/15 14:51:16.05 215if6Wy0.net
Selectの式の結果 と Caseの式の結果が
最初に一致するCase文が実行される感じなんかな
954:名無しさん@お腹いっぱい。
16/03/15 15:13:32.26 H7Ch8AYF0.net
すまんね空は無理だった
ご指摘の通りtrueにすれば、式がtrueとなる最初のcaseが実行され、
空欄もしくはfalseだと、式がfalseとなるcaseが実行されるね。
955:名無しさん@お腹いっぱい。
16/03/15 23:51:21.72 PCeK8oit0.net
CHKIMGで画像判別 一致したら then で
SOUNDでmp3を再生にしたんですが
音が出たり出なかったり
SLEEPでウエイトを入れたり 構文に trueにして同期させたりしても変わらない
レジストリ関係なのかな?
どこを弄れば直るんでしょうか?
956:名無しさん@お腹いっぱい。
16/03/16 07:35:12.72 LJ+euZnJ0.net
画像判別ができてないのか、音が出てないだけなのか切り分けできてんの?
957:名無しさん@お腹いっぱい。
16/03/16 08:34:48.88 nAh2yAGb0.net
�
958:PにChkimg()で一致してないだけじゃないのか
959:名無しさん@お腹いっぱい。
16/03/16 08:56:46.03 yzWTIl7F0.net
あるある
960:名無しさん@お腹いっぱい。
16/03/16 10:52:10.44 8JIJQW6i0.net
Windows7では問題なく動いていたのですが
仮想環境のWindows Vistaでは一部画像認識が上手くいきません
同じく仮想環境下のWindows7では問題ありませんでした
認識しない画像をVista内で切り取るとうまくいくのですが
それでは膨大な作業量になります
ご助言をお願い致します
961:名無しさん@お腹いっぱい。
16/03/16 11:09:21.22 /XbN41Fg0.net
chkimgの色幅を試す
ChkImgXを試す
照合画像を造り直す
基本的にグラフィックドライバでイメージは変わる可能性があるという事を覚えておこう
だから使用する環境でキャプチャするのが鉄板
962:名無しさん@お腹いっぱい。
16/03/16 11:16:46.80 8JIJQW6i0.net
ありがとうございます
ちょっと量が量なのでWindows7のライセンスもう一つを購入したいと思います
963:名無しさん@お腹いっぱい。
16/03/16 18:04:20.19 2Mv7Yb1h0.net
>>907
グラフィックドライバで変わるのか
キャプチャのやり直しは正直疲れる
964:名無しさん@お腹いっぱい。
16/03/16 19:52:25.50 0mxs1TOv0.net
変わるんだよな~ アンチエイリアスなんだろうな。
あとOSやブラウザの変更でフォントも変わることがあり、
文字列取得できなくて画像判定で代用してるとハマるね~
環境で変わるのに対抗するのにも、一番有効なのは仮想化。
965:名無しさん@お腹いっぱい。
16/03/18 14:40:05.44 fdkkgXvY0.net
dim array[] = 0,1,2,3,4,5,6,7,8,9
for i=0 to 100
j = i mod 10
t=G_TIME_SS mod 10
print array[j]+" "+t
gettime()
if array[j]=t then i=i+t
sleep(0.1)
next
というように特定条件下でループを任意の回数飛ばしたいんですが
forの変数は内部から参照することは出来ても値を変更して
ループに反映することは出来ないみたいで思うようには動きません。
forではなくwhileを使えば解決する話ですが、forでこういう事は絶対出来ないんでしょうか?
966:名無しさん@お腹いっぱい。
16/03/18 15:05:30.02 Y8LfVAQe0.net
for は 初期値 終了値 加算値 をシンプルに表現してループさせる構文なので無理
967:名無しさん@お腹いっぱい。
16/03/18 17:26:15.26 Dic6Ty9l0.net
if i<k then continue
...
if array[j]=t then k=i+t
とかじゃだめ?
968:名無しさん@お腹いっぱい。
16/03/18 18:48:34.55 37KGhb4W0.net
申し訳ない・・・知恵を貸して下さい・・・。
やりたい流れのイメージ
①一致画像をクリック
↓
画像判断。画像によって条件分かれ
(ここの作り方が不明・・・)
↓
③一致画像をクリック
↓
④一致画像をクリック
969:名無しさん@お腹いっぱい。
16/03/18 18:50:26.76 37KGhb4W0.net
画像判断の部分はこんな内容です。分かりますか?
①ifb CHKIMG(“xxx.bmp”)
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x , y , 100)
endif
―――――――――
1、画像Aがあるか判定
2、画像Aがある場合は「③」へ
3、画像Aが無く画像Bがあった場合は↓
(Cの画像をクリック)
(Dの画像をクリック)
4、順番にC.Dの画像をクリックし終わったら
「①」最初の動作にへ戻る、
又は「③」へ通常移行。
又は「③」をスキップし「④」へ移行
―――――――――
970:名無しさん@お腹いっぱい。
16/03/18 18:51:32.08 37KGhb4W0.net
素人すぎて正しく伝わっているか心配ですが、
アドバイスを貰えると有り難いです・・・。
971:名無しさん@お腹いっぱい。
16/03/18 18:56:09.29 37KGhb4W0.net
尚、
「①」最初の動作にへ戻る、
又は「③」へ通常移行。
又は「③」をスキップし「④」へ移行
この3パターンは「3個同時で判定」ではなく、
全て「単体」で動作させる事を前提とした場合のスプリクトです。
972:名無しさん@お腹いっぱい。
16/03/18 19:01:31.23 JI+YMOVs0.net
そうだね!がんばれ!
973:名無しさん@お腹いっぱい。
16/03/18 19:13:18.26 cs2HMD100.net
フローチャート作って
974:名無しさん@お腹いっぱい。
16/03/18 19:14:32.75 37KGhb4W0.net
>>919
了解致しました。
少々お待ち下さいませ。
975:名無しさん@お腹いっぱい。
16/03/18 19:44:54.92 37KGhb4W0.net
>>919
お待たせしました。2パターン作りました。
画像Cからのジャンプ先は①にしてますが、場合によって③や④にも変えたいです。
URLリンク(www.dotup.org)
URLリンク(www.dotup.org)
シンプルに作ってみたのですが、どうでしょうか。
976:名無しさん@お腹いっぱい。
16/03/18 20:28:40.25 3mTNmK/i0.net
そこまで出来てるならそのままコーディングすればいいだけじゃ?
977:名無しさん@お腹いっぱい。
16/03/18 20:41:45.76 XTMTGWl20.net
>>922
元々スプリクトを使わない自動化ソフトを使っており、頭の中で流れの構築は出来ているのですが、
スプリクト上に起こすのがどうしても難しく、、。
頭でイメージ出来ているのに、絵に描けない状態です、、、。
978:名無しさん@お腹いっぱい。
16/03/18 20:49:53.51 wiffpfVZ0.net
①, ③, ④ をそれぞれ関数化するといいような気がするよ
979:名無しさん@お腹いっぱい。
16/03/18 21:06:54.37 a/2iCbr10.net
>>921です。
正直センスが無さ過ぎて、見せるのも恥ずかしいのですが・・・。
一応途中まで作ったスプリクトです。
URLリンク(www.dotup.org)
980:名無しさん@お腹いっぱい。
16/03/18 21:43:41.41 p+rJK2780.net
>>925
画像1と画像2の関係性は?
画像1をクリックしたら画像1が消えて画像2がでてくる?
画像1をクリックしたら画像1も画像2も表示されてる?
981:名無しさん@お腹いっぱい。
16/03/18 22:12:44.85 a/2iCbr10.net
>>926
画像はクリック毎に、前の画像は消えて、
次は必ず決まった画像が一個出ます。
画像判断の所だけ、別の画像が出てくる場合がある為、
この様な条件付き画像判断スプリクトを組み込む必要があります。
982:名無しさん@お腹いっぱい。
16/03/18 23:36:00.24 lyGpkKZO0.net
たぶん、"IF"ってのの使い方を勉強するといいと思う
983:名無しさん@お腹いっぱい。
16/03/18 23:44:46.31 p+rJK2780.net
>>927
while 1
if chk 画A
if chk 画④
elseif chk 画③
endif
elseif chk 画B
if chk 画D
elseif chk 画C
endif
elseif chk 画②
elseif chk 画①
endif
wend
こういう感じ?
984:名無しさん@お腹いっぱい。
16/03/19 00:04:11.56 SY2bECL70.net
while true
画像クリック("画像①")
画像クリック("画像②")
if chkimg("画像A") then break
画像クリック("画像B")
画像クリック("画像C")
wend
画像クリック("画像③")
画像クリック("画像④")
procedure 画像クリック(画像)
chkimg(画像)
btn(left, click, G_img_X, G_img_Y)
fend
985:名無しさん@お腹いっぱい。
16/03/19 00:08:39.27 BW58rut60.net
フローチャート作れるならトライアンドエラーで頑張れ
986:名無しさん@お腹いっぱい。
16/03/19 01:41:22.95 bIkT5e8S0.net
>>930
素人の私でもめちゃくちゃ分かりやすいです、激しく感謝します!
動作確認してみましたが、全く問題なく希望通りの動きをしてくれました!
最後にもう一つだけ教えてください・・・。画像④の後に「wend」を持ってきて
一番最初の「while true 」に戻らせてループさせようとしたらエラーが出ました。
これは何が原因になるのでしょうか??
987:名無しさん@お腹いっぱい。
16/03/19 01:43:58.70 4bvWfFXm0.net
whileとwendは必ず1個ずつのセットじゃないとだめ
一連の処理を繰り返させたいなら、wendを画像④の下に置くだけじゃなくて最初のwhileの更に上にwhileを置かないと
988:名無しさん@お腹いっぱい。
16/03/19 01:56:50.27 bIkT5e8S0.net
>>933
私も最初そう思ったんですが、なんかエラーが出たのであれ・・?と思いまして
URLリンク(www.dotup.org)
こういう事ですよね?
989:名無しさん@お腹いっぱい。
16/03/19 02:07:08.90 FgddRy/I0.net
trueが無いじゃん。
990:名無しさん@お腹いっぱい。
16/03/19 02:07:45.33 4bvWfFXm0.net
ワロタ
991:名無しさん@お腹いっぱい。
16/03/19 02:08:06.81 jrQgNiRM0.net
最初のwhileの条件が無いとか?
ヘルプで分かる内容は質問しない方がいいよ
992:名無しさん@お腹いっぱい。
16/03/19 02:35:41.05 bIkT5e8S0.net
while true
初歩的なミスでした、、、申し訳ないです。
皆様のアドバイスのお陰で