桁数の大きな数値を取り扱う時ってどうすればいいんですか
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ってかけるようになったのか知らんかった