1 :
名無しさん@お腹いっぱい。 :
2014/10/18(土) 11:46:19.83 ID:yC04f7EM0
2 :
名無しさん@お腹いっぱい。 :2014/10/18(土) 11:47:07.58 ID:yC04f7EM0
Q.シェアウェア版で「L20が存在しません」「L22が存在しません」とエラーが出て一部機能が動作しない A.割れシリアルを使った時に出る、ささやかな割れ対策 Q.購入したのに上記エラーが出る A.ライセンスキーが正しいか確認(ベクターで購入した場合、登録するのは 伝票番号の xxxxxxxxx ではありません) UWSCをアンインストール後、再インストールして正しい17桁のライセンスキーを入力してください。 ●Pro版の追加機能 EXE化ツールが付属しています。(EXE化後は単体での実行が可能であり、ライセンスフリーにて配布できます) IE(Web)用記録ツールが付属しています。(Web上の動作をUWSCのスクリプトとして記録する事ができます) HTMLを利用した画面関数が使えます。 EXCELシート用関数が使えます。(OpenOffice.org/LibreOfficeの表計算(Calc)に対しても可) デバッガが付属しています。 ●質問したい方へ 「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」 「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる 「○○作って下さい」→ 依頼スレじゃありません。 過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。 自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。 ●スクリプトを晒す上での注意 他人が読みやすいようにインデントを付けるように。解らない人はググレ。 (タブインデントは使えないんだぜ 全角スペース等に 変換しておくべし) 言いたい事に関係無い部分は 〜○○の処理〜 や 処理A 等のようにし、 必要な部分を晒すようにする。 ●他人の書いたスクリプトを安易に実行しないように。 ハードディスクをフォーマットされたりしても、自己責任。
3 :
名無しさん@お腹いっぱい。 :2014/10/18(土) 11:49:48.08 ID:yC04f7EM0
前スレ997、998さん ありがとうございます 今日始めたばかりでよく分からないので原点の設定しらべてきます
,,, o" < やあ / / ○ < 流れ星だよー ",, / / / ,," 彡⌒ ミ" / (´・ω・`)/ ヽ_ノ" < 髪が生えるように直接お願いしにきたの / / ○ < やめろ太陽に近寄るな髪が燃える ,,, o" < くそがあああああああああああ ,, ゚ キラッ
EVALの変数に値を代入することは可能でしょうか? 以下のプログラムでは不可能でした /////////////////////////////////////////// DIM 配列1[] = "い","ろ","は" DIM 配列2[] = "に","ほ","へ" //どちらかの配列のどれかの要素を変更 EVAL(EVAL("配列" + (RANDOM(2) + 1) + "[" + RANDOM(3) + "]") := "ん") FOR i = 1 TO 2 PRINT "<#CR>配列" + i FOR j = 0 TO 2 PRINT EVAL("配列" + i + "[" + j + "]") NEXT NEXT ///////////////////////////////////////////
>>9 EVAL("配列" + (RANDOM(2) + 1) + "[" + RANDOM(3) + "] := <#DBL>ん<#DBL>")
じゃだめな理由でもあるん?
>>10 ありがとうございます!
EVALで代入する時の方法を理解していませんでした...
時々画像のリソースがどうのって言って止まるんだよね PC側の問題だと思うけどさ
前スレ見てきたけどここってゲーム自動化スレなんか?
別に何を自動化したっていいだろ。 ただ、ゲームの話題は禁止と言われてる。 ゲームの自動化ってハッキングツールと組み合わせることが多いし、 ゲームの利用規約でマクロ行為そのものが禁止されてたりするから 犯罪に加担する事になりやすい。 パスクラの話題も犯罪だから 組み合わせを作っていくスクリプトの話題も禁止って話だ。 けど、トランプのカードは ランク(A〜K)とスート(Club, Diamond, Heart, Spade) を組み合わせたもので プログラムの基本である 配列そのものなんだけど まあ、いきなり組み合わせの話題をする奴はパスクラ目的が多かったりするんだろうな。 それ以上に、前スレの勢いでスレを消化するからってのもあるかも。 ・・・FireFoxは勢い10倍だな
def_dllによるDLL関数呼び出しで、引数を構造体渡し(例えば {int,int} )にするとポインタで渡されることまでは分かったが、 「ポインタで渡される」=「呼び出した関数から書き込まれた値を受け取れる」 という理解でいいの?
皆さん画像認識で制度が出ないときはどうやっているのですか? ちょっとグレー掛かったビットムラ?のある背景に書かれた 白い文字に対して画像認識を使いたいのですが、 ちゃんと認識してくれません。ムラを無視するような方法か白い文字だけを認識させる方法はないでしょうか?
精度でした
テンプレートマッチングを使ったライブラリを使うしかないよね UWSCはゲーム向けに使われたくないのか、もう新機能は実装しないからなのか、しょぼい画像一致アルゴリズムしか実装されていないから 背景がちょっと変わったり、画像圧縮の仕方ちょっと変えただけで判定できなくなる
私のとこで作ったUWSC向けのテンプレートマッチングライブラリがあるんだけど結構需要ありそうだから公開しようかな でもゲームの自動化に使われそうで恐い。ゲームの自動化をするときはこのプラグインを入れましょうみたいに扱われそう。 みなさん、どう思います?
>>22 本当に欲しい奴が探してたどり着くって程度で良いから、
少なくとも今のここじゃないほうが良いし、ここじゃなくても良いかな。
もちろん、折角なら発表の場があるほうが作り甲斐もあるし良いとは思うけど。
個人的には非常に見たいw OpenCVを使ってるのかな?
適当なOCRエンジンつかえばいいじゃん
SAVEIMG関数で、最初の画像名を省略するとクリップボードに乗っかると認識してます。 WinXP環境では問題なくクリップボードに画像が乗ってpeekcolorでも参照出来るのですが Win7環境では同じスクリプト走らせても、クリップボードに何も乗っかりません。 画像名省略によるクリップボードの経由はリファレンス外の仕様なんでしょうか?
Win7でもできるよ 管理者権限ないとか?わからんけど
あ、Win7の方のUWSC本体が4.8で、まだクリップボード未対応の奴ですた。 お馬鹿なミスで御騒がせしました・・・と思ったら、5.03にしても依然動かず。 管理者権限はあります。 SAVEIMG("", ID, 100, 100, 200, 200, TRUE, 0, 0)
自己解決しました。試行錯誤してる間に他で必要な部分を削ってしまっていただけらしく 本体VerUPでSAVEIMGでのクリップボード処理は正常動作してました。 度々お騒がせ申し訳ありませんでした。
最低限最新版で動作確認してから書こうぜ
次に質問者はこういう… 『○○が動きません!最新版です!!』
34 :
名無しさん@お腹いっぱい。 :2014/10/20(月) 21:28:45.09 ID:PAC+5p820
ver4.8e MOUSEORG(id,MORG_DIRECT)にて Shift,Ctrl,Altが働かない事があるのを修正 とありますが5.02、5.03でVK_SHIFTが動きません!最新版です!! Win8.1でFirefox上のFlashに対してですVK_Aなどは動きます
前スレから一気に雰囲気が変わったな
非常識なゲームスレ住民のせいだ わざわざ餌を与える馬鹿もいたしな
でも真っ当な議論がしたいなら公式掲示板があるし、ここの存在価値あんまないんだよね
餌もらったら沈静化した あいつら餌もらうまでずっと鳴き続けてたからな
いなくなったのに喚いてるお前らもアレだけどな
見るアホウ発見
そのスレでやれ くっさい空気をもってくんなよ
猫や鳩だって迂闊に餌を与えたら駄目だろ? 人間(乞食)だってそうなんだよ
神気取りが浮浪者に餌配るからどんどん集まって悪臭がひでぇ
45 :
名無しさん@お腹いっぱい。 :2014/10/23(木) 04:04:47.02 ID:iAU/Hi4L0
MMV(196,190,10) こういうマウスの動きは数が少ない方がパソコンの負荷は軽くなりますか? それとも、三番目の数字を削除すればいい? 初心者なのでマウスの動きがあった方がスクリプト作りやすいレベルです
関数の細かい処理負荷の仕様は製作者の掲示板に書き込むのがいいと思うよ 三番目の数字はただの待機時間だから負荷に影響するなんてことはないと思う
BTN(),MMV()などの待ち時間はCPUを食うので なるべくSleep()を使った方がいいと公式掲示板で読んだ気がする
数値を指定しなければUWSCがCPU不可に応じて適当に待機時間を決定するだけなのです
臭い臭い言うがここはたかが2ちゃんねるだぞ… 公式掲示板があれば臭くない質問スレなど要らん。 ここは浮浪者が集まる洞窟だ。一般人が住むところではない。 快適さを求めるなら公式掲示板へどうぞ。
世の中には肥溜めに顔を突っ込んでくさいくさい言いたがる趣味の人がいるんだよ
>>49 こいつ餌やってたやつだろ
わざわざゲーム名出して対応するからゲームスレからプログラムに興味ない奴まで大量に押しかけるんだよ
ゲーム名出して個別対応したいなら相応のスレでやれ
だがここはソフトウェア板。いっそのことプログラム板に引っ越す?
プログラム板はHSPが肩身の狭い思いしながらやっと入れてもらってる感じだぞ 他は有名なプログラミング言語ばかり 自動操作ソフトに付いてるおまけスクリプトじゃ場違いだろ
メモ:クリップボードの画像を扱う
ttp://d.hatena.ne.jp/junjun777/20131002/uwsc_clipboard_image Tesseract-OCR を呼び出して直接読み取ったテキストを受け取れるバッチを書いた。
クリップボードから自動でファイルに保存してくれれば
バッチファイル以外のファイルパスを気にしなくてもいいなと思ったけど
そのコマンドが見当たらなかった。
JavaScriptでエンコードして無理やり経由してるサンプルを見つけたがこれじゃない。
VBScriptでWin32APIで受け取ってるのを見つけてUWSCのソースはないかなと思ったら発見。
クリップボード関連はコマンドラインとブラウザはテキストのみの機能が普通なので無駄に探してしまった・・・
そして結局、SaveImage()を再度呼び出してファイルに保存するのが手っ取り早いと分かった。
.netの場合 : Clipboard.GetImage()
IE+VBSのやつ : window.clipboardData.getData()
ちなみに、VBSのやつはペイント+ショートカットキーが多かった。
ocrad.js ってOCRがあるんでクリップボード経由で渡せないかとググってみたけど
認識精度が悪いから実用にならなかった。
ところで、せっかく画像キャプチャが裏画面+クリップボードで出来るようになったのに ChkImg() がデスクトップのみ対象なせいで 座標は違うし、ウィンドウが移動したら追っかけないといけない。 これは残念。 あと、色が変わりすぎるからか範囲が狭すぎるからか分からないけど、 色を無視してもトランプの境界線を拾ってくれなかった。残念。
56 :
名無しさん@お腹いっぱい。 :2014/10/23(木) 17:33:50.68 ID:iAU/Hi4L0
画面に「ここをクリック」の画像が複数ある。 4箇所だけ見つけてそれぞれをクリックして下さい。 のスクリプトはどのように書けばいいですか? また、その指定した画像はUWSCのフォルダに入れれば良いですか よろしくお願いします
>>56 > 戻値 = CHKIMG( [画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )
> 番号: 複数ある場合に順番を指定 (左上から)
> -1: -1が指定された場合はヒットした数を戻値として返し、座標情報は ALL_IMG_X[], ALL_IMG_Y[] に格納
それを FOR ループで回す
画像ファイルはディレクトリを指定しない場合、起動するUWSファイルの場所に置けばいい。
デスクトップ? 画面(スクリーン) ああ、ボケがひどい。
>>55 chkimgもクリップボードでできるだろ
>>59 いや、この部分
// 指定画像が画面上にあるかチェック
戻値 = CHKIMG( [画像名,
クリップボードと何を比較するんだと言われればまあファイルしかないけど
画像データを変数で持てるようになれば
でも、UWSCは画像をオブジェクトで扱えないし
メモリあんまり持てないっぽいし無理だね。
>>54 のリンク先でエンコードしてテキストで画像を保持してるから
比較対象が小さければその都度エンコしてテキスト比較すればいいのか
ちょっとやってみたくなってきたぞおら
色は255,255,255(8bit x 3 = 24bit)
バイナリの文字化は64文字いけたかな。Base64がそれか。
2 x 3 = 6bit
ちょうど4文字か。切りがいい。
(4 x 15 + 1) x (4 x 13 + 1) x 5 = 16,165
微妙か。
でも、これをやれば裏マクロできる。
でも、PeekColor() で数か所比較するのとどっちが早いかと言うと、PeekColor() だなあ。融通も効くし。
Posで検索するのとChkImgで検索するのを比較してみた。 1秒当たりの検索回数は 3016回 Pos 4x15+1文字 を 9,840バイトの数字列 から検索 56回 ChkImg 画像ファイル 1 x 15 ドットの画像を (4 x 13 + 1) の横幅で検索 60回 ChkImg クリップボードで上記と同じ クリップボードとの微妙な差は、最初にファイルを読むのに時間がかかっているんで 毎度毎度ファイルアクセスしてたら結構な時間がかかってる事になるかな。 157回 × 15dot PeekColor ClipBord 4回 × 15dot PeekColor Screen 6回 SaveImg ClipBord Screenへのアクセスはリフレッシュレートに近い数字か。 クリップボードならその制限がなくて40倍ほどか。 SaveImg → PeekColor → Base64 → Pos と SaveImg → ChkImg とは性能はほぼ同じ(ドット数による)だけど 5枚のカードを検索するときに SaveImg 5回よりは SaveImg 1回 +(PeekColor 15回+Base64+Pos)x5 の方が快適って事だな あれちょっと待てよ 特徴的な15か所を文字列化したら一発で検索できるんじゃね? あ、
62 :
名無しさん@お腹いっぱい。 :2014/10/24(金) 02:41:47.40 ID:PdExt1ue0
初心者です。指定した画像をクリックスクリプトを作ったけど まったく作動しませんでした。 クリックしたい画像とBmp画像の1ドットでも違ったら駄目です。 bmpは24bitの方ですよ ↑これが原因の可能性がありますが、これってどういう意味か わかりやすく解説して頂けないでしょうか 書いたスクリプトは IFB CHKIMG("btn_gounit.bmp") BTN(LEFT,CLICK,G_IMG_X, G_IMG_Y) ENDIF
24bitというのはフルカラーの事 詳細はぐぐったほうが速いと思う
64 :
名無しさん@お腹いっぱい。 :2014/10/25(土) 02:36:41.59 ID:jjKFBvVu0
プリントスクリーンで保存してペイントでBMPにすりゃいけるでしょ 無理なら諦めろ
>>64 画像ダウンロードはだめ
>>65 さんのいうとおりPrintScreenしてペイントで切り出さないといけない
ブラウザで表示されてる画像イメージは普通、容量削減の為に圧縮した画像形式だからダウンロード゙したらその形式になるよ。 UWSCで扱うのはBMPで頭悪いくらい容量が多いやつ。
おまえらなににつかってるんだ?
ブラウザゲーの自動化というゲームで遊ぶために使ってるよ
UWSCのダイヤログ出してる時に裏で動けないのは不便だと思ってたけど 逆にショートカットキーでダイヤログ出すと動きを止められるのが便利だと気が付いた。
72 :
名無しさん@お腹いっぱい。 :2014/10/27(月) 22:05:10.04 ID:1A7jWZM10
betweenstrについてなんですが、 □□(1〜5000の数字)○○ と言うIE上の文字列で、 if betweenstr(IE2.document.parentWindow.frames(1).document.body.innertext,"□□","○○") <= 2000 then △△ この書き方で もし(1〜5000の数字)が2000以下の時△△を行う となりますか? 他の部分も合わせて動作させてみましたが、この部分だけ2000以下であっても△△の動作を行ってくれませんでした。
演算の前にvarで囲って数値化してないからじゃないかな
ごめん、varじゃないval
75 :
名無しさん@お腹いっぱい。 :2014/10/27(月) 22:23:44.87 ID:1A7jWZM10
早々にありがとうございます。 val関数を使用したことが無いのですが、もしよければどこを囲むのか教えてもらえませんか?
ヘルプ読んで死ね
>>75 if val(betweenstr(IE2.document.parentWindow.frames(1).document.body.innertext,"□□","○○")) <= 2000 then △△
関数を関数で囲んでも良いんだよ
78 :
名無しさん@お腹いっぱい。 :2014/10/27(月) 22:59:18.79 ID:1A7jWZM10
>>77 2重に囲む発想がなく、
x=betweenstr(IE2.document.parentWindow.frames(1).document.body.innertext,"□□","○○")
if VAL(x) <= 2000 then △△
と行数増やしてなんとか自己解決したんですが、
他にも同じ関数を複数利用していたのでこちらの方が行数も少なく分かりやすいです。
大変感謝致します!
これもUWSCの話題じゃないよな?
行数減らすことを考えるより可読性考えたほうがいいけど
81 :
名無しさん@お腹いっぱい。 :2014/10/28(火) 12:58:20.95 ID:loDYFNzt0
特定の画像が認識されないんですが、ペイント以外で方法ありますか?
83 :
名無しさん@お腹いっぱい。 :2014/10/28(火) 13:25:48.27 ID:loDYFNzt0
ソーシャルゲームを自動化したくて、ある特定の画像だけが認識されないのです。 プリントスクリーン→ペイント→トリミング→bmpで保存してるのですが その画像だけクリックしないんです
表示が時間変化するような部位だと タイミングによって一発でCHKIMGが成功するとは限らない 表示と画像が一致するまでCHKIMGを繰り返し行い待ち続ける必要がある
85 :
名無しさん@お腹いっぱい。 :2014/10/28(火) 14:25:41.42 ID:loDYFNzt0
sleepを長めにとってみますm(_ _)m
87 :
名無しさん@お腹いっぱい。 :2014/10/28(火) 15:46:35.24 ID:loDYFNzt0
ど素人でして、sleep長めにすれば良いのかと思って…
>>84-85 1→2→3→4→5→6→7→8→9→10→1・・・
と変化するものがあるとして
Sleepを長く取ると
1→→→→→→→5→→→→→→→9→・・・
となり、2〜4、6〜8は無視される。
Sleepを入れない場合は
>>61 のようにフレームレートに合わせて動くっぽいから見逃さなくなると思うけど
アプリがフレームレートより短い時間で計算して変化を計算している場合はそれでも引っかからない事になるかも。
>>5 の最後で僕が投稿したスクリプトは
ボタンが表示されたら1回だけクリックすると言うものだけど
ボタンが光る設定だとめったなことではボタンを検出できない。
Sleepをなくすことによって検出できるようになるかもしれないけど
光り具合が同じになるタイミングでしか検出できない。
だから光らない設定を条件としている。
そのスレで神と呼ばれてる人がうpったやつは特定のドットの
色の範囲で判別しているので、光り具合に関係なくどのタイミングでも検出する。
画像が変化しているかどうかは
同じ範囲のをいくつかキャプチャしてみてGIF画像のように切り替えて表示すると分かりやすい。
どんだけ自己主張激しいんだよ
>>90 >>83 の言う特定の画像だけってのが
>>5 のポーカーに当てはまるからそれかなと思ったんだが。
ポーカーのカードは変化しないから画像一致で見つかるけど
ボタンは光る設定があるから画像一致では見つからなかったりする。
もしポーカーの話ならあっちでしてもらいたいとは僕も思ってるんだが
なんか無視されてるしなー
トリップつけたのを気に入らない人がいるっぽいんだけど
悪意のスクリプトが現実にうpられているから
ある程度の信用が必要だっていう事情が分かってないんだろうな。
別人が何度も再うpしてるんだけど
いちいち「本人じゃないよね?」なんて会話しなきゃいけないわけで。
だからどんだけ自己主張激しいんだよ お前性格的に嫌われてるんだろ
>>92 性格とかじゃなくて嘘つき呼ばわりされるんだよね
無能は事実だけどさ
あと、2ちゃんねるは基本的にプロ固定以外はコテハン禁止な文化だし。
てかスルー力のテストだっただろ。
>>89 CHKIMG速度を計測してみたが
サーチ範囲や画像サイズによってはフレームレートの数倍多く処理してるから
フレームレート関係無いと思うぞ
フレームレートじゃまずいな ディスプレイのリフレッシュレートで
最近notepad++でuwscのスクリプト書いてるんだけど、折りたたみ機能ってどう使ってる? コメントをTEXTBLOCK - ENDTEXTBLOCKにして、"//"を折りたたみキーワードにする方法しか無いかな?
1万行あろうとも折りたたみなんて必要ないよ。 折りたたみ機能なんて使いたくなる時点で、 適切な構造化が出来てないとか、 適切な見出しコメントを入れてないとか、 適切なファイル分割出来てないとかと見るな。
>>99 VisualStudio使ってるからどうも折りたたみ+コメントの簡潔さが欲しくてさ
関数は別ファイルでmodule化してるしコメント付けてるけど、どうしても書き終わったコードが邪魔臭いのよ
notepad++使った事ないけど、関数一覧表示機能みたいなの付いてないの? htmlなんかのタグとかなら折りたたみは便利だろうけど いちいち折りたたんだり開いたりするのってUWSCに限らずプログラミングのとき大変じゃね?
修正が必要な箇所は畳まないのが基本 修正不要の箇所を折り畳む事で その前後の修正に集中するための機能 要するに関数化に近いイメージで使う 前後の依存性が高い箇所では使っちゃ駄目 バグの元になる
ちょっと質問です。 UWSCを使って「Webページ上に特定の文字列があったら指定した行動をとる」という指示は出来ますか。 説明書を読んだ限りでは「CHKNUM 」という関数がそれらしいと考えて以下のように書いてみたのですが、 「1行目:式がおかしいor型があってない」というエラーを出されて動いてくれませんでした… If CHKNUM(7 × 2) KBD(VK_1,CLICK,100) KBD(VK_4,CLICK,100) endif 1行目をどのように修正すれば良いか、分かる方がいたら教えていただけますか。 それとも、僕が考えるような動きはUWSCでは不可能なのでしょうか。 どうかお願い致します。
申し訳ありません、自己解決しました。 指定する文字列を"で囲まなきゃいけなかったんですね… あと「else」を入れ忘れてましたw
自動でスクリプトの変更は可能ですか? 現在while wendでのループを使い複数のスクリプトを手動で切り替えて使っています。 ただ、主に使用する物が3つあるのですが、切り替え頻度が高く自動で行えれば効率が上がると感じています。 使用例(1 スクリプト1のループ中に画像Aが現れたらスクリプト2へ切り替え、スクリプト2のループ中に画像Bが現れたらスクリプト1へ切り替え…以下繰り返し 使用例(2 スクリプト1のループ中に画像Aが現れたらスクリプト2へ切り替え、スクリプト2のループ中に1時間経過したらスクリプト1へ切り替え…以下繰り返し どちらかというと使用例2の方を再現したのですが可能でしょうか? また、可能な場合はお手数ですが詳細を教えて頂きたいです。 宜しくお願い致します。
全部関数でやれ 関数の関数の関数っていうふうに階層化
>>105 call スクリプト1
call スクリプト2
while true
// スクリプト1のループ
while 画像Aが現れるまで ChkImg()
スクリプト1の関数
wend
t = GetTime()
// スクリプト2のループ
while 1時間経過するまで GetTime()
スクリプト2の関数
wend
wend
>>107 ありがとうございます。call関数便利ですね。
立て続けに聞いて申し訳ないのですがまた教えて頂きたいです
while true
while CHKIMG("A.bmp",0)=FALSE
call スクリプト1 //while-wendのループ
wend
t=GETTIME(60/86400)
while t > GETTIME()
call スクリプト2 //while-wendのループ
wend
call スクリプト3 //for-nextのループ
wend
>>107 の内容を元に調べながら作成したのですが、スクリプト1から始まる動作がうまく行きません
スクリプト2からの動作(画像Aが現れた状態から)は指定時間動作後にスクリプト3へ移行します。
スクリプト1からの動作ではスクリプト1自体は動作するのですが他へ移動しません。
原因が全く分かりません。個々には動作確認しています。エラーも出ないので原因となりそうな箇所と対処法教えて頂けませんか?
>>108 ChkImg() がうまくいってないんでしょ。
その条件だけ別ファイルでテスト実行してみればいい。
デスクトップ定規を使うなりリアルタイムキャプチャするツールを使ったり。
いまどきはデスクトップを動画でキャプチャするためのツールで
デスクトップの特定の範囲をモニタしたりできるよね。
あと、色が微妙なら色コードを取るツールが必要だね。
とあるサイトで自動ログインするときに IESETDATA( IE,"ユーザー名", "name",) を使ってたのですがユーザー名をメモ帳から引っ張ってくるように変えたいんですがどうやったらそんなことできるでしょうか?
fopen
テキストファイルじゃなくてメモ帳なんだからGETACTIVEOLEOBJじゃね?
いやいやメモ帳を起動してコピペついでに回っておりますをやる サンプル.UWS
お前らもっと一般的な考えを持てよ。 メモ帳だぞ?OCRの出番ジャマイカ。
ちょいと教えてくださいな。 chromeでバックグラウンドで動かしたいんだけど、動かないんだ。 firefoxだと動くのに。なんでだい? 下の走らせると、"画像があるよ”は出てくるんだけど、クリックしてくれないんだ。 chromeは最新版 バージョン 38.0.2125.111 m Flash PlayerはPPAPIを無効にしてNPAPIのみにしてるよ。
////////////////////// SLEEP(0.1) ID = getid("XXX") MouseORG(ID,2) If (WindowID < 0) MsgBox("ウィンドウがないよ") ExitExit EndIf While TRUE If GetKeyState(VK_ESC) Then break If ChkImg("画像.bmp") // 画像があった MsgBox("画像があったよ") BTN(left,0,G_IMG_X+4,G_IMG_Y+4,50) else MsgBox("画像がないよ") ExitExit EndIf Sleep(0.1) WEnd //////////////////////
ここが噂のブラゲ自動化スレだな
PRO版使ってる方教えて下さい デバッガなんですが「指定の一行だけ実行する」のは 出来ないんでしょうか? STEP INボタンを押しても 最初の一行目が実行されるだけなんですが うまいやり方ありましたらご教授下さい
>>119 もう一回押せばもう一行実行するでしょ
指定の行だけって、変数使ってたら空っぽのまま実行しようとしてエラーになるよ
配列宣言や自作関数の定義等を考慮しての事とは思いましたが それらを全く使ってない場合でも駄目ですかね… しょーがないので試したい行だけ別ファイルに書き出してトレースと言う無駄作業に…
VSとかだと指定行に●つけてそこまで実行とか出来るんだけど ここのは出来ないのかね
ま、●のかわりにMsgBoxで止められるけど
せめてブレークポイントって単語くらいは知っておこうよ
言われてみると知ってるんだけどスッと出てこんのだよ、IT業でもないのでw
特定のスレッドだけデバッグとかできればいいのにな
デバッガでブレークポイント使えるじゃん 特定スレッド停止もスレッドを特定できるように処理を数行付け足せば ブレークポイント仕掛ければ簡単に止められるし どういう用途?
ステップインやオーバーやってると別スレッドにいくじゃん 何でブレイクポイントのみでやらなきゃいけないんだよ
アホんとだ行番号クリックで●じゃなくて塗りつぶしになって ▲で実行するとその行で止まるわ 前やった時なんでにんじゃ
スレッドって並行処理を行うための手段じゃん 別スレッドに処理が切り替わらない=並行処理が行えない って事になるよ 処理効率が下げてでもデバッグを簡単にしたい、という意味かな? だったらスレッド識別用処理をデバッグ時のみに入れさえすれば 解決する問題だけど・・・ 具体的には何がしたいの?
スレッドはデバッグ必要ないくらい単純簡潔非常駐に留めておくな だってまともなスレッド制御機能ないから使うなって意味でしょこれ
ショートカットキーで呼び出す関数もあれ別スレッドだけど便利だよね スレッド制御はグローバル変数のフラグ制御しか出来ないけど
mouseorgを使ってバックグラウンドにあるブラウザから画像を読み込みたいのですが chkimgの範囲に他のウインドウが重なると-999999が帰ってきて認識してくれません(明らかに隙間から目標の画像が見えていても) もちろん他のウインドウで画面を隠した場合も認識してくれません ID=getid("Comodo Dragon") mouseorg(ID,MORG_DIRECT,MORG_BACK) Chkimg("test.bmp",-1,0,0,1000,1000) MsgBox(G_IMG_X+ "×" + G_IMG_Y) ブラウザを変えてみたところ、firefox,chrome,comodoは駄目でieだけ何故か上手くいきました ウインドウ描画で何か違いがあるのでしょうか?アドオンを使いたいのでie以外で出来るようにならないでしょうか?
>>130 特定のスレッド、ステップイン、ステップオーバー
この単語を聞いて想像出来ないようならお前に何を言っても無駄
なんでみんなそんなすぐ怒って 喧嘩腰になるんだよw落ち着けよw
特定スレッドへのステップインが簡単に出来るデバッガって想像つかない 事前にスレッドを特定するための情報を準備しないとステップインできないから ブレイクポイントと大差ないんじゃね?
やっと貯金貯まったし有料版買ってきたぜー!
139 :
名無しさん@お腹いっぱい。 :2014/11/05(水) 13:12:14.57 ID:PZVDmDw90
マウス右ボタンが押されてる間右クリック連打というスクリプトを書きたいのですが GetKeystateはあってもそれのマウスボタン版の関数がないようですが実現可能ですか?
きれいなコードが書けるようになりたいんだけど、何を参考にしたらいいんだろう?
>>141 ネット。
冗談じゃなく人のコード見て可読性の良い奴のまねをするしかないような。
コーディングに自分の癖が出るほどまだ出来ない私にはうらやましい話だな…
GETID(GET_ACTIVE_WIN)でID取得しても どのウィンドウでも1が返ってくるんですが取得方法間違ってますか? GETALLWINでやると全部表示されるんですが、1は空白になってます。
>>143 1から連番になるだけだから
最初の1個目は1になる。
GETALLWINだと必ずスタートアップで起動したシステム関連が上に来るはず
数値はエラーでないなら気にしなくていい。
>>139 無理
BTN関数で同じマウスボタンを操作すると
次のGETKEYSTATE関数でボタン押下を検知出来なくなる
MORG_DIRECTでやれば検知は問題ない
>>144 なるほど…ありがとうございます。
どうも上手くいかなそうなので勉強してきます。
何でもかんでもUWSCでやるんじゃなくて、別のプログラムで実現できるならそれつかえばいいだけ
>>149 uwscだけだとexe化で単体で動くからいいんじゃないか
GUI制御の容易さから開発環境のポータビリティ性まで総合的に考えて、uwscよりお手軽かどうかが問題だよね
最初の1〜2歩は楽なんだがその先は泥沼 何かと面倒だし融通の利かない言語仕様が足かせになって苦行のようだぞ 他の言語でUWSC同等機能のライブラリを自作する方がまし
>>153 じゃあだまってそうしてればいいじゃん。
君はこのスレで何がしたいの?
UWSCが得意としてる範囲を越える事までUWSC内でこだわるのは疲れるだけだよってこと
そんなんどんな言語だって同じじゃないのか
そう、そしてUWSCが得意とする範囲は意外と狭い DLLやCOMコンポーネントを自作すれば少しはましになるのだけど そこまでするなら他の言語でそのまま書いた方が・・・となる
意外と狭いっていうか、変に広すぎるんだよなあ kbd, mmv, btn, chkimg, 条件分岐とかのステートメントだけで十分すぎる
uwscと他の言語をやりたいことに合わせて組み合わせればいいだけの話だろ。当然用途によってはuwscで十分って人もいるはず。 自分のやりたいことが高度過ぎてuwscだけでは非効率だって自慢でもしたいのか?自慢にならんが
>>158 俺もこれ思ってる。
COMコンポーネントを使えますよじゃなくて、
それだけを使えるCOMコンポーネントにUWSC自体がなれば万事が解決するんだと。w
でもそれ以外にgetidやclkitemなども想像以上に作りこまれてるっぽいよね。
高負荷時に適度に待ったりとか_ACC指定とか、他汎用言語でこう簡単にはできないよね。
速度が第一目標の処理をUWSCでって考えてる方が間違っている
記録して、ちょいちょいと手直しして、それでおkな使い方をしているから、とても便利だから
俺みたいに数万〜数万行のテキストファイルを ゴリゴリ加工して for i = 0 to 終わりまで 一気にブラウザで走らせてる人もいることを忘れないでくれ。 他の言語は全く知らんし何度も勧められたが乗り換える気は無い。やりたいことが柔軟に実現できてるので満足。 between関数が無かったらUWSC使いになってなかったかもしれんが。
>>163 正規表現覚えたら幅が広がるからお勧め
テキストファイルがCSVなら標準関数で十分だけど。
ここのbetween関数なんてどの言語でも10行前後で自作できる内容では?
信者大集合()笑
テキストファイルを編集してブラウザで処理するのってuwscでやることかよ 何度も多言語を勧められてて、その度断ってるくせに「俺の事は忘れるな」とかバカじゃないの?
UWSCは一番気軽に作れるしいいじゃん別に
ブラウザ処理ってのが判らんけど ただテキストを処理するだけならawkとかperlのが手軽な気はするけど
最初気軽にuwscから入ってやりたいことできて他ちょいちょいやりたいこと広がってその分だけ覚えて って感じで多言語触らずに来たら他勧められても一からやるのはちょっとってなるのはわかる
C言語とかやってみようと思った事もあるけど やりたい事に差がありすぎて意味がわからんのよね win自動化したいのにprintfとかHello Worldとかいわれてもな
C言語は現代ではPICやラズベリーパイいじるのに使うのよ 自動化なら素直にC#とかのほうがいいね Rubyとかでも自動化も出来るみたいだけどVS使えたほうが楽だね
おれもC♯と並列して勉強してたが、UWSCが手軽すぎてこっちしかスキルのびてねーや。まあ、VBと似たようなもんだと解釈してる。 画像認識が強力だったから利用してたが、スクレイピング覚えてからは画像認識使わなくなった。
規模が数万行になる辺りから限界を感じ伸び悩む。
>>174 それは他の言語と組み合わせるって事を知らないだけだろ
>>175 他の言語でCOMコンポーネントを自作して連携するんですか?
それともコンソールアプリみたいにテキストで引数と戻り値をやりとりするんですか?
参考までにどういった方法がオススメか教えて下さい
>>176 DLLやCOMが書ければいいけど大変。
UWSCでの基本は DOSコマンド、PowerShell コマンドレット呼び出しだね。
単にコマンドを呼ぶだけでなく、整形が出来ればシンプルになる。整形のサンプルも多い。
PowerShell からなら .net の言語を直接スクリプトのように呼べる。
Poker.c でもそうだけど、せっかく見つけた奴が別言語だったなら
その言語でコンパイルして呼び出すのが一番手間がかからない。
問題は・・・コンパイルする環境がでかかったり、有償版でしかコンパイルできない場合があること。
>>151 で書いたように、スクリプトを呼び出すだけなら実行環境だけなので
インストールが必要でもそれほど大きいものにはならない。(.netは別・・だけど、Vista以降は標準だから)
UWSCは小さいのがいいところだけど
Windows標準の DOS、PowerShell(.net)、VBScript、JScript なども同様に小さくてよい。
Web標準の JavaScript その他も小さいだけでなくネットでの連携もしやすい。サンプルも多い。
UWSCは有償版しか画面がないけど、IEは操縦できるから
HTML、JavaScript 、CSS が分かれば十分いろいろ出来るんじゃないかな知らないけど。
FireFox を自動操縦できればアドオンも利用できるけど
UWSC --> ActivePython --> selenium --> FireFox --> アドオン
って呼び出し関係になるかな。
Chromeは
UWSC --> ActivePython --> selenium --> chromedriver --> Chrome
>Poker.c でもそうだけど こいつグラブルスレのキチガイじゃないか
せっかく人払いしてやってんのに基地外呼ばわりか
いちいち難癖つける奴の方がよっぽど気違いだけど気遣いに見えるからキチガイと書く方がいいんだよな。
グラブル関係で見つけたいい情報をメモするのも遠慮してやってんのに
書きかけたけどやめたやつもまとめて貼ってやるわ
----
DOS コマンドと組み合わせるとき
Tesseract-OCR は DOS コマンドだけど余分な出力があるので除去するのがめんどくさい。
あと、パラメタが多い。
そういう時にバッチを書ければ
>>54 みたいに呼び出してそのまま有効な文字列が得られる。
あ、書いたとしか書いてなかったな。↓の奴。
ttp://kanae.2ch.net/test/read.cgi/gameurawaza/1413584805/503 ----
レジストリに COM 登録するのは面倒だ DLL 直呼びでつかっちまえと思ったけど
スクリプト言語から呼ぶときはレジストリ登録された COM しか使えないと知った。
UWSC の内部仕様を知っている人ならもしかしたら DLL で COM オブジェクトを作って渡すって事が出来るのかもって言うか
そう言えば COM を利用可能にする DLL 関数がどっかにあったような気がするからそう言うのでなら出来るのかもしれない。
COM 自作は敷居が高かった。
DDE サーバーをC#に移植したことはあるけど、1か月もかけて実用レベル以下のしかできなかった。
とは言え、COM サーバーなら .net でも作れるからどちらかと言えばお勧めできる。
ActiveBasic で窓出して画像取り込む DLL を作ったこともあるけどあれは作ってる最中にシステムがクラッシュしまくった。
DLL を作るならサンプルコードの量や開発環境から、C言語、C++くらいしかないと思う。
短い完成ソースをコンパイルするだけなら ActiveBasic は小さくてよかったんだけどなあ。
リンク先で UWSC から呼べない DLL の事を書いているが PowerShell + C# のコードからその DLL を呼ぶようにすれば .uws ファイル1個で呼び出すと言う事は出来るはず。 しかも、C#のサンプルソースが2つついてるらしいから ほとんどそのままコピペすれば使えるはず。 C#をPowerShellから呼び出す部分も必要だけど。 ただ、コード量はわずかとはいえよく分からんし 開発環境がないとちょっとした修正も難しいから手を出してない。
あるコマンドを入力するとデバッグしやすくなるという記事を何処かで読んだのですが、 何のことだかわからなくなってしまいました バルーンメッセージ以外で何かあったでしょうか?
基礎から学んでないから馬鹿正直に直進し壁にぶつかってすぐ諦める 少し横はがら空きなのに気付かないのは頭が固いのかセンスがないのか… 他の言語も多少はやってるようだけど知識がぺらっぺら
分かったよ。帰るよ。こっちにな。
某艦これのツールはUWSCとC++とJavaを組み合わせてるな あれは本職にしかできないワザか
>>187 そのツールに興味はないけど、UWSCが利用されてるのはどんな部分?
やはり画像認識系?
>>188 普通に画面操作部分。画像認識、クリック、ウェイト(待ち)とか
でも、画像認識はchkimgじゃなくて、独自DLLの関数を呼び出してた
なるほど、マクロ的なとこはやはりUWSCが手軽ということなのかな。
それソース見てみたいな
>>187 そのツール俺も参考にしてみたいが何処で入手可能?
◆evw/E7kww2は二度と来るな
そういう質問には答えなくていいです
教えてくださいな♪
気持ち悪 もう二度と来なくていいよ
基礎的な問題だとは思うのですが、調べても分からなかったためお教え下さい。 現在FUKIDASIを使い、カウントダウンをしたいと考えています。 しかし同じ場所にFUKIDASIを出すと、FUKIDASIがチカチカしてしまいます Ver4.8c以降のものも使ってますし、調べて出てきた「DEF_DLL LockWindowUpdate(hwnd): long: User32」と言うものを使っても解決しません。 どなたかFUKIDASIのチラツキを防ぐ方法が分かる方はいらっしゃいませんか
スレッドを使って背景用の空文字のみのフキダシと背景なしの文字のみのフキダシを重ねて表示
>>199 自分には思いつかない発想でした。
しかし試してみたところ、
@.文字が後ろに行ってしまう場合がある
A文字数によって、背景の大きさを変えれない
B文字の縁が少し黄色がかる
と、3つの問題が起こりました。
1は吹き出しを出すタイミングを
2については、PUBLIC変数を作り文字数を数えればなんとかなるかと思いましたが、
3についての解決策が分かりません;;
>>198 デバッガでステップインでウォークスルーすると色々と理解できるぞ
表示文字が更新するときだけFUKIDASI命令を実行すればいいのに それともストップウォッチみたく0.1秒ごとに更新してるんかいな
順番に特定箇所をクリックまたはドラッグ&ドロップするだけの 簡単なスクリプトを作りました。 しかし、あるPCではクリックを認識するが別のPCでは認識しなかったりします。 具体的には BTN LEFT DOWN〜UP BTN LEFT CLICK 等が、実行する度にクリックに対して反応したりしなかったりします。 クリックしたりしなかったり、 ドラッグ&ドロップでは掴まなかったり、所定の場所で離さなかったりします。 こういった場合どんな原因が考えられるでしょうか。 また、対策はどういった方法がありますでしょうか。
>>203 FLASHゲー?
btnを押す時間を長くしたり間にsleep挟めてみたらいいんじゃないの
>>203 人間がクリックする通りにやればいい。
クリックして反応がなかったら、あれ?おかしいな?と何度でもクリックするでしょ?
で、クリックした結果、画面に何らかの変化が現れて、
それを人間が見て、あ、クリックできたな、と判断する訳。
それを全部やる。
マウスカーソルが変わるならそれを検知するのも手かもね
>>198 もし0.1秒ごとに Fukidasi を実行してるのなら
表示する内容が変わった時点で Fukidasi を実行するようにすれば
チラツキは低減される
カウントダウンなんかSleep(1)で十分だと思うけど
>>203 ドラッグ&ドロップってアイコンをセットするのに時間がかかる場合がある。
あとは基本事項(管理者権限で検索)
なんだ管理者権限って?
キチガイは消えろ
なるほど
Androidエミュでスリープ解除(タップ)ってどうやればできますか? ドラッグドロップ関数じゃできなさそうだし。 それか、代替方法ありますか?
>>200 FOR i = 10 TO 0 STEP -1
Fukidasi(i + "秒前", x, y, 0,20,0, $000000,$FFFF00,0 )
Sleep(1)
NEXT
試しにやってみたけど、ちらつかないぞ
214 :
名無しさん@お腹いっぱい。 :2014/11/18(火) 19:56:59.69 ID:k9VDtAVu0
本家でスルーされてしまったのでこちらでアドバイスを頂きたいです。 SENDSTR(0, ie.document.body.innerTEXT) str = GETSTR(0) temp = BETWEENSTR(STR,"ここから","ここまで") text = COPY(temp,1,7) 上記のような文をループさせて、web上の指定文字をほぼリアルタイムに取得しているのですがPCの環境が変わると文字の位置が変わる事があるらしく、起動するPCによっては期待する結果になりません。 環境に依存されずに確実に指定した部分を抽出する方法がないかアドバイス頂けませんでしょうか。
>>214 >SENDSTR(0, ie.document.body.innerTEXT)
タイミングの問題でBODYが取得できない事は絶対にないと言える?
言えないとしたらチェック処理を事前に追加すべき。
>str = GETSTR(0)
ユーザが同時に操作をしていてクリップボードを書き換える事は絶対にない?
あるとしたらクリップボードを使う必要性を見直すべきでは。
>temp = BETWEENSTR(STR,"ここから","ここまで")
"ここから"と"ここまで"はそれぞれ必ず1つずつ存在する事は誰が保障しているの?
不確実であればチェック処理を追加すべきでは。
どこまで自分で問題を切り分けたか説明もせずに
アドバイスだけくれって言われてもそりゃスルーするでしょ
まず問題発生時にログ出力できるよう処理追加して問題点を洗い出すべきでは?
>>214 body.innerTEXTの文字列からだと目的の文字位置の特定が難しい
タグ名やidやclassを頼りに目的のタグに絞り込んでからinnerTEXTを参照するのが一般的
BETWEENSTRじゃ間に合わないなら正規表現も使う
>>215 >>216 情報不足の中、ありがとうございます。
ログ出力は正直怠っていたので、そこからですね。出直してきます。
Py = CreateOleObj("ScriptControl")
Py.Language = "python"
Py.AddCode(pycode)
Py.run("abe1")
Py.run("abe2")
Py.run("abe3")
Py.run("abe4", "映画出演")
sleep(5)
Py.run("abe5")
textblock pycode
from selenium import webdriver
def abe1():
global browser
browser = webdriver.Chrome("chromedriver.exe")
def abe2():
browser.get("
http://homepage3.nifty.com/abe-hiroshi/ ")
def abe3():
browser.switch_to.frame("left")
def abe4(str):
browser.find_element_by_link_text(str).click()
def abe5():
browser.close()
browser.quit()
endtextblock
キー入力時のアクティブ化さえ防げたら神ツールなんだけどなぁ
防げないん?
Chrome Apps に関しては Chrome の機能で アプリを表に出す仕様だから防げない。 Chrome 以外のソフトより表には出てこないけど。
VMwareで運用してるから俺にとっては既に神ツール
色の取得に関しては「似ている色」を判定できるけど 画像に関しては完全一致でなければ判定は無理? 似ている画像を判定する機能はuwscにはないよね?
ないね
間違い探しのようにほとんどの場所が一致している画像同士なら 画像そのものを分割して一致率から判定すればいい 犬の画像から猫を探すとかいうのは無理 何をもって「似ている」と定義しているのか
>>224 Rocket Mouseの画像認識のレベルを下げたものをUWSCからEXECしてる。
UWSCってtry-catchはあるのにthrowはできないん?
不正な引数指定などで、わざとエラーを起こせばいい
ヘルプには「UWSファイル名の割り当てに変数を使用する事はできません」 とありますが、何とかして指定した処理を指定した回数実行させたいと考えています。 最初にボタンで何の処理を行うか選び、次に数値を入力させて回数を入れるようにしました。 ボタンを選んだ時点で変数を取得し、その値で別の処理をさせようとしましたが IF文では複数行を指定する事が出来ない為、手詰まりになってしまいました。 GOTO文みたいなのがあれば良かったのですが、自分には見つかりませんでした。 何かうまい方法があればアドバイスをお願い致します。
233 :
232 :2014/11/26(水) 18:24:33.90 ID:pvNhVBl70
SELECT SLCTBOX(SLCT_BTN, 0, "どのマクロを実行しますか?", "処理1", "処理2", "処理3") CASE SLCT_1 処理 = 1 CASE SLCT_2 処理 = 2 CASE SLCT_3 処理 = 3 CASE -1 EXITEXIT SELEND While True 数 = input("1〜100の間の数を入力してください") ifb VAL(数) = ERR_VALUE MsgBox("数値を入れてください") Continue endif ifb (数<1) or (数>100) MsgBox("指定範囲内の数を入れてください") Continue endif break wend if 処理 1 for 回数 = 1 to 数 call 処理1.UWS print 回数 next if 処理 2 (以下変数ごとに別の処理をCALLしたい)
234 :
232 :2014/11/26(水) 18:26:30.50 ID:pvNhVBl70
上記のような感じです。実際には処理は10個以上あるんですが 改行の関係で削りました。 よろしくお願い致します。
if 処理=1 then でいいのでは?
ブロックIF文 // メモ帳起動 If MsgBox("メモ帳を起動しますか?", BTN_YES or BTN_NO) = BTN_YES then Exec("notepad") // メッセージ メモID = GETID("メモ帳") Ifb メモID < 0 then Fukidasi("メモ帳は起動されていません", 100, 100, 1, 16, "MS 明朝") Sleep(5) Fukidasi() // 吹き出し消す Else SendStr(メモID, "メモ帳は起動されています") Sleep(5) CtrlWin(メモID, CLOSE) // メモ終了 ClkItem(GETID("メモ帳"), "いいえ") // 保存はしない endif
だから処理毎のCALL呼び出し辞めろってw 処理はすべて関数化して、 肥大化するようなら関数のみ記述し何も実行しないファイルを冒頭CALL呼び出し。 includeとかusing風の使い方ね。 関数化すれば、evalで関数呼び出せるんじゃね? funcResult = eval("処理"+funcNum+"()") 未確認だが。
>IF文では複数行を指定する事が出来ない為、手詰まりになってしまいました。 なのだからその指摘はかなりズレているね includeとかusingとか中二病がやたらと英語を使いたがるアレか
・・・
Rocket Mouse試用してみた。画像認識の精度はなかなかいいな。でもちょっと処理が遅い 単純にクリックして行くだけならいいが、「今、何が表示されているか」を認識するのに使うのは難しいっぽい? 手元でテストしてみたら、画像認識30枚の小さい画像で9秒近くかかってた 方式1,2を両方試したが同じくらいの速度だった。もっと早くする方法あるのかな
>IF文では複数行を指定する事が出来ない為 これが理解できない俺に出番はないな >if 処理 2 これがelseifじゃないのが気持ち悪いくらいで
的外れではないだろ。 処理が100種類ぐらいあるのに延々とselectやらelseifやらヤることに疑問を全く感じないのか? 中二病がやたらと英語を使いたがるとしてstrategy patternだよ。
100じゃなくて10だったかw
246 :
232 :2014/11/27(木) 01:59:14.33 ID:rojdCpwR0
call "functions.uws" //自作関数を定義するファイルを呼び出し (>233にある、ボタンで処理選択と指定回数入力の部分。省略) if 処理 = 1 then syoriichi(数) endif if 処理 = 2 then syorini(数) endif : (以下省略) ---------------------------------------------------- functions.uws procedure syorichi(引数) //処理1の定義 for 回数 = 1 to 引数 (処理) next fend procedure syorini(引数) //処理2の定義 for 回数 = 1 to 引数 (処理) next fend : (以下省略)
ん〜そういうことか… > ヘルプには「UWSファイル名の割り当てに変数を使用する事はできません」 が問題だと思って回答するとevalだがよくよく見ると確かにブロックIF文の問題…なのか? for i=0 to 4 try for j=0 to i print eval("処理"+i+"()") next except print "処理"+i+"()はありません" endtry next function 処理1() print "処理1()"; result = 1 fend function 処理2() print "処理2()"; result = 2 fend function 処理3() print "処理3()"; result = 3 fend
皆様アドバイス有り難うございました。上記で動きました。
関数化は考えていたのですが素人同然だったので手を出せませんでした。
・勘違いしてた点
>>232 で言っている「IF文で複数行指定出来ない」は全くの勘違いでした。
複数処理であってもendifまでの部分をちゃんと処理してくれました。
・改善した点
call呼び出しをやめて関数化しました。
そのお陰で、回数を関数の引数に渡せば毎回for〜nextを書かずに一行で済みました。
functions.uwsの方には処理事に全部入ってますが。
・不安点
現時点でfunctions.uwsが三万行位あり、
今後も肥大化予定ですが限界容量とかありますでしょうか。
限界容量は特に無いけど、 普通分類するだろ? call myFunc_Common.uws call myFunc_WorkFlow.uws call myFunc_Address.uws call myFunc_AccountingBussinessLogic.uws とか好きに分類すればいいんだよ。 今後別のスクリプト書いた時に使いまわす奴と、 今回のスクリプト固有の処理で明らかにそれっきりな奴とは ファイルを分けたほうがいいぞ。
//蛇足だけどこう書くとevalの有用性が判る dim listProcNames[] = "処理1", "処理2", "処理3", "処理2", "処理4" dim listProcParams[] = "3" , "4,5" , "1,2,3", "5,6,7", "4,3,2" for i=0 to resize(listProcNames) print execFunction(listProcNames[i], listProcParams[i]) next function execFunction(funcName, params) try result = eval(funcName+"("+params+")") except result = ERR_VALUE endtry fend function 処理1(numOfExec) print "処理1の前処理" for i=1 to numOfExec print "処理1" next print "処理1の後処理"; result = 1 fend function 処理2(param1, param2) result = param1 + param2 fend function 処理3(param1, param2, numOfExec) print "処理3の前処理" for i=1 to numOfExec param1 = param1 + param2 next print "処理3の後処理"; result = param1 fend
252 :
名無しさん@お腹いっぱい。 :2014/11/27(木) 09:12:56.44 ID:NKFW/fu30
え なにこれ Rocket Mouse Pro は買わせん!っていう工作かと思うレベルw
自動でスクリプトの変更は可能ですか? 現在while wendでのループを使い複数のスクリプトを手動で切り替えて使っています。 ただ、主に使用する物が3つあるのですが、切り替え頻度が高く自動で行えれば効率が上がると感じています。 使用例(1 スクリプト1のループ中に画像Aが現れたらスクリプト2へ切り替え、スクリプト2のループ中に画像Bが現れたらスクリプト1へ切り替え…以下繰り返し 使用例(2 スクリプト1のループ中に画像Aが現れたらスクリプト2へ切り替え、スクリプト2のループ中に1時間経過したらスクリプト1へ切り替え…以下繰り返し どちらかというと使用例2の方を再現したのですが可能でしょうか? また、可能な場合はお手数ですが詳細を教えて頂きたいです。 宜しくお願い致します。
すげーstrategy patternだなこりゃ
おめーこそすげーよ、おめーのコードは神のコードだな。見えないけど。
>>254 別スレッド作って、1時間待ってから切り替えフラグでも立てたら良い
ヘルプをTHREADで検索
>>254 まずあなたのできない事の詳細を教えてください
画像Aを発見したらメッセージを出す、という処理を書けますか?
やりたいことがそんだけ明確になってるんだから そのままコーディングすればいいだけな気がするんだけど
>>251 ウヒョーありがとうございます。
ウチだと画面全体から100x100の画像チェックにchkimgの100倍位早いです
UWSCで遅くなっちゃう所をdll化してる感じなんですかね?
同梱の簡単キャプツールも(・∀・)イイ!!
神が降りてきたらしいと聞いて
条件を満たした時の情報の共有方法と内容がポイントだと思うが その位なら画房Bを見つけた時間をグローバル変数に格納して それぞれのループを制御したら良いのではないかな
ChkImgX.dllはOpenCVを内蔵してるんですか?
してません。全部自作です。
すごいですね、ありがとう。
無理だと思うけどそちらの方のソース拝見したいものですな
テンプレートマッチングのアルゴリズムを自力でフル実装してるのか 何らかのライブラリに使える画像処理があるのか気になる
ネ申!!
kc神なんですねw 安心して使います
CHKIMGで使用していた画像がChkImgXで使えない物と使える物があるな 再現性はあるがいまいち条件が分からん
アプリケーションごとのGETCTLHNDの第二引数に入る値を取得する方法ってありますか? 例えばヘルプのサンプルだとGETCTLHNDでメモ帳起動して入力領域の部分を"edit"としていると思うのですが、 このアイテム名"edit"に相当するものが他のアプリケーションだと何になるのかわかりません。 クラス名をいれてみても動作せず、某所でアプリケーションのアイテム名を一覧で取得するというUWSファイルを見つけ それを使用してみるもメモ帳内に"edit"はなく、手詰まりになってしまいました。 何かヒントになりそうな事でもあればご教示ください。。
>>272 pro版の方にオブジェクトクラス名やキャプション表示できるデバッグ用サンプルが入ってるよ
Windows起動時に必ずUWSCも起動するようになってしまいました。 これってどこの設定をいじれば良いのでしょうか。 メニューの「設定」の中にはそれっぽいものはありませんでした。 ご存じの方いらっしゃいましたらご教授お願い致します。
何故かスタートアップに入ってました。アホや…orz
このソフトって寝ながらフリーメール取ってゲームのリセマラ垢量産できるの?
要は、フリーメール取得時の人間認証をどうやって突破するかなんだが カメラのようなハードウェア+読んでここのようなOCRソフトで可能なのかな。
俺はpython , C#を業務で使ってるが、UWSCはbootstrapと同じ感じ印象だわ pythonで1週間かかる内容がUWSCだと1日でとりあえず動くものが作れる
>>276-277 人が欲しがるものを作る → 認証突破を交換条件にする → メールアドレスを自動で作れる
僕が作った時は認証部分をページの最後にして
フォーカスだけ移動して入力を促す。
入力完了したらスクリプトを続行。
この程度の手入力なら100個程度ならスクリプト作る労力以下で作れる。
>>263 のが某トランプをどの程度読み取れるか気になってる。
先ずはトランプ保存しないとなー
>>279 やっぱりそういう需要ってあるんだなw
マクロのソフト見たときに真っ先にその用途思いついたわ
while 1 処理 wend ってやると無限ループになって止めるのに 苦労するんだけれど、一発でストップする キー操作って有るのか?
糞コテ死ね
この糞コテの言うことは、そういうふうにやったら不可能とは言い切れない、 レベルのいい加減な知ったかアドバイスだからな。 かと思えば突然気が触れたかのように猥褻な写真貼ったり、 誰とも会話する気もなくブツブツと独り言を連投したり、そういう奴だからな。
>>284 Breakキーで止まるのか!!サンキュー!
今まで必死でモグラ叩き状態に
なりながらマウスで停止アイコン
押していた俺の苦労は何だったんだ。
whileにesc押したら止まるように設定じゃダメなのか?
彼の問題点はとても良く想像つくけど 自分のコードも出さないし やりたいことを正確に言い表すことができてないし とても面倒くさそうなので後は任せた…
ん?まさか[alt]+[F2]で終わっちゃわないだろうな…
>>283 > 不可能とは言い切れない、レベルの
やれる程度の事は実際やってる人いるし
着々と実現してるだろ?
>>279 のは公開済みだけどGooメールが有料化されて無意味になっただけ。
・・・公開してなかったっけ。
> 誰とも会話する気もなくブツブツと独り言を
返事がなければ独り言になるのは仕方がない
むしろ意見があれば積極的に返事を書いてるが「荒らし出て行け」と言われる。
今はコテつけてるので
>>282
なんかしらんけどこいつ偉そうだな 何様なん
ぶっちゃけ、こうゆうマクロソフトって 自動でフリーメアド取りまくれるとかの機能ないと 利用価値無いんだが。。。
>>287 WHILE (GETKEYSTATE(VK_ESC)=FALSE)とかで繰り返すとか?
>>292 こういうマクロソフトは使い方次第
お前にとっての利用価値がないだけ
残念だったな
CAPTCHA認証自体が、インターネット上がマクロやBOTによるスパムだらけで困ったから その防止の為に作られたわけですし・・・・それを突破してもいいの?
296 :
名無しさん@お腹いっぱい。 :2014/11/30(日) 01:15:07.32 ID:MMWVltJF0
いいだろ。 どうせ一般人をカモにした追跡広告ばっかりなんだし 消費者は消費者でネットの荒野を生き残るためには そうやってソシャゲのリセマラ垢量産したり 糞アフィ糞まとめサイト量産したりで食いつないでいくしかない もう人間がキャッキャ逝ってた頃のネットは終わってるんだよとうの昔に
糞コテ死ね
色々用途は思いつくんだが、それを作る労力と手動でやる労力がまだまだ逆転しないんだよなあ でも作らなきゃ上達しないから一応作るんだけどね……
>>298 それはあれだな。オミトロンとかの広告消しなんかも似たようなことがいえるな。
晒しちゃうと、広告屋も対策してくるから結局自前で作るしかないんだよ。
いや、あれだな。コラなんかもその結論に行き着くんだが
コラの場合は他人が作ったってことが付加価値として生きるから下手糞であっても
他人のがやっぱり欲しくなるな。
おおお有難う!あなたこそ本物です
ソース公開はライセンスの都合だから当たり前 当然、それを使った成果物もライセンスは感染するので注意してね
>>303 OpenCVはBSDライセンスだから公開の義務はないことに注意してね
定数のSCOREって何?
>>306 スコアはテンプレート画像との差です。ゼロだと完全一致
スコアが判定閾値以下のときだけマッチしたとみなすので、返るスコアは常に判定閾値以下です
閾値を調整したいときはこのスコアを見てください
これソースをコンパイルするときだけOpenCVの配置が必要で、 DLLを実際に使う場合は内包されてるんですよね?
このスレにもGPL厨わいてんのかw
>>308 ソースコード中のコメントに書いてありますが、Debugビルドはダイナミックリンク、Releaseビルドはスタティックリンクになるようになっています
なので、DebugではDLLが必要で、Releaseでは必要ないです。
chkimgxでエラーが発生しました。やり直します! ってprintされた時はどこかにエラーログ吐いてますか? sample.pngから別の画像にしてsample.uws実行するとこれが出ちゃいます
Neko~~って酉に見覚えあると思ったらねこへルパーの人か
>>273 ありがとうございます、PRO版購入してみます。
>>314 購入しなくてもインストールだけして取り出せばいいのでは
316 :
272 :2014/12/01(月) 17:17:19.98 ID:YnANvAnR0
プロ版購入してサンプルuws確認してみたんですが該当する(editに対応する値を取得する)uwsは確認できませんでした
クラスやキャプションを表示っていうのは「タイトルクラス.uws」って奴ですよね?
これだとGETCTLHNDの第二引数にいれるeditって部分は取得できないんですよね
一応他のサンプルも一通り目を通したんですがやはり該当部分を取得するuwsはありませんでした。
editって一体なんなんだ・・・
>>315 これ別に購入しなくてもよかったんですね・・でもexe化とか便利そうなので有効に使えるようにがんばってみます
子クラスとかオブジェクト名とかだろ GetChildとかstatusのST_CLASSで取得できるぞ
318 :
272 :2014/12/01(月) 17:33:43.13 ID:YnANvAnR0
>>317 statusのST_CLASSだとメモ帳の場合Notepadですよね?editってでてこないんですよ
多分メモ帳内でのメニューバーの部分だったり、記述する部分だったりっていうのを指定してるのかと思ったんですが
editって文字ってどこからどうやっても取得できないんですよね
システムメニュハンドラっていうのは確認できて、それだと数値とれるんですけど動作が思っているものと違うんですよね
(本来バックグラウンド動作させる場合マウスクリックを行っても実際のマウスカーソルは動かず、クリックだけ行う、というような動作にならない)
editで指定するとこれがうまくいくんですが・・・editってなんなんだっていう。
GetChildという関数は知りませんでした、確認してみます!
319 :
272 :2014/12/01(月) 17:55:47.15 ID:YnANvAnR0
あ、GetChildは違うや ST_CLASSでNotepadってなるのはNotepadのところを取得してるからだろ repeat APP_OBJ = "オブジェクト名:" + status(getid(GET_FROMPOINT_OBJ), ST_CLASS) APP_CHILD = "<#CR>子クラス:" for c in getallwin(getid(GET_FROMPOINT_WIN)) APP_CHILD = APP_CHILD + "<#CR>" + status(c, ST_CLASS) next fukidasi(APP_OBJ + APP_CHILD, G_MOUSE_X + 15, G_MOUSE_Y - 25, 3,10) ctrlwin(getid(GET_FUKIDASI_WIN), TOPMOST) sleep(0.2) until getkeystate( VK_ESC )
>>316 DbgScriptフォルダにObject_With_Handle.uwsとかInfo_Under_MouseCursor.uwsとかない?
322 :
272 :2014/12/01(月) 18:38:10.40 ID:YnANvAnR0
>>332 DbgScriptフォルダの存在を知りませんでした、確認しました
ちょっと長々とアレな感じになってしまったので以下名無しに戻ります、ありがとうございました
上で紹介されているchkimgxを自作スクリプト内で使おうとしていますが、 callで呼び出したuws内からさらにuws呼び出しても戻ってこられますか? あとfunctionやprocedureで作った自作関数内でcall使っても問題ありませんか? とりあえず簡単なスクリプトで試した限りでは問題無く動いてますが、 問題点とか気を付ける事が有りましたら教えて下さい。
>>312 ありがとうございます。
そちらのuwsを使ってみましたが、ログが見つかりませんでした。
場所やファイル名等解りましたら教えて下さい。
if chkimgx("*****.png",id,***,***,***,***,1,5,-1) then
ここの処理で、どうやら画像が存在しない時に「ない?」と出てくれる時と
エラーになってしまう場合があるようです。
全く同じ状態で何度かやると「ない?」と出てくれる時もあります。
>>325 エラーはprintで表示するようにしました
↓こんな感じのエラーが出るはずですが、出ていませんか?
該当ファイルが1つもありません: sample.bmp
以下、スタックトレース
1: throw_exception() - 0x57d35eb0
2: chkimg::AppContext::loadImage() - 0x57d32cf0
3: internal_match() - 0x57d36de0
...
あと、imagesizeの方はエラー表示できるようにしていませんでした。修正します。
環境で問題があるなら大問題だろう pngアップすればいいんちゃうん
unityが使用されているサイトをchromeでmouseorgを用いてバックグラウンド操作させたいのですができません htmlのみやflash等ではできたのですがunityではできないのでしょうか idは以下のようにとっています public id = getid(get_active_win) //または("google chrome","Chrome_WidgetWin_1") mouseorg(GetCtlHnd(id, "chrome_RenderWidgetHostHWND"), morg_direct) また、mouseorgを使わずにフォアグラウンドで操作するときにページを更新させるためのsckey(id, kbd_f5)がどうもうまく動作しませんでした 更新させたいページを開いた状態でsckeyのみを動作させると更新されるのですが、 この動作の前に他の動作(btn等)を組み、一連の流れのなかでやろうとするとできませんでした kbd(vk_f5, click)でも試しましたが同様の結果となりました 何か解決策があれば教えていただけないでしょうか よろしくおねがいします
IEでは出来るの? 試してないならまずIEで試すべき なぜわざわざChromeでやるんだ
>>330 すみません書き忘れていました
IEでも試しましたが無理でした
たとえ今回のケースで何とかバックグラウンド操作に成功したとしても、 次から次へと新たな問題が発生するだけ。 素直にVMwareでOSごとバックグラウンドに沈めたまえw
333 :
名無しさん@お腹いっぱい。 :2014/12/05(金) 19:55:37.78 ID:Tan5Nyhh0
基本的な事で申し訳ないんですが・・・。 都度画像判定を使ってその画像の座標をクリックしていくスクリプトを作ってみたのですが 実行時にUWSC本体の再生ボタンから再生するとなぜか実行してすぐスクリプトが終了してしまいます。 画像判定を使いたいウィンドウをアクティブにしてからAlt+F1で再生すると正常に動作するようです。 ウィンドウのアクティブ状態が問題なのかと思って再生後アクティブにする様に以下 id = GETID("ウィンドウ名") IFB STATUS(id, ST_ICON) CTRLWIN(id, NORMAL) ENDIF IFB !STATUS(id, ST_ACTIVE) CTRLWIN(id, ACTIVATE) ENDIF というスクリプトを冒頭に入れてみたのですが改善されません。 msgboxで確かめてみると画像判定の部分まで正常に実行されているようです。 対象のウィンドウをアクティブにする事も問題なく出来ています。 どうすれば解決するでしょうか・・・?
違いはウィンドウがアクティブか非アクティブってだけなら 画像判定がはやすぎるんじゃない スリープ入れてみればいいんじゃないかな
335 :
名無しさん@お腹いっぱい。 :2014/12/05(金) 22:01:43.75 ID:Tan5Nyhh0
>>334 試してみました。スリープはダメな様です。
・UWSC再生ボタンから再生 → ×
・画像判定ウィンドウアクティブからAlt+F1 → ○
・UWSCウィンドウアクティブからAlt+F1 → ×
といった感じです・・・。
結局対象ウィンドウをアクティブにしてからAlt+F1で再生した場合でも
再生すればUWSCウィンドウが前面に出てきますし良く分からないです・・・。
対象画像のウィンドウがアクティブでない状態で取得した画像でも、同じ現象を再現するの?
337 :
名無しさん@お腹いっぱい。 :2014/12/05(金) 22:37:27.32 ID:Tan5Nyhh0
>>336 アクティブ、非アクティブを数枚ずつ用意してそれぞれ試してみましたが
全てで同様の症状のようです。
終了時にUWSC自体も終了させる方法ありますか? exitで終わるとUWSCは実行中なので、 これも一緒に終わらせられないかと考えています。
>>333 コード全体を見ないと回答しようがないな。
じゃなきゃ、コードの終了条件を全部言ってみ?
それを列挙してるうちに本人が真っ先に可能性思い当たるだろ。
>>338 HELPの起動オプション
340 :
名無しさん@お腹いっぱい。 :2014/12/06(土) 01:10:23.13 ID:2cmnMjY00
>>339 コード全体だと長くなってしまうのですが、
構造自体は単純で
IFB 画像判定
while true
(更にIFBの入れ子で画像判定+クリック処理多数、最深部?の最後の画像判定で1つだけexit)
wend
ENDIF
という構造なので何も起こらずにすぐ終了する場合が
最初の画像判定がうまくいかずに終了する場合しか思いつかない状態です。
ただし、前述の通り判定するウィンドウがアクティブになっている状態からのAlt+F1だけは正常動作します
IFBからENDIFまでをさらにも一つWhileで囲っちゃえば?
横に逸れるけど、簡単でいいからdebugフラグ変数とdebug loggerを作っておくんだよ 有料版はデバッガがあるんだっけ?
>>340 while true
id = GETID("ウィンドウ名")
IF STATUS(id, ST_ISID) THEN BREAK
sleep(0.5)
wend
//CTRLWIN, ACW, MOUSEORG
IFB 画像判定
while true
(更にIFBの入れ子で画像判定+クリック処理多数、最深部?の最後の画像判定で1つだけexit)
IF !STATUS(id, ST_ISID) THEN EXIT
wend
ENDIF
>>338 .uwsを関連付けしとけば本体の起動さえいらない
という回答だとダメなんだろうな…
リモートデスクトップ切断中にchkimg動かす方法ありませんか? 公式では無理とありましたが、実装されている方いれば、、
リモートデスクトップからさらにリモートデスクトップしてそこでchkimgすればいい 最初の接続を切っても動く
>>346 目からウロコです。勉強になりました。
こちらの方法を試してみます。
ありがとうございました!
if文の条件分岐がわけわからなくなってきた
既出すぎると思うが
http://i.imgur.com/aiwgfDA.jpg こういうふうにしたい
ifb chkimg(A)
A'
else
ifb chkimg(B)
B'
else
ifb chkimg(C)
C'
endif
endif
endif
これだとelse多重でエラーになる
for文でexitかbreakすればいいのか?
よくわからん
Dim a,b,c IFB A = 1 ELSE IFB B = 1 ELSE IFB C = 1 ELSE MSGBOX("テスト") ENDIF ENDIF ENDIF やってみたけど別に問題ないみたいよ? スペルミスとかその辺疑ってみたほうがよろしげ
>>349 ありゃ本当だ
なぜ出来ないと錯覚したのだろうか
お騒がせしました
>>348 elseのインデントがおかしいから、癖なら修正したほうがいいかも
ifb chkimg(A) A' else ifb chkimg(B) B' else ifb chkimg(C) C' endif endif endif こうだね
>>333-335 アイコン状態からならアニメーションが長いからスリープは1秒くらい必要になりますが
どれくらい入れてますか?
もちろん、アクティブにするのも多少の時間が必要になります。
長時間使っていないアプリは画面が表示されるようになるまでかなり長い時間が必要になる場合があるので
確実に動作させるならその状態をチェックするか長いスリープが必要になると思います。
UWSCのウィンドウが邪魔ならアクティブ状態を何度か変えるか非表示にするか、移動してしまえばいいと思います。
原因が分からないなら、CHKIMG のタイミングで SAVEIMG して画像を見てみればいいと思います。
>>353 procedure使えばなんとか
でもめんどくさそうだから変数使いなよ
>>353 exit とか break で分けるといいよ。
Dim 画像[] = "A.bmp", "B.bmp", "C.bmp",
for i = 0 to length(画像) - 1
repeat
画像[i] の処理
until true
next
ミスった 内側のループは1回で抜ける 条件にあえば break 2 で for ループを抜ける。 あわなければ次の画像を処理する。 関数でもいいけどポインタ使えないし あんまり深い階層になってもエラーになるだろうし。
>>355 変数ってあんまり使ったこと無いけどこんな感じでいいのかな?
for n = 1 to 10
if n = 1
ifb chkimg(A)
処理A
ifb chkimg(A')
処理A'
else
n = n + 1
endif
else
n = n + 1
endif
endif
if n = 2
(略)
next
一応イメージとしてはこんな感じなんだけど
http://i.imgur.com/frtaCax.jpg
>>358 Hantei = 0
IFB CHKIMG(A)
A'の処理
IFB CHKIMG(A')
Hantei = 1
ENDIF
ENDIF
IFB CHKIMG(B) and Hantei = 0
<略>
IFB CHKIMG(C) and Hantei = 0
<略>
AとA'に成功してHanteiが1になればBやCとは条件あわなくてスルーされるじゃない?
Dim 画像[] = "A.bmp", "B.bmp", "C.bmp", for i = 0 to length(画像) - 1 if chkimg(画像[i]) select 画像[i] case "a.bmp" aの処理 case "b.bmp" bの処理 case "c.bmp" cの処理 selend endif dim 次=true if chkimg(画像[i]) 次=false select 画像[i] case "a.bmp" aの処理 case "b.bmp" bの処理 case "c.bmp" cの処理 selend endif if 次=false exit endif next
Dim 画像[] = "A.bmp", "B.bmp", "C.bmp", for i = 0 to length(画像) - 1 if chkimg(画像[i]) select 画像[i] case "a.bmp" aの処理 case "b.bmp" bの処理 case "c.bmp" cの処理 selend else continue endif if chkimg(画像[i]) select 画像[i] case "a.bmp" aの処理 case "b.bmp" bの処理 case "c.bmp" cの処理 selend exit endif next こうか
>>348 ELSEIF 使えよ
ifb chkimg(A)
A'
elseif chkimg(B)
B'
elseif chkimg(C)
C'
endif
>>353 procedure chkABC()
isA = chkimg(A)
isAd = false
if isA then isAd=chkimg(Ad)
ifb isAd then
//
exit
endif
//!isA or (isA and !isAd) ⇒ !isAd
isB = chkimg(B)
isBd = false
//以下略
fend
× !isA or (isA and !isAd) ⇒ !isAd ○ isAd = isA and isX , !isA or (isA and !isAd) ⇒ !isA or !isX
>>353 こんなんどうでしょ
HASHTBL map
map["A.bmp"] = "A'.bmp"
map["A.bmp" + "FALSE"] = "B.bmp"
map["A'.bmp" + "FALSE"] = "B.bmp"
map["B.bmp"] = "B'.bmp"
map["B.bmp" + "FALSE"] = "C.bmp"
map["B'.bmp" + "FALSE"] = "C.bmp"
map["C.bmp"] = "C'.bmp"
map["C'.bmp"] = "略.bmp"
do( "A.bmp", map)
procedure do( image_name, map[])
ifb chkimg(image_name) then
select image_name
case "A.bmp"
//A処理
case "B.bmp"
//B処理
case "C.bmp"
//C処理
case "A'.bmp"
//A'処理
〜〜
selend
else
image_name = image_name + "FALSE"
endif
ifb map[image_name,HASH_EXISTS] then
do( map[image_name], map)
endif
fend
すまんインデント消えちゃったか 関数を再帰的に呼び出せばif文のネスト(入れ子)なんて無駄なことはいらなくなる for文すら必要ない 擬似リスト構造により機能追加が容易で、コード行数も少ないしたぶんこれが最強 どうよ
doってdo~whileとかで使われる予約後だから関数名に使うのはDOかと思う
DOかしてたわ hogehogeに脳内補完してください
>>365-366 いいですね〜
ちょっと工夫すれば外部ファイルから読み込むことも可能だし、
今度使わせていただきますよ
371 :
353 :2014/12/09(火) 19:49:26.96 ID:NtEFh7Ft0
いろんなやり方があるんだなあ 勉強になりました みんなありがとう とりあえず書いてもらったものは全部動かしてみるわ
裏マクロにしようと試みたのですが、画像(祝福)を認識しても、次のBTN(左クリック)が動作しません(T_T) ※裏マクロにしなければ正常に動作します。 fukidasi("「S」で開始") While !(GETKEYSTATE(VK_S)) sleep(0.1) Wend fukidasi() winid = getid(GET_ACTIVE_WIN) mouseorg(winid,2) sleep(1) FOR J = 1 TO 100 SLEEP(2) IFB CHKIMG("祝福.bmp",-1) fukidasi("祝福を認識しました") BTN(LEFT,CLICK,G_IMG_X+1,G_IMG_Y+1) SLEEP(1) 中略 NEXT mouseorg関数を使うのは初めてです。お知恵をお貸しくださいm(__)m
>>372 winid = getid(GET_ACTIVE_WIN) <- この行の意味分かってないよね
アクティブウィンドウのウィンドウIDを取得する…でしょか(・・?
直接クリック情報を送る場合はウィンドウIDじゃなく、クリックさせたいオブジェクト自体のハンドルが必要な場合がある 例えばサイトに埋め込まれてるFlashなど 取得方法はググれば出る 情報が少ないのでこれが原因かは知らん
uwscとは別の問題かも知れませんが、chkimgについて教えて下さい。 ある画像が出るまで待ち、その画像が出たらその座標をクリックする、 と言う単純なスクリプトを作りました。画像は150x80ピクセルのbmpファイルです。 自分のマシンでは特に問題無く動くのですが、これを別のマシンで実行すると 途中までの処理は同じように動くのですが、同じファイルでは画像を認識してくれません。 検索範囲を画面全体にしてもヒットしません。この別マシンで再度画像を取り直すと認識しました。 q1: ブラウザや環境設定等で色が変わるのは解るのですが、 デスクトップの設定は同じ32bit、ブラウザは同じ物同じバージョンでも OSやビデオカードが違うと色が変わるとかあるのでしょうか。 Photoshopでレイヤーにして「差の絶対値」にして重ねてみたり、 diff等で比較しても差は解りませんでした。 q2: chkimgのオプションで色幅と言うのが合ったので、これを使って 認識出来ないかと考えているのですが、記述方法がヘルプや検索では よく解りませんでした。単純に100とか200とか入れても認識しませんでした。 おわかりの方ご教授願います。
ビデオカードのドライバで色かわるよ。経験済。 800倍目視比較してみ、境界線を滑らかにするアンチエイリアス処理の違いのせいで 微妙な色の違いとか出ちゃってるから。 まぁ目視比較するにしても判定するにしても150x80じゃデカ過ぎ。 まぁ見た目でわからなくても対照実験してみて違うと判定されるのは仕方がない的な結論に至るよ。 逆に、VMwareなどで完全に同じ環境と保証されてる状況では、絶対と言っていいほど起こらない。 俺にとってはVMware環境はもはや「必須」を通り越して「基本」だね。 またフォントの違いとかも出るからね。 OSにインストールされたフォントの違い、異なるブラウザ間でのフォントの違い、 特に2バイト文字に顕著に発生するよ。 もちろんVMwareなどで完全に同じ環境と保証されてる状況では、絶対と言っていいほど起こらない。 俺にとってはVMware環境はもはや「必須」を通り越して「基本」だね。 あと比較画像が、例えば極端な話、単色の1本線だとか、 1ドットごとに大量にマッチが発生しうる時に想定した通りに判定してくれない。 色幅は一番緩くして「IMG_MSK_BGR4」 それより曖昧にマッチさせたかったらChkImgX使わせてもらうぐらいしかないね。
>>377 画像判定以外にもスクレイピングとかで環境によって正常動作しなかったのもVMware使えば良かったのか!!
参考にさせていただきます
VMwareは仮想化のオーバーヘッドがあるからGPU使うものは重くなる。 最近ではブラウザゲームもGPU使うから仮想化せずに済むならしないほうがいい。 と言う事で僕は画像をその都度キャプチャする方法を採ってみた。 キャプチャする座標が決まっててシーンが少なければ 表示されてる時に目視でユーザーがクリックして保存作業をする。
>>375 オブジェクト自体のハンドル…ググってみます
返信遅れましたがありがとうございます
>>379 ユーザが作業するのか
新しい画像はChkImgXとか使って判定して、保存するようにすれば自動化できるんじゃないか?
>>381 ChkImgX で検索できるんなら他の手段を使う理由って
完全一致で検索の高速化くらいしかないよね。
一部とは言え他人の著作物含めるのも気が引けるし
いろいろそろえるのも大変だし・・・
ChkImgX でも大きさまでは変えられないよね。
自分で保存すれば大きさ変わっても対応できるし
デザインが微妙に変更されても対応できる。
小さい方が軽くていいんだけど
例のポーカーは小さいと判別難しいから大きめでやってる人がいた。
最後はなんか小さいのに対応したらしいけど。
画質やサイズの設定は出来れば普段使ってる設定で出来る方が
使うときにめんどくさくなくてよい。
ユーザーが保存するのは他にもメリットがあって
ユーザーの環境で起きる現象が保存した画像によって分かることがある。
座標のズレとか
UWSCが画像をキャプチャ出来てないとか。
ttp://kanae.2ch.net/test/read.cgi/gameurawaza/1414313711/755 > 保存したビットマップは真っ黒。
PrintScreen でキャプチャしたのとはまた違うから
問題検証するときはUWSCで保存する必要がある。
糞コテいい加減に死ねよ
全体NGにダイヤ入れてない人まだいたんだ
点滅している画像のchkimgとかどうやるの?
chkimg連打でおk
>>385 だいたいの場合、点滅していなかったり変化のない部分の画像で判断できるから、
よく画面を観察する
>>365 があんまり理解できない
変数も自作関数も引数も知ったばかりだから飲み込むのに難儀してる
http://i.imgur.com/hfeQdMa.jpg 1.ハッシュ変数というのを使って、キーに値として文字列を代入
2.自作関数を定義して、1で代入した文字列を呼び出す
Q. hogehoge(image_name, map[])の部分がよくわからない
3.chkimg関数で画像識別
4.SELECT-SELEND関数で複数の場合を分岐
5.3で画像認識しなかった場合の処理
6.image_nameというキーが存在する場合、hogehoge関数は()内の引数を処理?
ここで再帰する?
こんな感じなのかな?
別に再帰にする必要はないよ。ループのほうが分かりやすい public HASHTBL map 省略(mapにデータを入れる) main_loop("A.bmp") // A.bmpから処理を開始 procedure main_loop(image_name) while true ifb chkimg(image_name) then select image_name case "A.bmp" //A処理 case "B.bmp" //B処理 case "C.bmp" //C処理 case "A'.bmp" //A'処理 〜〜 selend else image_name = image_name + "FALSE" endif ifb !map[image_name,HASH_EXISTS] then break // 次の状態が定義されていないので終了 endif image_name = map[image_name] fend mapは、A.bmpが見つかったら次はA'.bmpの画像判定をする(map["A.bmp"] = "A'.bmp") 見つからなかったらB.bmpの画像判定をする(map["A.bmp" + "FALSE"] = "B.bmp") っていうのを全部持っているデータ
あ、whileループが終わってなかった。最後あたり修正↓ image_name = map[image_name] wend fend
>>389 それいいね、map
めんどくさいif if if ifな仕様をそのままコードに出来るのね
横からだけどありがとう
repeat untilで特定の条件を満たすまで同じ処理を続けさせたいのですが、 この条件が一つではなく複数の場合どう記述したら良いでしょうか? repeat〜untilの中に二つ目以降の条件をif文として入れたとしても、そこからループ脱出は出来ないですよね?
393 :
392 :2014/12/12(金) 09:38:58.67 ID:yEgKzylS0
breakで行けました。お騒がせしました。
再起は重くなる場合があるけど、UWSCではどうなんだろうね
スタックオーバーフローがUWSCだとどうなるのかが気になる
プロセス多重起動だと60かそこらで非公式エラー出てたんで普通に意味不明エラーメッセで止まると思う。
1065回の再帰呼び出しでエラー出た EVAL だと208回
>>397 調査乙
以外と少ないな。まぁ普通のプログラムには十分すぎるけど
>>365 は末尾再帰だから最適化でループに変換できるけどUWSCはそんな最適化はしないだろうからループで書くべきだろうね
本人は「再帰で書いちゃってる俺スゲー」って思ってるだろうけど
自作関数内のCONTINUEを メイン関数のループ処理に適用する方法ってあるの?
>>399 パッと思いつくのは関数の戻り値でメイン関数内で判別させてContinueさせるくらい
俺はPROCEDUREは使わない!(キリッ) どんな関数でもFUNCTIONを使い、処理の成否を戻り値に返している。 つまりこう IF !myFuncHoge() THEN CONTINUE
間接的にCONTINUEを用いるのですか なるほど勉強になりました
403 :
227 :2014/12/18(木) 12:02:35.36 ID:Bh6qgjZp0
>>228 ものすっごい遅れたけどサンクス
これは使えそうだな
404 :
227 :2014/12/18(木) 12:15:27.12 ID:Bh6qgjZp0
って、なんかもっとすごいchkimgxとかいうの作ってくれた人いたんですね 使わせてもらいます ありがとう 超助かる
だれかグラブルのあらぶるっていうマクロうpしてくれ
スレ違いだから死んで
お前が死ね
408 :
名無しさん@お腹いっぱい。 :2014/12/19(金) 17:00:34.53 ID:XLZcXe/l0
フラッシュでUSWC使ってフォアグラウンドで操作してるんだけど、バックグラウンドはうまくいかないから パソコンのディスプレイの電源が切れたらどうやらchkimgがうまく動作しないんだよね 誰か対策わからね? FullFramerateWhenInvisible = 1を追加は試した。あとハードウェアアクセラレータ無効 ブラウザは火狐
>>408 パソコンのディスプレイの電源を切らない設定にする
410 :
名無しさん@お腹いっぱい。 :2014/12/19(金) 17:12:01.08 ID:XLZcXe/l0
>>409 電力喰うからそれはしたくない。あと先に言うと仮想化OSもしたくないメモリに負荷かかるから
それ系のなんかコードか、設定か知らない?
FlashのオブジェクトID取得して、直接送ればいいだけだろ
ぐぐってMozillaWindowClassとかでID取得してみたんだけど なんか中身に何も入ってないっぽいんだよねPRINT文とかで出力してみたんだけど オブジェクトID取得するためのパスがわからんから知ってるなら教えてけろ
お前が死ね
モニタの電源ONにする関数あるだろ それぐらい調べろよ
>>410 ディスプレイが一体型でないなら、設定ではOFFにしないようにして
物理スイッチでOFFにすればいい。
一体型は知らん。
暗くするだけでもそれなりに省エネなんじゃね?
ディスプレイの話を絡めてややこしく考えているけれど 単純にフォアグランドじゃないと動かないスクリプトってだけの話 でもって仮想化抜きでは安定した解決策は無いってのが最終的な答え
うちのLenovoのノートは Fn+F2 で液晶のバックライトが消えるんだけど 消した状態でもバックグラウンドで動くポーカーマクロは動いてたよ。
>>415 せんきゅう
os上でモニタの電源切らないようにして、物理電源切ったらうまく動作してるわ
てことはOS上のモニタoffによって描写が中途半端にはぶられたのか、中途半端には動いてたから。手動しかないんだろうなあ。とにかくせんくす
chkimgは画面が作成されないと動作しないから ソフトウェア的に画面OFFにしたり最小化したりすると OSが画面の作成をさぼってchkiimgが動作しなくなる
MOUSEORGを入れるとCHKIMGで画像認識が上手くできないのですが原因分かる人いませんか? MOUSEORG無しの状態ではウインドウ内の画像を100%認識に成功するのですが MOUSEORGを入れると認識確率が10%くらいになります 完全に認識しないならともかく、10回に1回くらいは無事みつけてくれます 原因分かる人いたら教えてください
認識対象ウィンドウのIDと MOUSEORGの引数で渡したウィンドウIDが 異なる以外に考えられまへんな 例えば認識したい画像が実はPOPUPウィンドウで表示されてるとかね
お尻の穴からウンチでちゃうんですが 解決策はありますか?
排泄対象ウィンコウのIDと ANUSORGの引数で渡したウィンコウIDが 異なる以外に考えられまへんな 例えば排泄したい便器が実はPOPUPウィンコウで詰まってるとかね
どの穴から出したいのか書いてくれないと助言不可だろよ もしくは別のモノが出る筈なのか? 質問意図明確にせんとプログラム以前の問題だぞ
>>423 レベルが高すぎる会話で僕にはまだ理解出来ません
僕に出来る事はCHECKUNKOの関数を使ってうんこの色を判定する事だけです
>>424 どの穴からも出したくはないんです
どうしても無理であれば鼻の穴からでも構いません
何・・このウンコスレ
427 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 11:41:18.89 ID:Gyt4M/+w0
失礼します。 画像認識が正常に動作しません。 OSはvistaです。 プリントスクリーンで画像を撮り、ペイントから余白とかなしで画像を24bit bmpで保存。 WHILE TRUE IF CHKIMG("画像.BMP") THEN BREAK WEND KBD(VK_U,CLICK,1000) これは例ですが、画面にその画像があるのにループから抜けれません。 大変困っています。3年ほど前はできていたのですが。
>>427 とりあえず3×3くらいの他の画像で試してみて
429 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 14:11:05.52 ID:Gyt4M/+w0
試してみました。 画像をいろいろ変えても動作しません。
>>427 タスクバーの時計とか含んでないですよね?
例のポーカーマクロやってて気が付いたんですが
Google 製 Chrome のウィンドウ枠が2重になってて
普通に画面に表示されているものと、UWSCでキャプチャするものが食い違ってたりするんですよね。
UWSCでキャプチャしたものとほかの方法でキャプチャしたものを比較してみないと。
431 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 18:04:47.57 ID:Gyt4M/+w0
キャプチャの方法をかえればいいってことですか?
>>431 SAVEIMGするだけだからとにかくやってみれば
あとループには必ず SLEEP 入れないと。
433 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 18:58:27.14 ID:Gyt4M/+w0
すいません。SAVEIMがなになのかわからないです。 スリープいれるのは動作重くなるからですか?
>>433 SAVEIMG()
とだけ書いた .uws ファイルを作って実行してください。
それが PrintScreen と同様の動作をします。
あとはペイントに張り付けて実際の画面と比較してみてください。
> スリープいれるのは動作重くなるからですか?
そうです。
435 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 20:28:18.02 ID:Gyt4M/+w0
>>434 了解です!
実行後、ペイントで貼りつけると、真っ白になりました。
printされてない?
ブラウザを開かずにphpに値を渡し、返り値を受け取る事って可能でしょうか?
438 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 20:53:05.30 ID:Gyt4M/+w0
昨日ダウンロードしたばかりです!
>>427 過去ログで散々言われてること:
AEROを切る。
対象ウィンドウIDを正しく取得し、MOUSEORGを行ってから、CHKIMGを行う。
CHKIMGのオプションには一番判定の甘い IMG_MSK_BGR4 を指定する。
440 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 23:10:21.77 ID:Gyt4M/+w0
>>439 エアロはきってあります!
IDって手動で記録したときに一番上にでるやつのことですかね?
MouseORGって何ですか。
Chikingのオプション変更方法ってどうやるのです?
質問多くてすみません。
ID:Gyt4M/+w0 は UWSCがちゃんと動いてないからスクリプトの話をしても無駄 まさか仮想マシンで動かしてるのかな?
443 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 23:23:12.05 ID:B87ekD500
444 :
名無しさん@お腹いっぱい。 :2014/12/22(月) 23:28:38.31 ID:Gyt4M/+w0
一応ボタン押したりの動作はするんです。 3年前できてたのに今できないってなんかあるのかな。
>>444 3年前のコードをそのまま動かしてみろよ
>>440 おまえ質問者としての最低限の要件を満たしてないよ。
447 :
名無しさん@お腹いっぱい。 :2014/12/23(火) 01:04:47.36 ID:MmHoMkXQ0
すいません。わかったことがあります。 さっきまでオンラインゲームを起動しており一度再起動して デスクトップにある適当なアイコンの画像を画像認識させると認識されました。 しかし再びオンラインゲームを起動させるとさっきまでできていたアイコンの 認識ができなくなりました。ちなみにゲームは窓化しております。
448 :
名無しさん@お腹いっぱい。 :2014/12/23(火) 01:17:43.67 ID:MmHoMkXQ0
ちなみにこのコードでやっています. WHILE TRUE IF CHKIMG("画像.BMP",0,1,1,1030,800) THEN BREAK WEND PRINT G_IMG_X + "," + G_IMG_Y
>>447 ゲームガードは画面キャプチャを妨害するから無理です。
450 :
名無しさん@お腹いっぱい。 :2014/12/23(火) 01:27:18.91 ID:MmHoMkXQ0
なんかゲーム側がなにかしてるっぽい・・・。
451 :
名無しさん@お腹いっぱい。 :2014/12/23(火) 01:27:58.16 ID:MmHoMkXQ0
ちなみにメイプルストーリーだけど、何か対策ないですかね。
nPro回避はスレチ。他所でやれ
>>451 回避できるけどその先どうにもできないでしょ。
ググったら出てくるのにそれすらできないなんて。
454 :
名無しさん@お腹いっぱい。 :2014/12/23(火) 17:43:01.79 ID:MmHoMkXQ0
64bitならできるみたいなこと書いてあって 僕のPCが32bitなんです。 bitはあげることできないですか?
もうUWSCと全く関係ない話になってるのは解るよね? なら該当するスレを探しに出かけなさいな
厨房に構うとかお前ら親切を通り越して馬鹿だな
何だ冬休みか早いねぇ
君子、教えてちゃんに近寄らず!
教えて下さい。クリスマスプレゼントにゲームソフトが欲しいです。 僕のプレステは32bitなんです。 64bitのNINTENDO64のソフトは動きますか?
UWSCが再生中の作業とは別に、自分もマウスキーボードを使って作業したいんだけど可能? スクリプト等とは無縁の人生だったのでhelpを見ながら試行錯誤してるミジンコなんだが、 「この単語を検索しろ」程度のヒントだけでも教えてもらえるとありがたい 最近UWSCを知ってから作業がかなり効率化して助かってるんだが、マウスカーソル等の主導権を 奪われなければ、並行してる手作業がもっと捗って助かるんよ
仮想化ってもうひとつOS買わないと駄目なの?
変数保存する方法とかってなんかある? 動作中のスクリプトの変数をファイルか何かに保存して 今度動かす時に読み込ませるみたいな
readini() writeini()
あるスクリプトで途中で不具合が発生して いつまでも終わらなくなってしまう場合があり そういう場合でもスクリプト終了だけはさせたいと思って居ます。 なので例えば開始から○分経ったら強制終了、みたいな事は可能でしょうか。 gettimeを使って経過時間を出すことは出来ましたが、 処理事に○秒経ったら強制終了、って記述を書いていくとかなり膨大な量になるのと それぞれにかかる時間が必ずしも読めないので、出来れば全体で○分経ったら、とひとくくりにしたいのです。 この経過時間に関わらず、並列処理みたいな記述って難しいのでしょうか。 どなたかアドバイスをお願い致します。
スレッドでカウントさせればいんじゃね
スレッド!これですか! うまい検索ワード見つからず悩んでいました。 やりたいことが出来そうです。ありがとうございました。 ついでに経過時間のカウント方法としては sleep(1)毎に変数+1とかやれば十分でしたね…。 それで度々すみません、起動したスレッドってメインのスレッド側から 停止させる方法ってありますか? メインが正常終了してもいつまでもカウント続けてるので メインが正常終了させたら止めたいのです。 何故か検索してもスレッド側からメインを止める話ばかりヒットするので…
>>470 俺もよくCLKITEMとかがデッドロックっぽくなって帰ってこないんでスレッド使ってるが、
あんたの発想は逆だよ。
原因箇所を特定せずに荒い考えでやるとメインを終了という手段に出る。
原因箇所のほうを別スレッドに隔離すんだよ。
メインには危険な行為をさせない。
メインが特攻隊スレッドを出撃させ、
一定時間以内に生還報告がなければ戦死扱いにして、
第2時特攻隊を出撃させる。
その際同時に、戦死スレッドが実は生きていた横井さんとなった場合のため、
横井さん宛に余計なことせずに自決せよコマンドを発行しておく。
ブラウザが相手の場合、ブラウザの方を強制終了させるとフリーズが解けるので、
DOSCMDでTASKKILLを使いターゲットブラウザを強制終了
言語仕様上スレッドの強制命令はないが、自決コマンドが送ってあるので、
横井さんスレッドがフリーズ解けて正気に戻った際にグローバル変数経由でそれ見て自決。
そうしないと複数のスレッドが同じリソースをCLKITEMしようとしたりしてトラブルになるからな。
あと組み込みなんかでよく使われる方法はWATCHDOGなんだけど、 これを擬似的に行う一つの方法として、 UWSCのメインルーチンでフローのチェックポイントごとに、 例えばImAlive.txtというファイルを新規作成する。 一方、UWSCではない別の何らかの常駐ツールでもって定期的にImAlive.txtを削除する。 またそのツールは、何回かImAlive.txtを見つけられなかった場合に、 UWSCの全てのプロセスを強制リブートさせる。 もし仮想マシン上で走らせているなら、 スタートアップにUWSCとWATCHDOG用ツールを仕込んでおき、 異常なら再起動させるとより確実。
>>470 メインが終了したら、マクロ自体要らないんだから
EXITEXITでいいんじゃないの?
474 :
470 :2014/12/28(日) 03:22:13.23 ID:8wl5TXyM0
グローバル変数を使ってメインの終了時にフラグを立てて スレッドで定期的にそれを見てフラグが立ってたら終了するようにしたらうまくいきました。 構造的には本来は逆にした方が良いみたいですね。 今後時間をかけててこ入れしたいと思います。
桁数の大きな数値を取り扱う時ってどうすればいいんですか A=5646546516515135151 B=6546549849846546546546 C=A*A*B*B*B print C これを計算させると 8.94547194841095E102 と表示されてしまい詳細が見えません
>>475 四倍精度、八倍精度などの外部処理系に丸投げするとか?
>>475 何桁かに分解してそれぞれ計算させて、「表示」の際に合成
fltNum = 8.94547194841095 * power(10, 102) print fltNum //print Format(fltNum, 50) だめ strNum = "" + fltNum posD = POS(".", strNum); PRINT "小数点位置=="+posD posE = POS("E", strNum); PRINT "指数記号位置=="+posE strMantissaPart = COPY(strNum, 1, posE - 1); print "仮数部=="+strMantissaPart numExponentPart = VAL(COPY(strNum, posE + 1, Length(strNum) - posE)); print "指数部=="+numExponentPart digitNumDecimalPart = Length(strMantissaPart) - posD; print "小数部桁数=="+digitNumDecimalPart digitNumZeroFilling = numExponentPart - digitNumDecimalPart; print "ゼロ桁数=="+digitNumZeroFilling IFB numExponentPart < 0 THEN PRINT "負の指数部は未対応" ELSE strMantissaPartInt = REPLACE(strMantissaPart, ".", "") strZeroFilling = REPT("0", digitNumZeroFilling) strFixPointNum = strMantissaPartInt + strZeroFilling PRINT strFixPointNum ENDIF FUNCTION REPT(char, numOfTimes) buf = "" FOR loop=0 TO numOfTimes buf = buf + char NEXT RESULT = buf FEND
え?そういうことじゃないって?w
そもそも言語仕様でBigintを扱えないから 計算結果を文字列で返すとかのライブラリじゃないと無理 作らないと無いんじゃね?
483 :
475 :2014/12/31(水) 18:55:02.78 ID:OuzlGTZO0
UWSCだと簡単には無理そうですね 481さんの任意精度計算の方向を調べてみます。 みんなどうもありがとう。
え?w だからさ、EXCELでいいじゃんw EXCEL上の計算結果をEXCEL上の文字列関数でテキストにした奴をUWSCで受け取るとかでいいじゃんw VBスタジオで .net 4.0 使って書けばそもそも何の問題もないけど… わざわざUWSCで何したいんだか…w
VBスタジオw 知ったかwww
LM 多倍長電卓 Ver2.17 (C)1999-2008 H.Takahashi 内部有効桁(Word):26 10進表示桁:100 スタートアップマクロ startup.lm を読み込みました >A=5646546516515135151 = 5646546516515135151. >B=6546549849846546546546 = 6546549849846546546546. >C=A*A*B*B*B = +8.94547 19484 10946 41868 61278 40446 09723 84130 17714 47148 73471 51920 57586 52423 35944 98619 87380 29137 40407 0360 e102 これコピペして文字列処理すればいいじゃん。 もっと真面目な用途ならC#とかで書けよ。
あけおめおはよう。 これで足りないかは目的による。 絶対に精度が必要ならそれは科学技術計算だろ。 んなもんUWSCでやるな。 理由も問わずに典型的な手段の目的化だわ。
ネトゲにはまっちゃってごめんなさいね。
だけど、業務に精通してないとユーザーが求めるものは絶対に作れないって主張する人々もいるんですよ。
実際にはかけられるお金が少ないので得られるものが少ないってだけなんだけどね。
自社のシステムは自社で作らないと成功しない 3 [転載禁止](c)2ch.net
ttp://kanae.2ch.net/test/read.cgi/prog/1416996537/ ところでリンク先に Office と連携する開発ツールが出てくるんだけど(僕の書き込みなんだけど)
UWSC と Office を連携するより、.net と Office を連携した方がいいよね。
まあ、UWSC の機能をちょっと補う程度ならいいと思うけどさ。
「VBAの行き詰まり」って UWSC に置き換えても成立するよね。
でも実際、使う側にとってもそれ以外のものを入れるってのは抵抗があるもんなんだよね。
組み合わせるといろいろできるけど
その組み合わせはできるだけ近く密接な方がいい。
◆evw/E7kww2が場所も空気も読まず誰も聞いてない事を ベラベラと主張していると思ったら単なるグラブル厨か 荒れる元凶なので読まずにスルーをしましょう
糞コテ氏ね
コテはクソってはっきりわかんだね
いやこれよく考えたら、科学系の用途ならむしろ こんなアホな有効桁数求めないよ。 こんな桁数求めるのは、科学ではなく数学の暗号理論だけだけじゃね? 最初の質問者、UWSC+暗号でこんな所に質問しに来て、 何しようとしてたのかなー(棒)
2進数にして文字列で処理すれば良いじゃない的なアナログ思考
textblock ps [bigint] $A=5646546516515135151 [bigint] $B=6546549849846546546546 [bigint] $C=$A*$A*$B*$B*$B $C endtextblock C = trim( powershell(ps) ) print C
クリックを認識してくれない病がやっと克服出来ました。 今までこれ↓で認識しない時がちょくちょくあったのを BTN(LEFT,CLICK,100,100,10) 過去ログでよく「長押しさせると認識する」と書かれていたので このように↓しても全く状況が変わらず BTN(LEFT,DOWN,100,100,10) BTN(LEFT,UP,100,100,200) こうしたら↓かなり状況が改善され BTN(LEFT,DOWN,100,100,10) BTN(LEFT,UP,100,100,200) SLEEP(0.1) 更にこうしたら↓ほぼクリック認識しない病はなくなりました。 BTN(LEFT,DOWN,100,100,100) BTN(LEFT,UP,100,100,200) SLEEP(0.2) なぜそうなるのか?については全く仕組みが解りません。 でもこれでDMMの某ゲームや某社の某ゲームは うちのメインPCと古いヘボノートどちらでも安定して動くようになりました。以上チラシの裏でした。
ゲーム民は皮が厚くて恥じらいが足りないから苦手だわ
>>498 DOWNからUPまでの時間が短いからダメなんだよ
はよメンテ終わらんかな
>>500 UPの時のウエイトを1000とか2000と記述したり
DOWNとUPの間にSLEEP入れても認識しないのは変わらなかったんですよ。
それがUPした後にSLEEPを入れたら急に認識率が上がりました。
単に長く押せば認識するってものでもないようです。
ゲームによるかも知れませんし、うちの環境だけの問題かも知れませんが。
>>501 グラブルは1秒DOWNが続いたらクリックとは認識しないね。
長すぎるからダメなんだよ
糞コテは去れ PROCEDURE myClick(cx, cy, kind=LEFT, lSec=0.5, lBeforeSec=0.1, lAfterSec=0.4) SLEEP(lBeforeSec) BTN(kind, Down, cx, cy) SLEEP(lSec) BTN(kind, Up, cx, cy) SLEEP(lAfterSec) FEND
グラブル厨とせっかく和解してスレの住み分けをしているのに ◆evw/E7kww2がまた来たせいで荒れ始めた こうした配慮の出来ない人間のせいで戦争は始まるんだね
505 :
名無しさん@お腹いっぱい。 :2015/01/05(月) 13:19:10.17 ID:N3ecgpcF0
さがりすぎてるんで age
UWSCで使えるDLL一覧ってどっかない? DLL_DEFの定義まであると楽でいいな
逆に使えないDLLなんて存在するのかよ
>>507 上で話題になってた多倍長で
BigInteger構造体 (System.Numerics.dll)
って使えるの?
やりかたおしえて
>>509 MSDN見て頑張るのはVBスタジオでいいです
>>511 ?型 [bigint] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。
発生場所 行:1 文字:57
型 [bigint] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。
発生場所 行:2 文字:9
型 [bigint] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。
発生場所 行:3 文字:9
>>512 BigIntegerって.net4以降だな
俺はWindows 8だから7以前は知らん
>>506 WindowsAPIと同じ、extern C で宣言された関数だけ呼び出せる。
>>508 かなり遠回りの使い方があるらしいけど、古い技術だから今どうなってるかはわからない。
指定の方法でコンパイルしたけどローカルだからか動かん。
Windows 8.1 の IE11 ではサポートされていませんと言われる。
拡張子HTAでもダメだった。
.Net の DLL を IE でオブジェクトとして使う方法。
ttp://d. ○hatena.○ne.○jp/language_and_engineering/20100705/p1
。。。さくら?
>>497 やってみた
すげえ
でも初回は結構時間かかる。
PowerShell上なら一瞬。
まあ、PowerShellの起動に時間がかかるんですけどね。
一応呼び出せるけど遅いし、PowerShellもUWSCより遅いから
速度が必要なら結局他言語が必要。
上記のIE組み込みの方が速度は速い。(動けば)
なんか計算結果の数字が長すぎてさくらが咲いてますよとか言われるッぽいッ
済みません駄文じゃなくてコードで語ってもらえますか? ググって引っかかってくる情報の断片なら間に合ってます
糞コテはNG推奨
すみません 素人なんですが、上でアップされているchkimgx関数ってどうやってuwscで使うんでしょうか。 ファイルの中身全部uwscに入れてみたり、中の文をコピーしたりして色々試したんですが、 うまいこと使えません。 助けてください(泣
質問です。 sleep(1〜10) みたいなことがやりたいんですがなるだけスマートな方法を教えていただけませんでしょうか?
スマートの定義から始めようか
もっさりしていないこと
じゃ、とりあえず今のもっさりとしたコードを提示してみよう
どういう意味だ? ・1から10秒の間でランダムに停止時間を変えたい ・条件によって停止時間を変更する処理を完結に表現したい ・・・とか色々考えられるが曖昧すぎて分からない いずれにしても別にCPU消費するわけでもないから もっさりする要素なんてどこにもないし分からないな
そもそもスマートの反対がもっさりってのが
random(数字) 使え k=1+random(9) sleep(k) とか 俺は素人だからこれぐらいしか知らん
変数に半角アルファベット文字を指定するにはどうしたら良いでしょうか? 例えば変数に nedan = (apple,100,108) と入れようとすると「変数appleが定義されていません」とエラーになってしまいます。 今は name = "apple" nedan = (name.100,108) という二度手間をやってるんですが、一発で指定する方法無いでしょうか?
え? 変数nameも変数nedanも半角アルファベット文字で定義されてるで… え? 二度手間のほうが何でエラーになら… え? 二重引用符で囲むことが判ってて何で… え? ナポリタンの類?
ブラウザゲーの簡単な作業をUWSCでやりたいんだけどマウス位置っていちいち自分で確かめてコード書いていくの? 記録でやってたらアホみたいな行数になるし遅くなるし
その質問と待ってる時間の間くらいにはマウス位置全部メモれるだろうなブラウザゲーなら
ショートカットキーで座標や周辺のスクショを記録保存する支援スクリプト作れば捗るよ
座標はUWSCの設定で 低レベル記録・余計な記録をしないON・クリップボードONにしてエディタにコピペ スクショはEasyShotのようなツール使用
>>533 記録とったなら、座標全部書いてあるだろうが
537 :
名無しさん@お腹いっぱい。 :2015/01/08(木) 21:43:04.92 ID:FK67FHmV0
グラブルスレが機能不全になってるのでこっちに書きます カジノポーカーマクロの作成お願いします
製作依頼は依頼スレへどうぞ
ブラウザゲーのゲーム上で文字が点滅している物や背景に何か流れているものを 認識してクリックしたいのですが、どうすればいいのでしょうか。 画像認識で何とかしようとしたのですが、上手く出来ませんでした。 関数や参考になるものがありましたら教えていただきたいです。
>>539 どういうコードを試して、どのようにできなかったかが無いと、なんとも言いようがない
>>540 WHILE (CHKIMG("tansak.bmp", 1, 0, 0, G_SCREEN_W, G_SCREEN_H, -1,IMG_MSK_BGR4) = False)
sleep(5)
IFB CHKIMG("TOP38.bmp")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x+50, y+50, 100)
SLEEP(3)
ENDIF
WEND
ある画像を認識クリックし特定の画像が画面内にあったらループから抜けるものを想定して作りました。
ですが、抜ける際の画像が◯の中に探索と書かれてその背景にエフェクトが流れている物で
認識してくれずループから抜けれません。
ですので、そのようなFlash?を認識出来る方法が知りたいです
>>541 画像を処理して変化の無い部分だけ切り取れ。
それでもダメなら実は背景以外にエフェクトがある可能性もある。
てか、ゲームマクロはスレ違いだから。
いちいち構うなよ
何だかんだ言っても答えてくれるツンデレ兄貴達多いけど 建前上ゲームとは言わない方が印象良いゾ 勿論最低限自分で試す&コード晒しは必須だ 範囲と検索画像でか杉内 俺もchkimgで高速で動く画像をクリックするコード作ったが 普通に認識したけドナー。100x50pxから16x2px位の画像で。 あとは背景画像の方を検索させて、それじゃなくなったら ループ脱出とかかな。
一応希望の動作をしているのですが間違いがある場合指摘して頂きたく書き込みました。 画像Aか画像Bが表示されるまでループする物を作ったのですが、以下の物で問題ないでしょうか? また、画像を3個に増やす場合はループ終了のある一行を増やして行けばOKでしょうか? REPEAT SLEEP(0.5) IF CHKIMG("画像A.bmp") Then break //ループ終了 UNTIL CHKIMG("画像B.bmp")
正常動作するコーディングに間違いなんてない! あるのは効率的か否かだけだ! おれなら REPEAT IF 画像A ELSEIF 画像B ELSEIF 追加画像 ENDIF UNTIL 強制終了フラグ(キー押下とか指定時間経過とか) 3つ以上になったら配列に画像名突っ込んでForループするけど
UWSCはプログラミングのとっかかりとしてはいいよね。無知でもそこそこの物が作れて、今は他の言語を勉強してるけど、ようやくUWSCでつくった機能を完全移植できた。
ド素人でもなんとなく動くのはでかい
動くのと動かないのじゃ雲泥の差だよな 日曜大工みたいな感覚でものがつくれる
>>547 UWSCの機能を完全移植できたならかなり凄いんだが、
UWSCで(547が)つくった機能の移植か…
uwsc.dllが欲しいわ
皆はエディタ何使ってるの? ずっとメモ帳でやってたから最近きつくなってきた 一部の記述を別のファイルにコピペしたり、 数字を変えたりしたいんだけどやりやすくなるものって無いかな?
visual studio フォントもいい感じでコーディングしやすいよ
pro版のデバッガそのまま使ってるわ
サクラエディタ タブ表示・強調・インデント これだけで結構違う
ネットでUWSC用の定義ファイルがあるサクラエディタ使ってたが、 VBもといビジュアルスタジオで強調表示やインテリなんたらが使えるなら 是非使いたい
pro版のデバッガがエディタとしても使えるの初めて知ったw でも複数ファイルにまたがる規模だとサクラのgrep抽出や 正規表現置き換えなどが必須なのでした…
>>554 俺もサクラ。これ便利だよな
俺の先輩達は秀丸派が多いな
サクラは優秀だが、サクラが優秀だとか無料だとかより、UWSCの定義ファイルがあるってのが一番大きい
>UWSCの定義ファイルがある マジかよ テンプレ入れてもいいんじゃないの? もしかしてどっかに書いてあるのかな
過去スレで散々話題になってたしさくらエディタ使うスレ民は当然やってて常識レベルだから書くまでも無い
MeryをUWSCのエディタとして使ってる。 uws形式で保存するだけ。
でも本当はVBスタジオで書きたい。 自分の定義した関数につけた///の後の凡例がポップアップで表示されるとか 最初の数文字でスコープ内の変数まで候補に上がって自動入力とか すごい便利過ぎて草
>>542 〜
>>544 時間が経ってしまい申し訳ない。
>>541 です。
スレ違いでしたか申し訳ない。
背景画像で動くことは出来たのですが、納得行かなかったので
色々試したらFlash操作というものが有り解決しました。
範囲指定はどのPCでもクローム、狐、IEを使って動くものを作っていますので
これでちょうどいいみたいです。
画像の方は試しにやったものですので、これから最適化していきます。
スレ違でスレ汚し申し訳ありませんでした。助かりました。
>>564 あってるよ
インポートしたら出てくるはず
インストーラでのインストールを自動化したいんですが、インストールの手順に入ると、uwscが全く動いてくれません。 記録してuwsのファイルを見てみると、インストールの動作を記録している部分だけごっそり消えてます。直接関数を編集してもだめです。 どうにかインストールの手順も自動化できないでしょうか
そう簡単にインストールが自動化できたら悪用し放題なので色々とあるんだろうな。 UWSCは当然、管理者権限で起動してるよな? インストーラの仕様によっては管理者向けサイレントインストールオプションがあればそれを使う。 無くても、低レベル関数+画像認識でやれば不可能ではないが、 環境による違いが剥き出しになってくるので面倒くさい。
>>571 管理者権限でやってます。インストーラを起動すると、そもそもBTNとか基礎的な関数すら動かなくなるんですよね。
まああきらめるしかないか。ありがとうございました。
画像認識の範囲を指定することって可能なんだな しらなかった
574 :
名無しさん@お腹いっぱい。 :2015/01/15(木) 23:27:33.97 ID:0V5xWiRk0
長時間(7〜8時間)動作を繰り返してるとuwsc自体が強制終了されるんだけど原因わかる人いる? ちなみにスクリプトは2つ繋げててスクリプトAで画像1が出たら処理1を実行後 callでスクリプトBを呼び出して画像2が出たら処理2実行後スクリプトAを呼び出すを延々ループ
とりえあえずcallしてるファイルの中身を関数化して何度もcallしないようにする
どんな構造にしているか知らんが CALLは最初に一括で読み込まれて展開される 毎回読み込まれて初期化されるわけじゃないと覚えておこう CALL先で変数の宣言や初期化の仕方やタイミングによってはバグの温床になる 恐らくスタックオーバーフローしているのでは?
>>574 100%スタックオーバーフロー
スクリプトAで画像1が出たら処理1を実行後
callでスクリプトBを呼び出して画像2が出たら処理2実行
ここでスクリプトAを呼び出すのではなく、上記をループするようにすればいい
相互にCALLしあってるのかw
これはひどいw
長ったらしく書くより細かいものをたくさん作ってcallで呼ぶ方が便利なんだよな ある意味チェックしやすいし プログラミング経験浅いと大抵そうなるよ
>>574 すごく雑に説明すれば、
While True
CALL A
Wend
Aの中身
処理
CALL B
Bの中身
処理
CALL
>>581 途中で送信してしまった
Bの中身
処理
CALLしないで終了
あほか サブルーチン専用ファイルを1回だけCALLして CALL ABC の代わりに関数呼べよ ここ数年何度言われたら判るんだ状態だわ
584 :
名無しさん@お腹いっぱい。 :2015/01/16(金) 08:26:14.77 ID:e4r1YhGf0
真面目に質問なんだが、グラブルのポーカーのコードの相談はどこでしたらいい? ここはスレチだとしたら誘導してもらえると助かる。 昨日uwscの存在を知って画像判定ができると分かりwktkが止まらん。 c#の経験はあるがuwscが初なのでサンプルを探してる。
587 :
名無しさん@お腹いっぱい。 :2015/01/16(金) 08:48:15.39 ID:e4r1YhGf0
surfaceでuwsc使ってる。 コンパネのディスプレイの設定で拡大率がデフォルトで150%になってて chkimgで取れた座標を使ってボタンをクリックさせてもうまくクリック出来ない…。 うまくクリックする為には座標をg_img_x / 1.5とかにすればうまく動いた。 何箇所でもこう書くのが嫌なんだけど解決策ないかな? 拡大率を100%に戻すというのは無しでw
f_img_x() みたいな関数作ってその中でg_img_x/1.5を返すようにするとか
ブラウザに対してmouseorgで直接信号を送るようにしているんですが、該当ウィンドウに他のウィンドウがかぶってると画像を認識してくれないのはなぜなんでしょうか?
chkimgで画像の座標を取ると-99999になります
非アクティブでも前面に出ていれば動作するんですが、クリックが送信されるとフォーカスを取られてしまいます
>>133 とほぼ同じ質問なんですけど答えが出てないようなのでお願いします
OSは7の64bitで、ブラウザはchromeです
IEはなぜかバグって起動できないので試せません
標準の描画コントロールじゃないからだろ フラッシュなら尚の事 隠されている時にどのように動作するかは相手次第
タスクバーのサムネイルはちゃんと更新されてるからDWMはちゃんと画像が取得できているのに、 なぜchkimgで取得できないのかってことだろう ウィンドウズの開発者に問い詰めたわー
いろいろググってハードウェアアクセラレーションの無効化と設定ファイルいじってFullFramerateWhenInvisible=1を追加してみたんですけどやっぱりダメでした あと、ウィンドウが前面に出ていてもmouseorgの第三引数がmorg_backだと動作しませんでした 諦めて常時最前面で使うしかないんでしょうか
>>594 morg_foreで対象ウィンドウを前面にしておけば動作するのでそれは関係なさそうです
他ウィンドウがかぶって一部分が隠れている場合に動かないので
>>595 俺も全く同じ症状(os,ブラウザ同一)で悩んでた。
ハードウェアアクセラレーションの無効化したと書いてあるが、
chromeの詳細設定で無効にした?
flash画面右クリで出てくる設定で無効にしても意味無かったよ。
chrome開発者「何?ウィンドウの影に隠れて見えてないのに描画してるだと?高速化と省エネのためにそういう無駄が発生しないよう改良しよう。サムネイルに渡す縮小画像だけ描画すればいいよね。」 他のソフト開発者「さすがgoogle、俺達も真似しよう。」 UWSCユーザー「」 ソフト開発者「知らんがな」
>>597 詳細設定→システムの所のチェックボックスのハードウェアアクセラレーションなんたらを消したら行けました
ありがとうございました
GUIでそのまま記録したものを等倍速で再生する方法ないですか?
if ary[0] … elseif ary[1] … elseif ary[2] … elseif ary[3] … endif こんな感じの構文をうまく短くする事って出来る? if elseifを使いたいからwhileとかで回して全判定はしたくないんだ
>>601 添字が全部違う上に if-elseif 縛りの時点でその書き方以外ないと思うけど
何がしたいのか分からんから何とも言えんな
603 :
601 :2015/01/18(日) 00:29:12.77 ID:V3DOXyGu0
自己解決 よく考えたらスッキリまとめれたわ
ヽ(・ω・)/ズコー
605 :
601 :2015/01/18(日) 00:43:22.91 ID:V3DOXyGu0
なんかすまん それじゃ代わりに悩んでいる事を質問するんだけど キーを押下した瞬間を判定したいんだ getkeystateだと押している間はずっと判定されるからさ 現状ではフラグを作って管理しているけど、すごく面倒なコードになっている スマートなコードや関数等教えてください><
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 関数を使う こんな感じではどうだろうか
>>606 実際にコードを試したわけじゃないけど、この場合watch_keyスレッドのlast_key_strokeが更新されるタイミングによっては
trigger_key関数のlast_key_strokeがtrueになって最初の押下判定に失敗する事ありそうだけど、そんな事ないのかな?
>>607 自分で試した時はならなかったけど watch_key の sleep は 0.01 ぐらいにしたほうがいいのかも?
そこら辺は自分の目で確かめてくれ
そもそもRTOSの割り込みでも使わん限り、押した「瞬間」は補足できない。
要件によってはSETHOTKEYで済むな
mouseorg でバックグラウンド動作にしててもクリックを送信するとフォーカス取られるんだけど フォーカスが移らないようにってできない?
クリックイベントを受信した相手側の挙動だからなぁ〜 散々言われているが 仮想化してその中で最前面で動作させ その仮想環境をバックグラウンドで動作させるのが一番安定する
みんな仮想化には何使ってる?俺はWin8のクライアントHyper-V 裏でサービスみたいに動いてるから表のユーザがログアウトしても関係なく動いてくれるのと、 動的メモリ管理で複数インスタンス動かしてもメモリが圧迫されないのが気に入ってる ただGPUが使えないからAeroが動かないのがネックだな
仮想PC使ったことないけど導入面倒臭そう OSも余ってるのないし ブラゲのマクロのためにわざわざ導入するのも面倒だしフォーカス取られるのは我慢するか(´・ω・`)
パソコン操作を自動化したくてぐぐったら これとhimacroEXっていうのが出てきたんだけど どっちがいいっすか?
himacroEX
>>615 クソ簡単に導入できるけど止めたほうがいいよ
[Ver5.1.0] IE関連の関数にて マルチフレームでの操作が NGなのを修正(KB3025390対策) 文字関連の関数にて サロゲートペア1文字が カウント2されるのを 1に変更 サロゲートペア1文字を 2でカウントする LENGTHS関数を付けた POWERSHELL関数にて \文字がエスケープシーケンスされるのを修正 STATUS関数の ST_MONITORの値が MONITOR関数と符合してなかったのを修正 Pro版: CREATEFORM関数にて フォームを 2つまで作れるようにした RecIE: マルチフレームにて 記録できないパターンがあったのを修正
拾ったものになるんですがUWSCに読み込んでスタートを押すと 変数: INIF が定義されていません 14行目: TITL = READINI("Config","titl",INIF) という表示が出て動いてくれません。 UWSファイルをテキストパッドで開いたところ文字化けしていて14行目も確認出来ないのですが これはもう諦めるしかないのでしょうか。
>>621 文字化けしてるんだから、編集不可
諦めるしかない
>>622 そうですか・・・。
ありがとうございます。
プログラムのアンインストールをシンプルにする方法はないでしょうか。 現状appwiz.cplのショートカットをデスクトップに作ってそれを開いて、普通にクリックしてってアンインストールしています。 問題は、アンインストールするプログラムを選択する時にBTN関数で座標指定しているので、新しくプログラムをインストールすると位置が変わってしまい、またマクロを作り直さないといけなくなってしまいます。
>>624 id = EXEC("control appwiz.cpl")
CTRLWIN(id, ACTIVATE)
REPEAT
SLEEP(0.1)
UNTIL CLKITEM(id, "プログラム名", CLK_LISTVIEW or CLK_DBLCLK, TRUE)
>>625 ありがとうございます。帰ったらやってみます
アンインストールってマクロ化が必要なほど多用する?
愚問
試用期間終わったら再度インストとか変わった使い方なんだろうけど、普通なら必要じゃないだろうけど その人に取っては必要な物だったんだろうね
不具合の検証とか、バカみたいに繰り返すことある
レジストリは reg ファイル使って削除した後に、 インストールファイルはDELコマンドで削除 全部バッチファイルに書けてダブルクリック1回でアンインストールできるよ サービス登録だのDLLだのも調べれば同様の方法がある
どうせどっかのゲームのBOTマクロに仕込みたかっただけだろ
今時、OSなら自動インストールできるような機能ついてるよね
仮想環境にインストールしてポイするだけで良いと…
win8評価版だけど仮想化してマクロ動かしてみた 便利やな こうやってテキスト入力しててもフォーカスを取られないのが良い
AとBの2つのパソコンがあって、Aで手順x→y, 終わったらyでできた文書を共有フォルダに送り、Bでα→βの手順を実行し、またxに戻ってくるループを作りたいと思っています。 それで質問なのですが、Bのパソコンが共有フォルダに文書をうけとるまで待機するような記述の仕方ってどのようにしたらいいでしょうか。
個人的にはAスクリプトとBスクリプトは分けてそれぞれ一括処理する方法が良いと思うよ (面倒なポイントその1) AとBそれぞれにインストールされている環境でしか出来ない処理だとしたら 一つのスクリプトでやろうとするとリモートデスクトップ等で操作する局面が発生する (面倒なポイントその2) ファイルのコピーや移動の終了検知はOS側が勝手に並行動作しちゃうので地味に面倒な処理です 一つのスクリプトでやろうとするとスレッド化による並行動作で操作する局面が発生する 共有フォルダを監視するスレッドまたはイベントを用意して対処する方法もありますが・・・ (興味があるなら「UWSC フォルダ監視」等で検索して)
つかフォルダ監視というそのものズバリのフリーソフトがあるな。 ファイルの有無をトリガーに何かを実行させるフリーソフトがそれかどうか忘れたが、 探せばあるにはあったはずだよ。 もちろんUWSCでもVBSでもVisualStudioでも何でも書けば出来るけど。 UWSCの本来の存在理由を考えれば、まずツール探すのをお勧めするな。
あのソフトすぐバグるんだよ
最初から共有フォルダで作業したらええんちゃうの
>>636 While True
IF GETDIR(共有フォルダ\B,受信ファイル) = 1 Then Break
Sleep(1)
Wend
α→β手順
加工したデータを共有フォルダ\Aに書き込み共有フォルダ\Bの元データを削除
こんな感じで行けるんでないでしょうか?
それ受信中に動作開始する可能性あるぜよ
フェイルセーフは当人に考えてもらう方針で
ありがとうございました。参考にしてマクロ作ります!
645 :
名無しさん@お腹いっぱい。 :2015/01/27(火) 16:06:43.60 ID: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のスリープやディスプレイの停止、スクリーンセーバーも全て切っています。 何か原因のヒントとかくれませんでしょうか。
スタックオーバーフローエラーですな。 正しいやり方は、 while 続行条件 hoge1() hoge2() hoge3() wend とこの程度の基本が判らないのも、 最初に手を付けたプログラミング言語が UWSCみたいなマイナーで HELPが不親切なスクリプトだからなんだろうね。
>>645 hoge2を読んだらexitしないとダメ
ついでに言うなら関数内から関数を呼ぶんじゃなくて
HOGE関数では画像を見つけて規定処理が終わればEXITするようにして
Main関数のようなものを作って
HOGE1()
HOGE2()
HOGE3()
のように並べるほうがいいと思う
やりたいことがいまいち判らんけどこういうことか? 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で無くてはならないし、ファイル名は""で括って文字列として指定する必要がある。
650 :
名無しさん@お腹いっぱい。 :2015/01/27(火) 17:26:50.96 ID:l+w+iP+N0
>>646-648 やりたいことは、Aをクリック → 画面遷移 → Bをクリック → 画面遷移・・・Cをクリック→Aをクリック
という一連の動作をループすることでした。
ネットに落ちているソースを見たりしながらやっているのですが、基本から間違っていたみたいですね・・・
いただいたソースを見ながら、基本構造から直してみます。
ありがとうございます!
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 詳細は自分で考えてね
>>612 それがフラッシュで動作してるのかは分からんけど
もしそうならハードウェアアクセラレーションを有効化チェックを外してウィンドウを再起動すれば行ける
クロームでしか試してないけどな
653 :
名無しさん@お腹いっぱい。 :2015/01/28(水) 17:16:25.39 ID:eK2T9EFP0
UWSCのSENDSTR関数を使いたいと思っているのですが 文字数が100文字とかになるとものすごく時間がかかってしまいます コピペのように一瞬でペーストする方法などないものでしょうか?
>>653 クリップボードに文字列を入れておいて、
キー操作でペーストする
うまく動かない 動きはするが使い物にならない と質問する奴は大抵ソースコードを見せたがらない その結果、いつまでたっても成長しない
>>653 既に答え出てますが
初心者でも判るように書いて置きます
//文字をコピペで入力する方法
SENDSTR(0, "入力したい文章")
SCKEY(id, VK_CTRL, VK_V)
657 :
名無しさん@お腹いっぱい。 :2015/01/30(金) 01:08:09.66 ID:9dkz127U0
例えば、一連の操作は同じで1ヶ所だけ座標を変えたい場合に、 デスクトップに座標値変更用のボックスを用意して簡単に座標を変更 できるようにしたいのですが、どのようにやれば良いですか?
659 :
名無しさん@お腹いっぱい。 :2015/01/30(金) 01:58:32.97 ID:9dkz127U0
>>658 さんありがとうございます。
私も今input関数について調べていました。""これを使ってしまうと
文字としての戻り値になりませんか?そもそも座標の値は数値なのか文字として
UWSCで認識されるかわかりませんが、間違っていたらすいません
>>659 そもそも、UWSCの変数に型はない
半角数字を入力すれば数字
それ以外なら文字列で処理されることが多い
入力したいものを試してみたらいい
座標A = INPUT("座標A?")
座標B = INPUT("座標B?")
PRINT 座標A + 座標B
THREAD ChangeXY()
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 いちいち入力するよりボタンひとつの方が楽でない?
ソースを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
>>663 // 文字のデコード処理
戻値 = DECODE( 文字列, 変換指定 )
>>664 どうもありがとうございます
何故かそれでは出来ないようです
他に方法はありますか?
これはUWSCの知識というより microsoft.xmlhttp の使い方的なアレなんで 「microsoft.xmlhttp 文字化け」で検索してみるといいよ
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 と自分で考えたのですが、もっと簡潔に表したいと思い試行錯誤したもののできなかったので教えてください
MOD使え
>>667 for(int n=0:n<6:n++){
}
for文使う。
>>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
あ、自己レス A+1 しないとアカンね For x = 1 to 299 n = int(x / 50) A = x-50*n+1 Print "x["+x+"]-50*n["+n+"]="+A Next
672 :
667 :2015/02/03(火) 05:51:32.60 ID:5IZddXMh0
>>670 さんのものでできました
教えていただきありがとうございました
朝ごはん食べたらアホレスしてるのに気がついた 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
>>674 >>667 IFB X>0 AND X<301 THEN
A = INT( (X-1) / 50 )
ELSE
A = ERR_VALUE
ENDIF
>>673 お陰様で、Rocket Mouseを全然使わなくなりました!
678 :
名無しさん@お腹いっぱい。 :2015/02/04(水) 02:21:11.65 ID: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の管理者権限や互換性も変えたり、コマンドをバッチ化して呼び出ししてみたりと いろいろ試したのですが、うまくいかず・・・ 環境周りがおかしそうなのですが、考えられる原因の指摘をしていただけるとありがたいです。
バッチファイルの中に2行書いて、 doscmdでそのバッチファイルを実行したらどうなる?
680 :
名無しさん@お腹いっぱい。 :2015/02/04(水) 03:00:48.13 ID:ICAinnSu0
>>679 結果は同様で、ウィンドウのみが表示されますね
explorer.batファイルを作成して↓を実行してみました
doscmd("xxxxx\explorer.bat")
>>678 OSもuwscも同じバージョンだけどちゃんとdoscmd関数だけでうまくいくわ
>doscmd("taskkill /f /im explorer.exe")
これの戻り値を見て標準出力はどうなってる?
何らかの要因でtaskkillが終わる前にexplorer.exeが呼ばれているのかな
あー分かった 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ビットエクスプローラを直接呼び出す
683 :
678 :2015/02/04(水) 19:38:52.43 ID:ICAinnSu0
>>682 おお!それが原因でした!
おっしゃるとおり64bitPCです
64bit用と32bit用の実行ファイルで挙動が違うとは・・・
フルパスで試したときもわざわざsystem32配下のexe叩いたりしてました・・・
ありがとうございました
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%くらいの確率で真っ黒な画像が保存されます。ブラウザを前面に出しても出さなくても結果は同じです スクリーン全体にすれば失敗はありません
getid後にid<>-1チェックを入れ、 mouseorgとacwしてからsleepで待ち、 その後やっとsaveimg ぐらいはしてから悩んでね
いっそ真っ暗な画像を用意しておいて 比較一致したらキャプチャをやり直すアルゴリズムにしたら?
たぶんクローム使いなんでしょ クロームだと解決方法がないと思ってるんだけど解決方法あるのかな? ブラウザーをIEに変えるのが一番簡単な解決方法だけど、クロームでの解決方法が知りたいよな
uwsc saveimg 真っ黒 でググれば何個か出てくるけど試してみた? IEやChromeで試してみたが俺の環境ではふつうに取れたよ
689 :
684 :2015/02/05(木) 09:14:45.43 ID:bmA9JyZT0
色々ありがとうございます。ACW入れて試しましたがchromeとoperaでは駄目なままでした IEでは上のメニューは保存できましたがメーン部分が真っ黒になるパターン。。 XPなのでAeroは関係ないですし、ハードウェアなんたらのチェックは外してます ループ中に成功する時と失敗する時がランダムに発生するのがよく分からない
690 :
名無しさん@お腹いっぱい。 :2015/02/05(木) 12:33:54.32 ID:HTOGka7B0
uwscを使って自動でゲームを動かしています。 最近、頻繁にページの読み込み失敗でブラウザがフリーズしてしまうのですが、(その度にブラウザを再起動)フリーズしたら音を鳴らすとかって出来ますか?
フリーズしたら再起動するスクリプト組めば良くね?
>>689 >ハードウェアなんたらのチェックは外してます
これブラウザのチェック?
XPなら画面のプロパティ→詳細→トラブルシューティング無効試してみては
画面に特定の数字が出たら特定の処理に進む、
というのをやりたいのですが、その現れる数字が静止しておらず
ピコンとポップアップするような動きをする為、
chkimgでなかなか捉えられません。
画像を小さくする、検索範囲を縮める、以外に何か方法はありますでしょうか。
https://vine.co/v/OFnr6rVi3ba
こんなもん無理 諦めろ
なんかのゲームならメモリ覗いた方が早そう
697 :
名無しさん@お腹いっぱい。 :2015/02/06(金) 11:03:48.00 ID:K6agUDp30
>>691 この画像(フリーズ中の画像)を見つけたら再起動するってスクリプトはどう書けばいいですか?
ifb chkimg("フリーズ中の画像.bmp")
ifb chkimg("ブラウザの閉じるのバッテン.bmp") Than BTN(LEFT, CLICK, x+2, y+2)
このあと、スリープ入れて
Thanを使ってブラウザのアイコンをダブルクリックさせるようにしてみましたが、ダブルクリックさせても起動する時としない時があるので行き詰まってしまいました。
ちなみにブラウザはironです。
>>697 アプリ起動ならexecかdoscmd使った方が確実
起動確認はgetidの戻り値を確認して
起動してなければwhileやforでループさせて再実行させる
>>697 IFB CHKIMG("フリーズ中の画像.bmp")
IF CHKIMG("ブラウザの閉じるのバッテン.bmp") Than BTN(LEFT,CLICK,G_IMG_X+2,G_IMG_Y+2)
SLEEP(20)
WHILE TRUE
//ブラウザー起動操作を作成して挿入
SLEEP(20)
IF CHKIMG("ブラウザが起動した事を確認.bmp") Than break //ループ終了
WEND
ENDIF
700 :
名無しさん@お腹いっぱい。 :2015/02/06(金) 15:13:36.40 ID:K6agUDp30
>>698 >>699 有難うございます。
exec入れたら上手くいかなかったので、ブラウザが立ち上がったら隠れる場所のデスクトップの壁紙を適当な大きさに切り取りbmpにして、ブラウザ閉じた後にそこをクリックさせてからスリープ、ブラウザアイコンダブルクリックをループさせたら上手くいきました。
(起動するまで1分置きにブラウザアイコンをダブルクリックしてくれる)
あまりスマートな式ではないですが、当面これで凌げそうです。
701 :
名無しさん@お腹いっぱい。 :2015/02/07(土) 07:23:09.57 ID:ZYFlW2y70
chkimgで画像認識が失敗することがあります。 例えば、画像Aを認識してくれなくて、途中で自動化が止まってしまいます。 ですが、止まっているのに気が付いて手動でいちど前のページに戻ったり、または違うページ等に行ったりしてからだと、さっき認識してくれなかった画像Aが出てきても今度はちゃんと認識してくれます。 これって原因は何なんでしょうか? またどうすれば改善されますか? ちょいちょい画像認識してくれなくて止まってしまうので困ってます。
画像が微妙に変わってるのでは? 止まった時に単純にprint chkimg一行書いてチェックしてみる マッチしないならそれ用の画像作るとか、画像サイズ狭めるとか マッチするならそもそも本当に処理がそこで止まってるのか確認した方がいい 分岐やループごとにprintでログ吐いてみるとか
先のステップに進んでてそこの画像をチェックしてるってパターンだろうと思うよ
>>701 前後のループしている場所に設置してみるとどこで止まってる
か確認できます
//(あれば動作停止)
IFB CHKIMG("認識してくれないと思ってる画像.bmp")
PRINT ("設置した場所が判るコメント")
EXITEXIT//直ちにプログラムを終了
ENDIF
>>704 最新バージョンですか?
ckm関数修正されてるけど
>>705 最新でやってるけど、何かおかしかった?
おかしい箇所指摘して貰えると助かる
708 :
名無しさん@お腹いっぱい。 :2015/02/07(土) 15:07:33.33 ID:h9dUxcAl0
701です。 一定時間ページ更新がなければブラウザ閉じるってスクリプトは書けますか? それが出来れば全て解決する氣がします。 あと、キャプチャする画像はサイズが小さければ小さいほど精度があがるの? ずっと調子良く動いてたのに、クロームバージョンアップしてから、調子悪くて>_<
>>708 画像系機能だけで作るなら
画面キャプチャを一定時間ごとに保存
何枚か保存後、キャプチャ画像全てと現在を比較して、同じなら×を押す
>>708 小さい方がいい理由は、
周りに影響してエッジ補正がかかってしまう画像をチェックしたい場合
出来るだけ小さくした方がヒットしやすいから
>>475 >>483 >>487 > ネトゲとかにハマる奴は死ぬまで手段を目的化して何も成し得ずに氏ぬ。
>>491 > UWSC と Office を連携するより、.net と Office を連携した方がいいよね。
>>492-494 > 糞コテ氏ね
>>508 > BigInteger構造体 (System.Numerics.dll) って使えるの?
>>512 > 型 [bigint] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。
>>516 > なんか計算結果の数字が長すぎてさくらが咲いてますよとか言われるッぽいッ
>>517 > 済みません駄文じゃなくてコードで語ってもらえますか?
> ググって引っかかってくる情報の断片なら間に合ってます
この流れで
>>497 の計算結果を張ろうとして今までずっと規制食らってた。
糞コテは規制されとけ スレに寄生すんな
誰も聞いてもいないし関心もない過去の話を持ちだして
意味のないレスをするんだろうな
「自分は規制されていて貼れなかったが、もし規制されていなければ
こんな素晴らしいレスが出来る有能な人間です」
とでも他人に思ってもらえるとでも勘違いしてんのかな
ちゃんと書かないと理解できないようなので書いておく
>この流れで
>>497 の計算結果を張ろうとして今までずっと規制食らってた。
そんな事はお前以外誰も興味がないしお前が書かなければ誰も気が付かなかった
お前が価値のある行為だと考えても、お前以外の全世界の人間にとっては邪魔以外の何物でもない
お前以外の全世界の人間が不要であると考えている事はこの掲示板に書いてはいけない
714 :
◆evw/E7kww2 :2015/02/08(日) 07:16:00.18 ID:5jrUKTqo0
書いてはいけないことを書くとこうなります > 713 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
kbdでの数字入力を1から1つずつ値を進めて入力させていきたいのですが、 例えばforで用いるようなi = 0 to 10 のように簡単にあらわせる方法はないでしょうか イメージとしてはprint kbd(vk_1, clic) to print kbd(vk_10, click)という感じです 10までならまだしも、3桁や4桁になるとさすがに心が折れるので何かありましたら教えてください
>>715 a=0
For a = 1 to 50000
print "kbd(vk_" +a+ ", clic)"
SLEEP(1)
next
>>715 数字は 0 から 9 までしかないですよ。
あとは桁ごとにループですね。
それを一旦簡単な表記で入力して自動的に変換する関数を自作したらいい。
文字コードは数値であり連番になっているので
vk_0 + 数値一桁
または
vk_0 + ASCB(数字1文字) - ASCB("0")
とすると
vk_0 から vk_9 まで表現できます。
桁数は文字列で1文字ずつやってもいいし、LOGN(10, 数値) で求めてもいい。
Procedure 数値入力範囲指定( 開始, 終了 )
for 数値 = 開始 to 終了
数値入力( 数値 )
next
FEnd
VK_0 と ASCB("0") は同じだっけ
718 :
名無しさん@お腹いっぱい。 :2015/02/08(日) 10:06:12.62 ID:ccgXZD1N0
>>715 これで表示させた後、UWSCファイルにコピペして使いたいんじゃないの?
VK_10以上はそんな仮想キーないから無意味だけど
↓みたいなことやりたいだけなのでは?
for i = 1 to 10
sendstr(getId("ウィンドウタイトル"), i)
next
720 :
715 :2015/02/08(日) 10:51:18.09 ID:NYUgv/5a0
すみませんvkは一桁までしかだめでしたね
最初は
>>716 さんのように考えたのですが、ここでひっかかっていたことを忘れていました
>>717 ありがとうございます。しかし今の自分の知識では理解できなかったので調べながらやってみます
>>718 ある動作をさせてつくったファイルを保存するときに、ファイル名を固定+数字名(番目)として保存をさせるために必要でした
1回目の動作で○○1.拡張子、2回目で○○2.拡張子〜〜〜100回目で○○100.拡張子という感じです
「kbdでの数字入力を1から1つずつ値を進めて入力させていきたい」の仕様が意味わからんけど とりあえずそのまま使うと、 WHILE TRUE FOR i=0 TO 9 PRINT KBD(VK_0 + i, CLICK) SLEEP(1) NEXT WEND まぁ仮にキーの順番がコードの連番じゃなくても、配列を使えば回せるけどね DIM keysSequenceAarray[] = VK_1, VK_3, VK_6, VK_0, VK_A WHILE TRUE FOR idx=0 TO RESIZE(keysSequenceAarray) PRINT KBD(keysSequenceAarray[idx], CLICK) SLEEP(1) NEXT WEND 2桁3桁があるということは、10以降は 1, 0, 1, 1, 1, 2, …という数列になるのかな? まさかINPUT関数で十分だったってことはないよな…
> ある動作をさせてつくったファイルを保存するときに、ファイル名を固定+数字名(番目)として保存をさせるために必要でした > 1回目の動作で○○1.拡張子、2回目で○○2.拡張子〜〜〜100回目で○○100.拡張子という感じです その内容じゃKBD関数も仮想キーコードも全く関係ないんだがいいのか? ちゃんと仕様を厳密に書ききれよ。
n_cnt = 0 // 周回カウント while true n_cnt = n + 1 動作A click(座標x , 座標y) // ファイルを保存をクリック kbd(vk_あ, click, 200) // ファイル固定名入力 kbd(vk_い, click, 200) kbd(vk_う, click, 200) if n = 1 kbd(vk_1, click, 200) elseif n = 2 kbd(vk_2, click, 200) 省略 elseif n = 100 kbd(vk_1, click, 200) kbd(vk_0, click, 200) kbd(vk_0, click, 200) endif wend 自作したclick関数はただ座標をclickさせるだけというものです ファイル保存のショートカットが使用できないのでクリックで行っています とりあえず普段自分がするような流れを作ればいいと思いkbd関数を用いていますが、他に何かいいものがあるのでしょうか
724 :
名無しさん@お腹いっぱい。 :2015/02/08(日) 11:26:29.55 ID:ccgXZD1N0
>>723 ↓のようにsendstrが使えないものなの?
sendstr(getId("保存ウィンドウのタイトル"), "あいう" + n)
>>720 >>716 の動作は
>>715 の目的をプリントする事だとする記述です。
ファイルネームを変更するのが目的なら中身を変えるだけです。
aと言う変数に回数が格納されていてその変数を+a+と書く事で呼べ出せます
変数をggってみると多少判るかもです
a=0
For a = 1 to 50000
//ファイル名入力までの動作を記述
SENDSTR(0, "ファイル"+a+)
SCKEY(id, VK_CTRL, VK_V)
SLEEP(1)
next
726 :
名無しさん@お腹いっぱい。 :2015/02/08(日) 11:45:32.90 ID:ccgXZD1N0
>>723 数字を引数にすると、kbdで入力する関数作ってみた
keyNum(1234)
procedure keyNum(num)
if num <= 0 then exit
keyNum(int(num / 10))
kbd(VK_0 + (num mod 10), click, 200)
fend
>>725 のIDの記述が判らんって事ならこちらで
a=0
For a = 1 to 50000
//ファイル名入力までの動作を記述
SENDSTR(0, "ファイル"+a+) //クリップボードにコピー
KBD(VK_CTRL,DOWN,40)
KBD(VK_V,CLICK,40)
KBD(VK_CTRL,UP,40)
SLEEP(1)
next
いやいやいや ファイルダイアログに対してならSENDSTRをまず使ってみるのが筋だろ。 アクセシビリティ経由でしか干渉できない場合はフリーズのリスクが有るが、 その場合はSENDSTRでクリップボードに文字列格納して、 ファイルダイアログのテキストボックスで[CTRL]+[V]で貼り付け。 目的を達成するための手段なんだから筋の良い手段を目指せや
「東京駅へ行くにはどちらの道ですか?」 「そこ行くと品川駅だよ」 「いえ、私が行きたいのは東京駅です。」
保存機能がアプリ内の独自実装で、ctrl系のキーイベントは拾わないとか 意図的に貼り付け禁止してるとかで sendstrやsckey使えないやむを得ない事情があるかも知れん
uwsc自体の前面表示を辞めたいのですがどうすればいいですか あとwin7でエアロが自動的に切れるんですけどこれって何かメリットはあるのですか
732 :
715 :2015/02/08(日) 12:54:33.83 ID:NYUgv/5a0
sendstrで文字を直接送るものを試しましたが認識されませんでした
>>727 にあるクリップボードのものは動作はしましたが、数十回繰り返すとクリップボードに文字列自体は保存されるものの
対象の保存窓にコピペのキーが効かなくなってしまうことが数回あり安定しませんでした
これは手動でも同じであり、対象のアプリのほうに問題があると思います
そのため
>>725 さんと
>>727 さんに教えていただいたものを応用しkbd関数でどうにかしたいと思います
慣れない為説明不足の点が多々ありご迷惑をおかけしましたが、教えてくださりありがとうございました
>>731 >uwsc自体の前面表示を辞めたいのですがどうすればいいで
iniファイルのnotactiveを1とかにしたらどう?
俺の環境だと0の状態でも、そもそも常に前面表示にならないから試せない
>あとwin7でエアロが自動的に切れるんですけどこれって何かメリットはあるのですか
chkimg等の処理を速くするために切った方がいいとヘルプにある
中断手段をスクリプトにちゃんと書く癖が出来たら 実行中表示は要らなくなる でもって記録機能への依存度が減ると UWSC本体の常駐も不要になる
「東京駅へ行くにはどちらの道ですか?」 「そこ行けば品川駅だよ」 「いえ、私が行きたいのは東京駅です。」 「歩いて行くつもりじゃなきゃ品川駅から電車に乗れ」 「それはもう試しましたが何回か乗車拒否され安定しませんでした。 JRのほうに問題があると思います。」←いまここ
>>735 教えられた結果試してだめだったんだろ
無駄につっかかりすぎ
上手いこと言ってるつもりかもしれんけど意味が分からん
UWSCってVMware(ゲストOS Windows7以降)上では動かないのでしょうか? エアロのオン/オフに関わらず、CHKIMGで画面がキャプチャできていないみたいです。
できます
>>740 す、すいません、何か設定とかあるのでしょうか。
SAVEIMGを実行しても、白い画像しか格納できていません。
※ゲストOSはWindows7を使用しています
>>741 >>143 > 空白になってます。
>>427 > 3年ほど前はできていたのですが。
>>447 > しかし再びオンラインゲームを起動させるとさっきまでできていたアイコンの
> 認識ができなくなりました。
>>451 > ちなみにメイプルストーリーだけど、何か対策ないですかね。
>>449 > ゲームガードは画面キャプチャを妨害するから無理です。
>>742 どうも有難うございます。
画像のキャプチャ対象はchromeアプリ(ゲーム)だったのですが、それ以外の一般の
ウィンドウはキャプチャできていました。chromeアプリを立ち上げていてもOKです。
一方、仮想(VMware)ではない実マシンではchromeアプリでも問題なくキャプチャ
できるので、chromeアプリとVMwareの組み合わせによる問題のようです。
解決は難しそうですが、もう少し調べているところです。
CHKIMGってこのスレで一番人気だよな
いまだに形のみを判定する使い道が分からん 透過も結構使いにくい
標準の画像関数は判断基準が取得できないんだよね パラメーターで閾値渡してみても以上か未満かしかわからんからなぁ なるべく画像関数には頼らない方が良い
ブラゲのマクロ組むのにCHKIMGは必須なんや
ふぃd…いやなんでもない
uwscからふぃd使えればいいんだけどなぁ 使えないよね?
バックグラウンドで画像認識がうまくいかない ログ見るとみんなもこれで苦しんでるみたいだな・・・
仮想環境にぶちこめと結論出てる
>>752 そうなのか、重くなるからどうにかしたいと思ったんだけどここでその結論だと自力じゃどうやっても無理そうだ
大人しく仮想でやってみるよ、ありがとう
ぶっちゃけ、ノート1台買えばいい 2万円強でバッテリーやら色々欠品の中古でそこそこ早く動くのを手に入れて捗っている
FAQ Q. SAVEIMG しても黒い画像しかキャプチャできない A. UWSC を再起動してください 再起動してもダメなら座標が間違っているかも Q. SAVEIMG しても白い画像しかキャプチャできない A. UWSC はゲームガードには対応していません。 Q. 仮想マシンの画面が真っ白(またはまっ黒) A. 実行環境を整えて出直して
>>752 一部仮想で動かないゲームもあるし、
動くか動かないかは各バージョンにもよる
>>754 2万円も出すならまずないだろうけど
需要としては存在するXPが入ったようなのはサポート切れで使えない事も。
>>751 裏でやるためには座標を相対座標でやらないといけないから
検索範囲をキャプチャして座標があってるかとか、座標をいじるたびに確かめないといけない。
クリックも同様。
ファイルに保存するのは面倒だからクリップボードに入れて
CLCL(クルクル) とかでのぞき見すると効率的。
Winspector も便利。
仮想pcだとグラボの影響でゲームがカクカクになるから デュアルディスプレイで片方の画面使わせてるわ
758 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 08:14:39.42 ID:tQyk9htU0
>>673 にあったツールを使い、中にあったサンプルを改変して組んでみたけど、35行目のdim w,hが既に定義されていますと出て詰んでる
何か無駄な動作や間違ってるところあれば教えてくださいm(_ _)m
winid=getid(GET_ACTIVE_WIN)
// finallyを必ず実行してもらう
OPTION OPTFINALLY
// ChkImgX関数をインクルード
CALL ChkImgX.uws
startup_chkimgx()
try
// デバッグ用にダンプをONにする
chkimgx_option(true, false)
↓ここから
// 画像サイズを取得
dim w, h
imagesize("esファイルエクスプローラー.png", w, h)
print "画像 幅:" + w + "px,高さ:" + h + "px"
// トップ画像をマッチングで探してクリック
mouseorg(winid)
for n = 1 to 10
sleep(1)
if chkimgx("esファイルエクスプローラー.png", winid) then
print "見つけた スコア:" + G_IMGX_SCORE
acw(winid)
mmv(G_IMGX_X, G_IMGX_Y)
btn(LEFT, CLICK, G_IMGX_X, G_IMGX_Y)
exit
endif
next
print "ない?"
↑ここまでを画像を変えて繰り返してる
35行目に当たるのは繰り返して2回目のdim w.h
>>758 全くスクリプトを読んでないが、
スコープ内で2回dim w,hと定義しているなら、
そりゃ既に定義されているだろ
2回目のdim w.hを消せば動くはず
760 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 08:46:26.42 ID:TfVf2pVS0
画像Aが3分間現れたら(現れ続けたら)画像Bをクリックって、どう書けばいいですか? (画像Aの出現時間が3分間以下ならBをクリックしない)
>>760 どういうタイミングで消えるか分からないから適当だが、
1秒ごとに画像Aをチェックし、180回連続でtrueなら画像Bをクリック
762 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 09:15:47.01 ID:tQyk9htU0
>>759 消してもスクリプトに影響出ませんかね?
画像サイズの取得は画像ごとにしなくてもいいのでしょうか?
chkimgx, imagesize, chkimgx_option とかはどんな組み合わせて呼び出しても、呼び出さなくてもいいからな imagesizeは画像のサイズが欲しい場合に使えばいいだけだし、w,hはただの受け取る変数だから何回再利用したって平気
764 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 10:58:39.83 ID:tQyk9htU0
>>763 なるほど、ありがとうございます
ひとまず色々と試してみたいと思います
765 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 17:13:46.38 ID:TfVf2pVS0
>>761 for〜next
使えば
そのスクリプトは使えば可能ですか?
>>765 可能。一例として
for i = 0 to 180
if !chkimg("画像A")
i = 0
endif
sleep(1)
next
できるだけ正確に3分が必要なら別スレッドで3分計るのがいいが、
どうやってもジャスト3分にはならないので、そこまでこだわるものでもない
767 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 23:19:19.04 ID:xzd75CsO0
aという画像を認識してクリックした後bという画像を認識してクリック...というようにしたいのですが、aという画像を認識した後に次の行動をしてくれません 何か間違っているところがあれば教えてくださいm(_ _)m // トップ画像をマッチングで探してクリック for n = 1 to 10 sleep(1) if chkimgx("a.png") then print "見つけた スコア:" + G_IMGX_SCORE mmv(G_IMGX_X, G_IMGX_Y) btn(LEFT, CLICK, G_IMGX_X, G_IMGX_Y) exit endif next print "ない?" // トップ画像をマッチングで探してクリック for n = 1 to 10 sleep(1) if chkimgx("b.png") then print "見つけた スコア:" + G_IMGX_SCORE mmv(G_IMGX_X, G_IMGX_Y) btn(LEFT, CLICK, G_IMGX_X, G_IMGX_Y) exit endif next print "ない?"
768 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 23:22:55.22 ID:OPh6WWJc0
ifbじゃないと動かなくね?
769 :
名無しさん@お腹いっぱい。 :2015/02/10(火) 23:25:26.99 ID:OPh6WWJc0
ごめん。ifでもよくなったのか exitは関数抜けるから、これだけ書くとスクリプトの処理が終わっちゃう breakかな?
exit→breakだけで動きそうだ
771 :
名無しさん@お腹いっぱい。 :2015/02/11(水) 01:04:29.54 ID:NDwuQXUH0
フローチャート書いてその通りに記述すれば動くだろ
>>772 単にexitの動作の誤解かミスだろ
フローチャート書いて分かる問題じゃない
772みたいなのはただ知った風なこと言って悦に入りたいだけだから放っておいたらええんやで
順次処理と条件分岐と反復だけ理解してれば大丈夫なはず。 サブルーチン処理もわかるとなお便利
シュミレーターか何かで、手札と引きで何%で何ターンに何ダメージだせるとかそういうのあれば、デッキの強さもはっきりしそーだけど誰もやってないのか
誤爆スイマせん
simulator
「シュミません」ぐらい言えよw
何故か朝の5時から6時の間だけ動かないんだけど この理由が分かるエスパーさんいますか
>>780 さすがに何がどのように動かないのかが無いと、なんともいえない
Windowsのタスクスケジューラでも確認してみれば
>>781 起動してもカーソルが動かない
6時すぎてもう一度再生したら動き出す謎減少
その時間帯にアンチウィルスのフルスキャンとかが走ってるんだよ
特定のフリーソフトだけクリックしてくれないのですが、何が原因か分かる方いますか UWSCの記録モードで、手動のマウス操作でそのソフトのウィンドウ内をクリックして、その流れを保存し、 それをテキストエディタで読み込んでみると、クリックする直前までの軌跡は記録されているのですが、 クリックした情報と、更にその後の情報は何も記録されていませんでした また、そのソフトのウィンドウ上でクリックさせる内容を含んだUWSファイルを読み込んだ場合は、 上と違ってクリックで強制終了はせず動作するのですが、そのソフトのウィンドウ上でのクリックのみ反応してくれません 左クリック、右クリック両方とも無反応です マウスの位置情報は問題なく再生してくれます ウィンドウをアクティブにしても変わりませんでした どこを弄れば良さそうなのでしょうか
何のソフトなのか書けないの?
UWSCを管理者権限で起動してもダメなら 記録方式を低レベル記録にする
インストーラーや管理権限の上昇ダイアログとかは 専用ユーザーとして別画面で描写されているのでウインドウにアクセス出来なかったするよ
792 :
◆evw/E7kww2 :2015/02/12(木) 13:04:04.25 ID:CjnzKxVq0
>>791 悪意のスクリプトを投稿する奴への警告ですよ。
こいつマジで知障なんじゃねえの?
796 :
◆evw/E7kww2 :2015/02/12(木) 13:43:56.33 ID:CjnzKxVq0
ttp://mastiff.2ch.net/test/read.cgi/siberia/1422846812/6 > 6 名前:いやあ名無しってほんとにいいもんですね@転載は禁止[sege] 投稿日:2015/02/11(水) 19:53:31.61 発信元:206.223.153.21
> 二度とこの世界にいられないようにしてやる!
>
> 7 名前:いやあ名無しってほんとにいいもんですね@転載は禁止[] 投稿日:2015/02/11(水) 22:34:00.07 発信元:221.67.235.184
> NetRange: 206.223.144.0 - 206.223.159.255
> OrgName: N.T. Technology, Inc.
> 逆引きホスト名 banana3162.fakerdns.jp
>
> >> 6
> ええ!?
> 現2ちゃんねるの中の人?
797 :
785 :2015/02/12(木) 14:30:18.83 ID:beVRJdp/0
sethotkey でホイールクリックをホットキーに設定ってできない?
普通に無理なんじゃね? 何がやりたいか知らないけどGETKEYSTATEで十分でしょ
いつでも中クリックしたらセレクトボックスが出るようにしたいのよ スレッドで常時getkeystate走らせるしかないのかな
分かる方教えてください。 mainプログラム内で、自作関数を記述したUWSファイルをCALL関数で呼び出した時、 CALL functions.uws function1() //functions.uwsに記述してある関数 と function1() //functions.uwsに記述してある関数 CALL functions.uws のどちらでも動作する理由が分かりません。(特に後者) 同じファイル内にmainプログラムと関数のプログラムを記述した場合は、関数定義の前までがmainになる、ということで理解しやすいのですが…。 この場合は、同じmainプログラム内に記述しているので、後者はfunction1()の行を読み込んだ際、 まだ関数の内容をUWSCが把握していないように思えてしまいます。
ちゃんとヘルプ見れば分かるんだけれど CALL文はC言語でいうinclude文っぽい動作になるのです つまり、スクリプトが読み込まれたら全てのCALL文が最初に動作して 一つのスクリプトに展開されてから動作を開始するイメージですね 展開後のイメージが無いスクリプトにしちゃうと グローバル変数の衝突や繰り返し処理でのバグ発生とかがおきるのです
>>800 マクロはゲームループ的な考えで実装すると臨機応変に処理が書けて個人的に好き
プチイベント駆動みたいな
>>801 あくまでイメージだけどこんな感じ
@call文で呼び先のファイルが呼び元にコピペされる
Aパブリックな変数や関数の定義処理が動く
B上から順に各動作処理が開始される
functions1の実行はBに当たるからどこに書こうが定義よりは後に動く
>>803 call関係なく function や procedure コードがどこに定義してあってもいいのって話だとおもうけどだけど。
大抵の言語はコードをコンパイルする時に、ソースコードを全部よみこんで
変数や関数の定義の名前の解決を先にやってから、実行形式(exe)にするからで
UWSCもそんな感じなんでは。
805 :
801 :2015/02/13(金) 14:06:42.75 ID:fuU/X+gB0
言語の習得をUWSCから始めちゃった人は気の毒
まぁ、あのヘルプは正直不親切だからなぁ・・・ 流し読みでいいよ 必要な時に探す場所の目処がつけば良いのです
ツクールVXAceのスクリプトから入ったからクラスのインスタンスが作りたくてしょうがない MODULEとかCLASS使ったら似たようなことできるかな
>>806 そうかな?おれはUWSCで適当にアプリ作ってから基本文法の理解度高まってVBC,C#と覚えた。独学でオブジェクト指向理解するのは戸惑ったけど。
きっかけとしては悪くない気もしないでもない
VBCじゃなくてVBAでした
>>808 同感だけどやめとけ
頑張りに見合う便利さは得られん
インスタンスっぽい事は比較的簡単に出来ても
プロパティ、アクセス制限とかやりたくなってきてハゲる
一応コンストラクタは使えるから
常にスタティックなクラスなんだと割り切るのが吉かと
812 :
名無しさん@お腹いっぱい。 :2015/02/15(日) 11:36:59.00 ID:Xb/d1q1E0
CHKIMGで検索範囲外にあっても、画像を認識できてしまいます。 厳密に、長方形座標の中にすっぽり納まらないと認識しないと考えていますが 少しでも、入れば認識してしまうのでしょうか?もしかすると、PRO版だけの仕様 でしょうか? 下記の x1, y1, x2, y2です。 CHKIMG( [画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )
813 :
名無しさん@お腹いっぱい。 :2015/02/15(日) 11:41:30.56 ID:Xb/d1q1E0
範囲も相対なのか絶対なのかヘルプに詳しく書いてないしね しょうがない
すみません、教えて下さい firefoxにmultifoxというアドオンを入れて、多重起動しています 5つ横一直線に並べ、uwscを起動し記録 記録内容はそれぞれのブラウザでブックマークをマウスの中ボタンでクリック(新しいタブで開くの動作) 記録を終了し、再生するとランダムで1つか2つのブラウザが他のブラウザと全く同じ位置に移動されます (始めはブラウザが閉じられたのかと思ったのですが、動かしてみると同じ位置にあった) これの原因はいったい何なんでしょうか?解決方法はありますか?
高レベル記録ならGETIDがその5つを特定出来ずに失敗しているだと思うよ 前提条件と最終目的が不明だけど低レベル記録を使うのも手かも
すいませんgenymotionでバックグラウンド操作が可能か教えていただけませんか。
>>816 ありがとうございます
設定は低レベル記録と余分な時間、マウス移動は記録しないにチェックをいれています
高レベル記録は記録がされませんでした(保存を押すと有効データが無いという反応)
>>815 中ボタンも押したままマウス移動するとウインドウ移動されなかったっけ?
もしそうなら
中ボタン離すイベントの前に、マウス移動のイベントが走ってるんじゃないかな
後は中ボタンを離すイベント自体がアプリ側で検知ミスしてるとか
対策としては
中ボタン押す操作の前後に少しスリープ入れたり
中ボタンをした後に、btn(middle,up)的なのがなければ追加して
この前後にもスリープ入れるとかどうかな
CHKIMG( [画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )について質問です 範囲を狭めるためにx1 y1に認識する座標を指定するのは分かるけどx2 y2にはどこの座標をいれるんですか?
>>821 追記
番号、色幅にはどんな感じでいれれば良いんですか?
>>821 取り敢えずヘルプの説明と例をみてきたら?
文字列ソートにhashtblを使っているのですが いわゆる"自然順"ソートの簡単な方法ないですか? file8.txt file9.txt file10.txt みたいのであれば自分で数字を抜き出せばいいのですが 複雑なパターンは対応が難しいです
環境依存で簡単じゃないけれど Win32api の StrCmpLogicalW を使うとエクスプローラの名前順で使う大小の判断材料が得られる 但し、交換する部分を自前で実装しないとダメ
>>825 ありがとうございます
試してみましたが、これならうまくいきそうです
ただソートを自分で用意するのが面倒ですね・・・
QSORT関数あたりに追加してくれないかな
>>819 UWSCの知識よりHTMLの知識の問題になってそう
別プロセスで動いてるけど、サイトのタイトルが同一でUWSCでは識別が出来てない状況だと思われます。
そこでHTMLの方をいじって解決すると思われるので記述しておきます。
以下の記述をメモ帳に貼り付け、拡張子を「.html」に変更
タイトルって箇所がポイントでここの数字を重複しない数字に変更すれば問題解決すると思われます
表示させたい数だけ以下の物をタイトルの数字を変更して作成して、フォックスで別プロセスで起動
<html>
<head>
<title>タイトル1</title>
</head>
<body bgcolor="#66ccff" LEFTMARGIN="0" TOPMARGIN="0">
<iframe src="表示したいURLを入力" width="600" height="650"></iframe>
</body>
</html>
あるいはGETALLWINしてから各ウィンドウをSTATUSで調べる
829 :
◆evw/E7kww2 :2015/02/18(水) 02:23:33.33 ID:x03XfLe30
で、それUWSCとどういう関係あるの?
>>830 UWSC の悪意のコードをばらまいてるのが株式会社ジエンで
2ちゃんねるのサーバーに直接ログインできて
IP丸見えで
特定の相手を狙い撃ちしてたとしたらどうよ
専用ブラウザは .dat ファイルに直接アクセスするけど
専用ブラウザを禁止すれば
悪意の JavaScript を強制的に使用させれるわけだ。
まあ、それでなくても専ブラでこのスレ見ることができなくなるし
僕がUWSC使ってやってた2ちゃんねるの自動処理スクリプトが動かなくなるし
API 勝手に使えば逮捕されるってさ。
株自演から許諾もらえた人がいなくて、2ちゃんねる運営からの返事は「ドライブ行くからバイバイ」
ttp://anago.2ch.net/test/read.cgi/software/1424178248/188 つまり、UWSCでは自由なログ取得ができない。
全く無関係の話ではない。
無関係だな
newtest120 procedure newtest120 x=1000 y=638 BTN(LEFT, CLICK, x+1, y+1, 80) sleep(1.0) newtest121 fend procedure newtest121 x=668 y=425 BTN(LEFT, CLICK, x+1, y+1, 80) sleep(1.0) newtest120 fend っていう2点を交互にクリックするだけの簡単なスクリプトを使っているんだけどある程度時間が経つと止まっちまう どうすればいい?
>>834 おっサンキュー!助かったぜ
俺が直接停止させるまでずっと繰り返しさせたい場合はこんな感じでいいのかな
x=1
while x=1
newtest120
newtest121
wend
procedure newtest120
x=1000
y=638
BTN(LEFT, CLICK, x+1, y+1, 80)
sleep(1.0)
newtest121
fend
procedure newtest121
x=668
y=425
BTN(LEFT, CLICK, x+1, y+1, 80)
sleep(1.0)
newtest120
fend
>>835 それぞれの関数に含まれてる
newtest121
newtest120
は消さないとダメ
引数なしで宣言とか呼び出し出来るのか 初めて知ったわw
ミス、引数なしじゃなくて小かっこなし
840 :
◆evw/E7kww2 :2015/02/18(水) 15:38:36.34 ID:x03XfLe30
Aを5回クリックしたのち、Bの動作を1回行う これをESCキー押すまでループ というのを作りたいです While true if GETKEYSTATE(VK_ESC) then exit // ESCキーで終了 for j=0 to 5//ここから↓はクリック A next //ここまでクリック //処理 B Endif wend ESCキー押しても停止しない事以外は思い通りなんですが、キー停止しない原因はなんでしょうか?
>>841 ESCをクリックするタイミングが B 〜 GETKEYSTATE(VK_ESC) の間で1秒以下じゃないといけない
その間に Sleep がないからすぐに通り過ぎてしまう。
いつクリックしても終わるようにしたいなら Sleep とセットでこまめに入れないと。
>>841 ESCキーに特別なこだわりがなければ、
Alt+F2が安定
>>841 全体のループを回しつつAとBを希望回数実行するイメージにしたほうが良いかも
こんな感じ
//最初に空呼びするのは事前に処理があった場合などで
//ESCキーを押下している可能性があるから
GetKeyState(VK_ESC)
count = 1
While !GetKeyState(VK_ESC)
If count <= 5 Then
Print "Aクリック"
EndIf
If 5 < count Then
Print "処理B"
count = 0
EndIf
count = count + 1
Sleep(1)
WEnd
alt+f2もスリープなしのループ内だと反応しない 速度を求めない部分に適度なスリープを
SETHOTKEYでグローバル変数のフラグをONし、 メインループ内でそのフラグを常にチェックする、 という手もあるよ。 どの方法でも適度なSLEEPは必須。
>>841 While true
for j=0 to 5//ここから↓はクリック
if GETKEYSTATE(VK_ESC) then exit // ESCキーで終了
A
next //ここまでクリック
//処理
if GETKEYSTATE(VK_ESC) then exit // ESCキーで終了
B
Endif
wend
これでいいんじゃないの?
一個忘れてた、Aの直後とBの直後に sleep(0.1)
IEで複数タブを開きそれぞれのタブに同時にIESETDATAをしたいのですが可能でしょうか 可能だとしたらどのようにすればいいのでしょうか
IEのタブは内部的にはウインドウ扱いなので SHDocVw.ShellWindows を使えばそれらにアクセス可能です 但しエクスプローラのウインドウも入っているので FullName が "iexplore.exe” かどうかチェックしてあげると良い で、その結果毎に IESETDATA してあげたら良いんじゃないかな 具体的なURLが決まっているなら LocationURL もチェックして絞り込むと良い
質問です。 print powershell("dir<#CR>dir") print powershell("ipconfig<#CR>dir") print powershell("ipconfig<#CR>ipconfig") のうち、2番めのprintのdirが文字化けします。 どうもdirの前にBOMが付いてしまうのですが なぜ別のコマンドに影響を受けるかが理解できません。 原因と対策を教えて下さい。
doscmd()じゃだめな理由があるの?
あ、説明し忘れましたがもちろんdirやipconfigがやりたいわけではありません。 PowerShellとの連携が必要な処理でおかしな動作を見つけて切り分けた結果、 一番わかりやすいパターンがこれです。
よく分からんが、それだけ切り分けられてたら、公式で聞くべきじゃないの?
ISUNICODE(文字列 )
UWSCで田代砲って可能なんですか
逮捕されるよ
3Dプリンタで拳銃って可能なんですか
全知全能の現人神◆evw/E7kww2にすべてまかせるんだ
>>857 悪いことには使いませんのでヒントだけでも
消えろ、糞ミジンコハゲが
>>860 田代ほど速くはアクセスできない
だから帰れ
>>860 田代砲なんてサイバー攻撃用途しかないし
やり方教えたら犯罪の幇助になりかねないから
教える奴はいないと思うよ
なんで田代砲の話題が出たのかと思ったら 2月22日が竹島の日だからか。 神奈川虐殺事件も竹島付近の出身だから生け贄にされたんだよね。 てっきり、僕が田代砲作ったと知ってて話題に出したのかと思った。 田代砲っぽい動作はUWSCでもできるけど 攻撃が目的ならキャッシュから読み込まない設定が必要になる。 UWSC + IE での読み込み中に中断すると、 いくらリロードしても不完全なキャッシュしか読んでくれなくて困ったことがあった。 結局、中断の制御をしないことで対処した。 田代砲としての動作では起動後のスクリプトとか無視でいいんで完了まで待たなくていいんだよね。 広告を表示するまで待つような田代砲だと、対象ページの広告収入が増えるし Youtube でやれば再生回数水増しで人気沸騰1億ビューも可能。 Youtube で1億ビューいったのは世界で一人だけじゃなかったかな。
てっきり、僕が田代砲作ったと知ってて話題に出したのかと思った。 wwwwwwwwwwwwwwwww
さすが全知全能の現人神やで
UWSのショートカットを押してマクロを使っているのですが、1回動作させて一連の動作が終わった後にまた起動させるとマクロの動作が遅くなってしまうのですがどうしたらよいでしょうか?パソコンの再起動すると治るため今は使うたびに再起動をかけて使っています
初期化処理に想定外があって2度目が期待通りの動作をしていない スクリプトが完全に終了していない 辺りじゃないかな どうしてもワカランならスクリプトの最後に再起動命令「POFF(P_REBOOT)」でも入れたら?
横からだけどスクリプトが完全に終了してないってどういう状態?
ゾンビプロセスのことだろ
ググってみた UWSCならスレッドが終了してないのにスクリプトを終了した状態ってことかな 他にもゾンビプロセスが残る可能性ってある?
下手なスクリプトでUWSCを多重起動したら普通にメモリがバイオハザード状態だろ スクリプトのバグはもちろん、例えば不可視状態のUWSCとブラウザがデッドロックを起こしたまま放置状態になったら、 UWSC側で正常終了するよう書いてあっても無駄、ブラウザをtaskkillするなどが必要 もちろんUWSC自身ではなく自動操作対象のほうでメモリリークだの何だの色々とあるだろうことは想像に難くない
回答ありがとうございます。 タスクマネージャには表示されないプロセスが残ってしまっているって解釈でよろしいでしょうか? そしたらやはり再起動しか対策がないとなりますか…
多分、前提が間違ってる方だと思うよ
> タスクマネージャには表示されないプロセス んなものはない 表示されてるどのプロセスが原因か判らないだけ 下手すりゃsvchost.exeやexplorer.exeが狂っちゃってることだってあり得る
ああ、不可視というのは visible = false みたいに単に画面上に表示されてない状態のプロセスってことでタスクマネージャには当然表示されてるよ
住人のエスパー力にも限りがあるから 込み入った問題の回答はモノを見なくちゃどうにもならんわな
ショートカットから起動されたUWSCのプロセスは起動オプション無しなら表示されないよね 多分動作が終わった後もプロセスが終了してなくて、ショートカットで起動する度に増えてるんじゃね?
タスクマネージャに表示できないゾンビプロセスがそんな簡単に生成できたら ウイルス製作者が指を加えて黙ってるわけないだろw 実現できたら世界的なニュースになるよ 遅くなるソースコードの1行ごとに時間計測用デバッグ文を入れて どこで遅くなっているか見れば多分簡単に原因は分かるけど 「遅くなる!助けて!!」レベルの情報じゃ原因特定は無理
コンピューターはバカ正直だから勝手に重くなる事はない 重くなるように指示されているから重くなるのだ
endifの消し忘れでマクロに誤動作起きてた… ifのブロック扱いが無ければエラーですぐ気づけたのになぁ
まぁ、くろうしたのね
なんですって?
付け忘れならともかく、消し忘れなんてありえんのか?
ブロックの初めと終わりは、可能な限り半ページ程度までに収めるべきだよなぁ 関数化して掃き出したり、BREAKやEXITをうまく使って驚くほど階層が低くなったりする とは言いつつ古いマクロで動いてる奴が手付かずのままだ。
最近知ったけど、秀丸の色付け機能って便利だね
uwsc使いふぜいがプログラマ気取りって甚だしいだろ
堀田純平と安江広も使ってるuwsc
甚だしいは単体で使う単語じゃないぞ
コミュニケーションってのは文法や言葉の正しさが全てではないからね
言い訳が甚だしいぞ
プログラマであることを要求される地点に来てるのにその自覚がないと、 糞コード拡散したり車輪の再発明しまくったり碌なことがない
要求される地点=プログラマとして就職 まだまだ自覚しなくて良いな
mouseorgでchromeのブラゲにクリックを直接送信するようにしてて ゲーム内じゃなくブラウザ側のバルーンみたいなので「エラーが発生したのでリロードします。「OK」「キャンセル」」みたいなのが出た時に メインとは別のエラーを監視するスレッドで「キャンセル」の画像を検知したらそれを押すようにしてるんだけど キャンセルボタンを押してくれる時と押してくれない時があるのはなぜなのか誰か分からない?
アマチュア棋士は棋士ではないとな
>>900 失敗した時は画像検知はできてるの?
できてないなら、画像がわずかに変わってたりとかを疑う
できてるならクリックイベント拾えてないだけだから、消えるまでクリックすればいいのでは
1msの高速クリックだとイベント拾えないことがあるからな
>>902 永久ループで画像検出を回しまくってるから押せてないことはないはず
画像はキャンセルの文字が太字の時とそうじゃない時の両方取ってるけど
今思い出したけどフォーカスが変わったら動き出す時があるからもしかしてまだパターンがあるのかな
次にキャンセルボタン出たら画像をもう一回見なおしてみる
>>901 日曜プログラマとかいうけど
趣味でやるやつは求められてはいないだろと。
でも、半分趣味の人がブログとか書いてくれて
そのコードを使えるわけだからありがたい存在だったりする。
じゃあその人たちはプロではないのかと言うと、
参考になる多くのコードを提供する人はプロでもあると思う。
プログラマは期間が短いからどうせすぐにプロではなくなるんだけど。
確かにプロでない棋士はコマの動かし方や定石を覚えることは、プロ棋士会からは、求められていない だが将棋を楽しむためにはコマの動かし方や定石を覚えなきゃ話にならんな? 将棋を始める以上、コマの動かし方や定石を覚えることは、将棋仲間などの社会から、求められているのだよ。
どうでもいいけど棋士って言葉はプロのことを指す場合が多いよ
じゃぁ「将棋指し」にしようか。 確かにプロ棋士でない将棋指しは、コマの動かし方や定石を覚えることは、 日本将棋連盟などプロ棋士らの社会からは、求められていない。 だが将棋を楽しむためにはコマの動かし方や定石を覚えなきゃ話にならんな? 将棋を始める以上、コマの動かし方や定石を覚えることは、 アマチュア将棋仲間などの社会から、求められているのだよ。 定石を知っていれば3秒で解ける問題に何ヶ月も掛けることもあるだろうが、 一人で誰にも知られず悩んでるだけなら、それは本人の勝手だろう。 だが社会と触れる部分があれば、2歩という違反を使って詰将棋を解いたと主張したり、 将棋仲間との対戦中に千日手を行って迷惑をかけたり、 100年も前に存在した桂馬の両取りのような定石未満の戦法を、 俺の発明した戦法だと主張する誰かさんのように見苦しかったりする。 初学者に間違ったルールや定石を教え始めれば害がある。
メイン処理の方を待機させる仕組みがないと 別処理の方の一瞬で中断させている可能性もありえる フォーカスやマウス座標の奪い合いとかね 処理の準備、実行、確認が大事 頑張って
すまんな、俺がプログラマ気取りといったばかりに 趣味だろうと自分がプログラマだと思うならそう名乗ればいいよね 自称プログラマでいいじゃん プログラマは低所得や派遣というイメージが強いから名乗って誇れるものでもないだろうけど
プログラマーはプロフェッショナルグラマーの略
プログラマじゃなくてもコード書いたり、エクセルの関数やVBA使うことは一般教養として出来るわけだから プログラマって聞くと職業プログラマってイメージしちゃうな
>>900 Javascriptのconfirmの事かな?
・そもそも押してない
・押してるけど反応がない
を切り分けるとデバッグ捗るよ
print "キャンセル押した"
って一行書くだけでだいぶ切り分けられる
ttp://www.tagindex.com/javascript/window/confirm.html にあるようなconfirmなら
confirmId = getid(, "Chrome_WidgetWin_1")
clkitem(confirmId, "キャンセル", clk_acc)
みたいな感じでキャンセルは押せる
画像認識は使わなくてもいいのならなるべく使わないほうがいい
>>912 dクス
confirmId はOKキャンセルの窓が出てないときは-1になるのかな
それ入れてみる
>>909 すまんといいつつさらにディスる
とことん性格悪いなw
UWSCスレで何を語ってるんだ
プログラムを組む人をプログラマーというんだろ。 プレイする人をプレイヤーというんだから。 プログラムを見て『このプログラムを書いた人』がプログラマーだろ。
なるほどな uwscのマクロをプログラムと呼ぶから変な感じがするんだな
ツーラーとかマクラーとはちょっと言われたくないけどね…
スレッド永久ループさせたままスクリプト終了しても問題ない?
問題なく終了するよ
dクス また質問で悪いんだけど poffでUWSCを再起動させる時に、再起動後のスクリプトに引数渡すようなことってできない?
>>921 スリープ処理なしの割り込み出来ないスレッドとか
突き放しで起動したプロセスのスレッドだと止まんないと思う
>>924 ちゃんとスリープは入れてる
突き放しで起動したプロセスってのはよく分からん
>>923 fputとかでファイルに書き込みして、
fgetとかでそれを最初に読み込ませるのが一番楽だと思う
>>925 突き放しは
execとかで別uwscを終了待ちなしで起動するような感じ
> execとかで別uwscを終了待ちなしで起動するような > 突き放しで起動したプロセスのスレッド そんなスレッドを簡単に作れるのは Cheat Engine くらいのもんだろ
>>926 ありがとう
exec使ってないから大丈夫だな
ファイルの方は試行錯誤してみる
iniファイル使ったらできたわ ついでに設定用変数をiniから読み取るようにしたら、設定変えた時に毎回スクリプト再起動しなくてよくなったからちょっと手間が減った ini初めて使ったけど便利やな
同IDの3つ以上の複数ウィンドウをアクティブとMIN繰り返して切り替えたいんだけど、どうすればいい? それか非アクティブの同IDウィンドウにキー入力したい comオブジェクトは使えない
IDと複数ウィンドウの関係にもよるかな。 何回、何秒ごとにウィンドウ同士どのような関係で切り替えるかにもよるし。 具体的にはウィンドウのどこにどんなキーを入力するのかの情報も必要。 ウィンドウとCOMオブジェクトは直接関係ないけど、何がいいたいのか謎。 知識がなくて使えないのか、 使いたくないから使わないのか、 使う必要がないから使わないのかよく分からない。 説明が下手なら、具体的に○○がしたいが方法が分からないと質問するか 途中まで作ったソースコードを貼り付けたほうが建設的な議論がしやすいよ。
突き放しって変な用語だけど、引数なしショートカットで起動したみたいな、別スレッドではなく別プロセスで起動した場合のことだろうね
>>930 同IDという状態はないはず
同名ウィンドウが3つという問題は発生する
同名だろうが何だろうが各々のウィンドウIDは異なる
取得が出来ないだけ
取得はできないが、1つ1つを取得後に各々を操作した結果、同名ウィンドウになるなら、
せっかく取得したIDを放棄しない限り問題なく操作できる。
>>930 getallwinでウインドウ情報取って
一個ずつ中見ても3つのidは表示されない?
それでもid一個だと個別に識別方法を考えるしか分からんな
多重起動して同じページ開いてる同ブラウザを切り替えてくて… ID取得したけれど、タイトルとクラス名と座標とサイズと待ち時間しか取得できなかった MDI子タイトル?ってのはどう取得していいのやら
>>930 不細工だが、タスクバーから選択すれば良いだけじゃないの?
難しいこと考えなくても、手でやる方法をトレースすればたいていの事はできる
>>935 タブブラウザのタブ切り替えかな
と思ったがMINって最小化のこと言ってるだろうしよく分からん…
タブブラウザでそれしか開いてないなら
いっそctrl+tabにするとかで代用とかあるけど
もう少し詳細な現状がないと答えにくい
//IEを3つ起動
for i=1 to 3
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("
http://www.yahoo.co.jp ")
next
sleep(5)
public idList=""
//タイトルとクラスからIEを探す
for winId in getallwin()
if pos("Yahoo! JAPAN", status(winId, ST_TITLE))=0 then continue
if status(winId, ST_CLASS)<>"IEFrame" then continue
idList=idList+winId+" "
next
allIeControl(min) //IEをすべて最小化
allIeControl(normal) //IEをすべてサイズ戻す
procedure allIeControl(command)
for ieId in split(idList, , true)
ctrlwin(ieId, command)
sleep(1)
next
fend
たとえば同じタイトルのIEを操作する例 getallwin()を使えばたったこれだけでそれぞれのIDは特定できる
for inってかけるようになったのか知らんかった