で、前スレどこっすか?
乙
おつ!ROM勢だけどおつ!
呼び出し関係をまとめてみた ◇UWSC スクリプトからの呼び出し UWSC.exe └[MyScript].uws ├CALL [MySubScript].uws ├DLL 関数 ├COM オブジェクト ├PowerShell スクリプト ├DOS コマンド ├EXEC 各ファイルの実行 └キー、マウス、コントロールの制御 ◇UWSC 関数の呼び出し ┌COM オブジェクト イベント ├キー イベント 自作関数 がんばれば Win32API 使ってメッセージループできるけど向いてない。 ウィンドウクラスだけダミーで作って GetMessage の後、DispatchMessage をせずに UWSC スクリプトの中で回せば簡単だけどこれは非推奨。 HSP に、ウィンドウメッセージ受信用 DLL (hsgetmsg.dll) がある。 これは HSP 専用プラグインだが、これと同様の DLL があれば UWSC でも簡単にメッセージを受信できる。 ウィンドウ関連の構造体データを DOM 的にアクセスできるようになれば、 ネイティブコントロールの作成とかも手軽にできるようになるかもしれない。 あ、それをやってくれるのが seraphyscripttools とか SFCmini のような COM オブジェクトなのか。
UWSCのグループチャットってやつか 作者同士がUWSCネットワークを介して交流とか夢が広がるな
Aは画像認識→あったらクリック という命令として 今の自分の書き方だと [A1 A2 A3 … A25] みたいに画像認識がすごく多くて1週するのに時間が結構かかっています。 ↓みたいに命令を実行させたいのですが、どう書けば良いでしょうか? ・A1〜A20は連続の3個を1ブロックとして、どれか1個実行されたら1個ずつずらしていく 例:[A1.A2.A3]→どれか実行→[A2.A3.A4]→どれか実行→[A3.A4.A5]→… →[A18.A19.A20]→略→[A19,A20.A1]→略→[A20.A1.A2]→略→(最初に戻る) ・A21〜A25は常に実行
>>10 3つずつ
for i = 0 to (length(A)-1)/3 step 3
jMax = i + 2
if length(A)-1 < i+j then jMax = length(A)-1
while true
for j = i to jMax
ifb CHKIMG(A[j])
処理
break 2
endif
next
// ここで毎回の処理
sleep(0.1)
wend
next
処理後に exit する関数にすれば
for i のループ
3つずつの関数(A, i)
毎回処理する関数(A, 開始位置, 終了位置)
sleep(0.1)
next
って感じで少しすっきりする。
>>11 ありがとうございました
改善案からさらに改良していくのが面白い(できたら
>>11 は /3 とか変なのが残ってたね。
j を i*3 〜 i*3+2 ( i は step 1 )でやるか
i 〜 i+2 ( i は step 3 )でやるか迷ってて消すの忘れてた。
UWSCと関係ないけど、
3回ずつだと端数が出るからループ脱出条件が2つになる。
もし、3で割り切れる個数ならそもそもループする必要がなく、こう書ける。
for i = 0 to max step 3
print data[i]
print data[i+1]
print data[i+2]
next
端数をループの外で書けば端数の問題は解消するけど、同じ処理を他の場所でやることになる。
C言語とJavaではこんな書き方がある。
書き換えるのがめんどいのでこぴぺ。
register n = (count + 7) / 8;
switch(count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while(--n > 0);
}
できますよ
>>17 よかったら教えてください
RGB=PeekColor(502,374,522,394)
↑こうではないですよね・・・?
>>18 範囲でってどういうこと?
A. その周辺の色を混ぜ合わせた色?
B. それとも、その周辺のドットの集合?
どちらにせよUWSCでは2重ループで繰り返し実行ですね。
A の場合はそれを配列に入れて平均値を計算。
WindowsAPI なら BitBlt で矩形指定してコピーもできる。
ただし、メモリイメージそのままなので色の平均値は自分で計算だし、
BitBltするまでがちょっとめんどい。
>>19 RGB=PeekColor(512,384)
これだと画面の真ん中のみ有効じゃないですか
画面の真ん中から少しずれてもいいように多少大きく範囲をとりたいと思ってるんです
色ではなく場所です
>>20 いや、PeekColor に範囲とかないから。
アクセサリのペイントを開いてスポイトツールを使ってみて。
それが PeekColor と同じ機能。
>>20 だから取りあえず2重ループでやってみればいいじゃん
スピードが遅いんならそんとき別の方法を考えれば良いんだし
範囲をとりたいってどういう意味だ
なんか1ドットの画像用意してchkimgのほうが…
>>24 たぶんそういうことなんだろうね。
テスト駆動開発
ttp://appkitbox.com/knowledge/test/2013/01/15/tdd_basic 1.エラーになるコードを書く (呼び出し、エラーを返す。つまり、エラー処理を書く。)
2.正常処理するコードを追加 (正常でない場合、1のコードに飛ぶので、またひとつコードが増える。)
3.書いた分をきれいにまとめる。
4.1〜3を繰り返す。
正常なコードをすぐに書ければいいけど、やっぱり試行錯誤になるよね。
試行錯誤を繰り返すとコードは汚くなるので、動いた時点できれいに書き直したほうがいい。
それを少しずつ積み上げることで、全体として完成したときに全体がきれいに仕上がっているはず。
とは言え、これは言語やライブラリを理解したうえでコードを書くことが前提なので、
関数がどう動くのかどう使えるのか分からないときには
その関数だけのためにテストコードを書かないとひどいことになる。
uwscの別プロセスのものが何故か自動で機能しなくなりました 関連ないことなのかもしれませんけどほぼ同時期に 一部ソフトを再起動させても、そのまま終了し起動しなくなりました 問題が曖昧すぎですが、何が問題なのか自分でもサッパリ分かりません どうか分かる方がいましたらお願いします。
27 :
名無しさん@お腹いっぱい。 :2013/05/08(水) 00:09:08.30 ID:zkJ+gGFf0
IEを起動したら、ウインドウのIDを取得して操作したいんだけど、 IE = CREATEOLEOBJ("InternetExplorer.Application") IE.visible = True IE.navigate("about:blank") repeat sleep(0.1) until !IE.busy AND IE.readystate=4 IEid = GETID("Windows Internet Explorer",-1) いつ迄待ってもIEidが-1のままになってしまいます。 何か、間違ってます?
>>27 クラス名を -1 にするからだろ
IEid = GETID("Windows Internet Explorer", "", -1)
>>26 画面は消えているように見えるのにプロセスが残っているために二重起動防止で落ちてるとかよくある。
30 :
27 :2013/05/08(水) 03:14:22.22 ID:zkJ+gGFf0
31 :
名無しさん@お腹いっぱい。 :2013/05/09(木) 00:28:49.53 ID:L2rgOZUy0
今janeを開いてて、 <<ITM_ACCCLK>>の113)が 自動化ツールUWSC使いよ集まれ10のこのスレなんだけど、 こういうののACCCLKってどうやって取得するの? getstrとかでも取得できないんだけど、 ネットにあがってるスクリプトだと出来る 何が違うの?やり方教えて
>>31 そのツールで取得できたんならよくね?
もし、クリック以外の何かをしたいんならツールと同じように取得すればよくね?
取得方法は以下のやつをループ
GetAllWin() の ALL_WIN_ID[]
GetItem() の ALL_ITEM_LIST[]
34 :
名無しさん@お腹いっぱい。 :2013/05/10(金) 00:45:03.85 ID:L/LQJXd50
入力したいフォームに高レベルな記録で 文字を入力してみましたが、保存したuwsのファイルには 何も書かれていませんでした。 こういう場合自動で入力は不可能ですか? また、 フォームが1〜5まであって getstrで文字を全て取得したいんですが、 なぜかアクティブになってるフォームしか取得できないです。 VK_TABで1個1個アクティブにして取得するのは格好悪いです こういう場合どうすればいいですか?
35 :
27 :2013/05/10(金) 03:08:15.93 ID:iZDIOuiS0
>>34 > なぜかアクティブになってるフォームしか
HTML なら DOM 使う。
Winフォームなら裏側は非表示だろうから無理なんじゃね?
スパイアプリでコントロールIDでも取れれば API 経由でいけるかも。
>>33 ALL_ITEM_LIST とかでぐぐる
ヘルプ見る
>>35 タスクマネージャから終了するか
taskkll コマンドで終了するか
PowerShell の Stop-Process か
Windows を再起動。
("Microsoft.XMLhttp")を呼び出して ソースを引っ張ってくるようにしてるんですが オフラインなどで エラーが出る時の処理を分岐させたいんですが エラーを感知する方法が分かりません・・・ sendを先に書いておかないと statusを取れないし sendを先に書いてしまうとエラーを感知して止まってしまいます
>>37 try 〜 except 〜 endtry
または
COM_Err_Ign 〜 COM_Err_Ret して COM_ERR_FLG で判断
MacromediaFlashPlayerActiveX を Chrome と FireFox でもできんかと GetWindow で GW_CHILD して GW_HWNDNEXT のループして GetClassName してたけど 前スレにあったわ。 GETCTLHND() で取れる IEFrame だけが可能なだけだったんだな。 GetAllWin() で取れる TabThumbnailWindow を対象にしても駄目だったんだ。 無駄な努力だった。 Win7+IE9の場合 IEFrame └Frame Tab └TabWindowClass └Shell DocObject View └Internet Explorer_Server └MacromediaFlashPlayerActiveX しかし、ActiveX ならHTAでもアプリでもいける・・・ ってな感じで2ヶ月くらい迷走してるわ。
>>38 ありがとうです
後者で何とかいけそうです
いいことが書いてあった
これからコードを書く人に絶対やって欲しいこと★2
ttp://kohada.2ch.net/test/read.cgi/prog/1365269189/36 12 :仕様書無しさん [↓] :2013/03/10(日) 16:47:33.91
動的型付け言語なら高機能なテキストエディタを使え
静的型付け言語ならIDEを使え。
なぜなら、動的型付け言語ではIDEのサポートが十分に得られない。重いだけ。
静的型付け言語はコード自体は冗長になるが、IDEのサポートで大幅に生産性が上がる。
15 :仕様書無しさん [↓] :2013/03/10(日) 16:55:11.95
コードは書くことよりも、読む時のことを考えろ。
短く書いたとしても、読みにくければそれは駄目なコードだ。
コーディングにかける時間の8割は、コードを読むことに使わている。
> 理由が書いてない(納得出来ない) コーディング規約はゴミだ。作るな。従うな。
コーディングにかける時間の8割は、コードを読むことに使わている。 あぁ、そう言えば全くのその通りだった。殆どの時間読んでるわ。
スレチ
最近変なやつが居座ってオナニーしてんのな
>>41 そのスレ参考になったぞ
そしてUWSCの言語仕様の限界を改めて認識してしまったな
そのスレに興味を持つレベルならuwscなんて卒業しろ uwscなんて本格的なプログラミングするためのものじゃない
これでline荒らしたら、人間関係崩れたんだけど このソフト糞だわ
Lineやってことないんだけど PC版Lineの画面ってどんな感じ?
クリックの繰り返しの際に、 for i=0 to 100 BTN(LEFT,DOWN,964,553,100) BTN(LEFT,UP,964,553,62) SLEEP(1) next こんな感じになると思うんですが、繰り返し回数(この例では100)を、コマンドラインから、 UWSC.exe TEST.UWS 100 のように引数で渡すことはできますか?
できますよ
>>50 スクリプトの方では、引数をどう受け取ればいいんですか?
for i=0 to 100
の100のところなんですけど・・
ヘルプの起動時パラメータを見ろ
for i=0 to =PARAM_STR[0] BTN(LEFT,DOWN,964,553,100) BTN(LEFT,UP,964,553,62) SLEEP(1) next コマンドライン UWSC.exe TEST.UWS 100 こうですな。どうもありがとう UWSCのHELP、俺のPCだと開かないんだよね・・なんか環境がどうのこうのみたいなんだけど。
UWSCの配列まわりでバグを発見した。 データが欠損するバグだ。これは致命的だ。 検証し速やかに報告をしなくては。 と思ったら俺オリジナルのバグだったまる
おまおれ
配列の添字の仕様がアレですからねぇバグも出るよ。
配列添字の仕様で何かあったけ?
ifb CHKIMG("check.bmp") then SOUND("bell.wav") endif check.bmpという画像を元に、 "色を無視して形でチェックする"動作を行わせたいのですが、この場合どう記述すればいいのでしょうか? CHKIMG("check.bmp",-1)ってやっても認識されなかったんだ・・・
何か日本語おかしいな check.bmpと同じ画像ではなく、同じ形の画像を認証させたいんだ
>>56-57 C系言語が広がったんで
配列は0から始まるのが普通になったけど
それ以前は1から始まるのも結構あった
61 :
名無しさん@お腹いっぱい。 :2013/05/28(火) 20:41:49.26 ID:8GBjDRZd0
Cが広まったのってもう20年以上前のことじゃね?
配列が1から始まるのってBASIC系くらいじゃないの? それよりも DIM A[10] ってしたとき A[0]〜[10]になるほうが慣れないなぁ
UWSCだって0始まりだよ。SafeArrayはともかく。 配列定義で DIM a[2] とやると 0〜2 の3つになるのはBASIC系言語の仕様でしょ VBA、VBS、VB.NET、ActiveBasic …。もちろんUWSCはBASIC系。 社会人なら、エクセルのVBA位さわった事あるだろし C系言語だけしか知らないのはどうかと思う
今でもCOBOLのような業務系言語は基本的に1から。
>>62 これこれ
これが原因
添え字最小〜最大 = 配列数
1〜配列宣言時の数値 = 配列宣言時の個数 BASIC系
0〜配列宣言時の数値−1= 配列宣言時の個数 C言語系
0〜配列宣言時の数値 = 配列宣言時の個数+1 UWSC
FOR ループでは
for i = 0 to length(配列) -1 next UWSC
>>65 何言ってんの?
BASIC系も添え字最小は0だろが
マジで? length(配列)じゃなくてmax(配列)として、添え字の最大値を使えればミスらないんだけどな。 for i = min() to max(配列) next これで解決。
>>67 上限値が欲しいなら Resize(配列)
for i=0 to Resize(配列)
next
maxだと要素中の最大値を求めるっぽくて駄目だな。 配列の添え字の最大って分かるようにしないと。
>>68 resizeで取れるならいいけど、一見して分かりにくいワードだな。まいっか。
C言語と同じ比較すればいいんだけどな。
添え字のカウントアップを忘れそうなのがな。
i = 0
while i < length(配列)
i = i + 1
wend
だいたいBasic系の to って言葉が悪いよ。
なんで「〜の手前まで」って表現がないのか。
「To the front of」とか長すぎ。
VBのUBound、LBoundが欲しいのか。 ごちゃごちゃしょーもねーな。 今更言ってもかわらねえよ。
俺はCに慣れてるのもあるから0からが当たり前だと思っているがUWSCさわる人ってプログラムは知らないけどエクセルは使っていてエクセルマクロ(VB仕様?)で考えてる人が多いのかな? 俺はVBほとんどさわらないからその仕様もよくわかってないがw
COBOLのような勘定系だけは1からだよ C言語やVBで組んだとしても
デフォルトは兎も角 環境の宣言で指標の使い方は自由に決める事が出来る言語は多い
>>68 俺ずっとそれでやってた上で、
> 0〜配列宣言時の数値−1= 配列宣言時の個数 C言語系
だと思い込んでやってたぜ。
>>72 VBAって
> 1〜配列宣言時の数値 = 配列宣言時の個数 BASIC系
だったか?
VB6のVBAけっこう使ったが、俺そこでも間違えてたのか?
UWSCってオブジェクト指向プログラミングで開発してるだろうに、提供する言語がコレって何かずるいw
ttp://www.relief.jp/itnote/archives/001048.php 23区(23個)だから、「str23ku(23)」としたくなるところですが、
インデックス番号が「0」からはじまるため、
「Dim str23ku(22)」という宣言で計23個の配列が用意されることになります。
この「0」からはじまるという点が、配列を難解にしている要因の一つではないかと思うのです。
VBA(Visual Basic for Applications)ではこの0オリジンを1オリジンにすることができます。
> モジュールの宣言セクションに
> 「Option Base 1」
> と記述する
で、これがまたバグの元なので
>>71 の UBound、LBound で範囲を設定すると言うわけか。
>>75 数値とか個数という表現がさらにややこしくしてるんだな。
配列宣言時に入れる数値が最大なのか個数なのかが違う。
個数 = 10
最大 = 個数 - 1
として
・C言語
int 配列[個数]
for( i = 0; i < 個数; i++ ) {}
・VB, UWSC (「Option Base 1」 を使わない場合)
Dim 配列[最大]
for i = 0 to 最大 next
で、最大 を入れるべきところで 個数 -1 を使ってたからややこしいと。
VBの場合は「Option Base 1」とか UBound、LBound を使って分かりやすく、間違いにくくできるけど
UWSC の場合は 0 が固定なので。
しかし、配列を処理する関数とか作ればUWSCでもなんとかなるかな。
イテレーターとか言うんだっけ。
token 切り出すみたいに1個ずつリターンしてもらう・・・
あ、配列にセットする場合はセットする関数が必要になってややこしいか。
関数作って覚えるなら、配列の扱いを覚えたほうが早いと言う。
っていうか、連想配列使えば1からでも好きなように出来るけど。
true/falseで-1、0、1、 返り血で正常異常その他、-1、0、1、他、 色々さまざまあるじゃん 勝手な思い込みしないで、どっちだっけ?と確認する癖をつければいいんだよ。 てかレス遡ると配列サイズを得るのにlength()使うひとみたいだし、ヘルプや仕様をろくに読まないで文句いってるんでしょ。
sa = SafeArray() が、sa = SafeArray(1,0) と等価になるは納得いかん 上限値はResizeで変更できるけど、下限値は変更不可だから、1始まりのまま。 DIMで作る配列は0始まりなのに、紛らわしい仕様だ。 引数省略できなくするか、または、SafeArray(0,-1)をデフォルトにすべきだと思うな 長さ0の配列作ることのない人には関係ないかもしれんけど
どっちにしても全言語で統一されん限り確認は必要なのになに暴れてるんだ
A[5]が0〜5になる言語なんて他にあるの?
>>78 true/falseが定数名使わないと何であるかなんか、
定数名使う時点で関係なくなるから配列の添字の問題と関係無いじゃん…
確認するっつったって、確認した上で間違えるだろ、
あの素っ気ないHELPじゃ。
> 多次元配列には宣言が必要: DIM 変数名[数]
> (配列での初期値代入: DIM X[2]=1,2,3 配列数の省略可 DIM X[]=1,2,3 )
これだけだぜ。
「0〜4でも1〜5でもないので注意が必要です」とは書いてないからな。
>>78 あと「ろくに読まない」について。
ヘルプに書いてない仕様が多すぎ。
> // For Next 文
> FOR 変数 = 初期値 TO 終了値 [STEP 刻み値]
> 処理
> NEXT // NEXTの後に変数を書いてはダメ
この変数が変更不能であるとは何処にも書いてない。
結果、様々な仕様テストPGを書きまくる必要が出てくる。
え…? お、おう
>>84 俺も以前それにハマッタわ
for i=1 to 5
MsgBox(i)
i=i+1
next
↑これ、VBSでもUWSCでも動作するコードだけど
VBSは、1,3,5 と表示される
UWSCは、1,2,3,4,5 と表示される
>>87 自分も前にハマったわ
他の言語じゃ普通に出来るので結構盲点
>>86 VB6のVBAで試したら、
Option Base 0 '0と1でテスト
Public Sub testArrayUBound()
Dim testArray(5) As Integer
Debug.Print "LBound = " & LBound(testArray) ' Option Base で指定した数
Debug.Print "UBound = " & UBound(testArray) ' 常に5
End Sub
正直すまんかった
画像認証の場合でPCが小さくて画面サイズが小さい場合や 画像認証する画像が一番上に来ていない場合は動作しないの?
1ドットの画像でも検索できる バックグラウンドの画像でも検索できる
92 :
名無しさん@お腹いっぱい。 :2013/05/31(金) 19:25:46.81 ID:xbW2hM4i0
そもそもPCの解像度は関係ないだろ
バックグラウンドはできないだろ。少なくともXPでは。 Vista以降ではウィンドウの表示イメージをアプリごとに持つようになったからできるかもしれないが。
XPでも出来るよ
VMwareで全て解決
XPmodeでも解決
www.uwsc.info/history.html > DOSCMD関数にてマルチ行の実行を出来るようにした このマルチ行とはどのように記述すれば実行できるのでしょうか。 マルチ行の実行とは、DOSCMDの画面表示をTrueで実行すると 例えばバッチファイルに echo テスト1 pause echo テスト2 と記述して実行した場合と同じように複数行の実行ができると理解していますが、 理解が間違っているでしょうか。
>>97 コマンドラインで1行ずつ入力するのと同じでしょ
バッチファイルとは異なり、gotoやサブルーチンコールなどは無理
>>97 確認してないけどマルチコマンドの事かと思ってた
echo テスト1 & pause & echo テスト2
こんな感じね
command = "echo テスト1" + "<#CR>" + "pause" + "<#CR>" + "echo テスト2"
DosCmd(command, false, true)
改行文字を自動的に&に変換して
>>99 のと同じになるってだけだよ
ファイルが大きくなってきたのでファイルを分割したいんですけど、複数のファイルを読み込む方法があったら教えてください。お願いします。
ファイルの数だけオープンすりゃいいだけでないの? 何が聞きたいのか分からん・・・
>>93 xpからprintwindowっていうAPIがあってバックグラウンドでもイメージを取得できるようになった
UWSCはこれを使っていると思われる
>>102 すみません
hoge.uwsが大きくなったので、hoge1.uwsとhoge2.uwsに分割して、
二つを一つのスクリプトファイルとして読み込んで実行したいです。
>>104 hoge1.uwsに
call hoge2.uws
と書いて呼び出せばいい
>>105 ・・・まじですか!!
ありがとうございます。
なんかすみません。
UWSCを使ってPCから音声出力があったらマクロを実行ってできますか? また、音の高さで分岐とかの処理はできたりしますか? 教えてエロい人
音声出力や音の高さを判定するソフトを操作すればいいんじゃないの
UWSCの恐ろしい所は単体で機能がなくても ソフト連携で理論上なんでもできるところだ 波形ソフトで数値を取得したり、最悪画面描画でどうにかできそうだな(適当)
音声入力のチェックだけならDICTATE関数で出来なかったっけ? 自分で使ったこと無いからどういう動作するかは知らないけど
オシロ表示できるソフトの画面監視すりゃいいんでね?
113 :
名無しさん@お腹いっぱい。 :2013/06/07(金) 21:26:36.21 ID:Nu5G3z9f0
ある数値を表示するとき、その数値>0の場合には+記号を付けたいのですが、どうすればいいですか?
>>113 それ用の関数を作ればいいよ
v = 3
MsgBox("v = " + cnv2str(v))
function cnv2str( x )
if x>0 then RESULT="+"+x else RESULT=""+x
fend
115 :
113 :2013/06/07(金) 22:09:51.31 ID:5W9sZJKn0
>>114 できました!
ありがとうございますー。
久しぶりに使おうと思って最新のを入れて使ってるのですが A=val("vk_1") でエラーの値しか帰って来ません。 昔はこれで整数に変換されてたとおもうのですが何か変わったのでしょうか?
何がやりたいかわからないがエスパーで A=EVALl("vk_1")
A=vk_1だったり
すいません、説明不足でした。何がしたいかというと STOP= EVAL("VK_" + READINI("設定","停止","設定データ.ini" )) KEY = EVAL("VK_" + READINI("設定","キー","設定データ.ini" )) IF STOP < 0 then exitexit while true fukidasi("tes") IF getkeystate(STOP) then exitexit IF KEY > -1 Then KBD(KEY,0) wend 設定ファイルのキーコードを整数として扱ってそれできちんと設定されているか判断及び設定されているものだけ使用したいのです 教えていただいたEVALだと設定されているのもはきちんと値を返しくれますが使用したくない場合及び間違っている場合では定義されていませんと出て止まります 昔使ってたVALでは間違ってるものはエラーの値を返すだけなので使用したくなければINIで空白にでもしておけば使用しないように出来ました 最新のVALでは仮想キーコードはなぜかすべてエラーの値しか返してくれなかったのでお聞きしました
LENGTHを使えば? 空白なら0、なにか設定されていれば数値が返ってくると思うけど
EVAL("VK_1")が構文評価で数値の1として評価されるなんて仕様が
定義されてるとHELPに書いてないから、作者が黙って仕様変更したんじゃね?
素直にPOS関数で文字列操作して数値変換したほうが。
っつか
TRY
STOP = VK_0 + VAL( READINI("設定","停止","設定データ.ini") )
EXCEPT
STOP = ERR_VALUE
ENDTRY
で済んだりして…
http://homepage3.nifty.com/ic/help/rmfunc/vkey.htm
マクロを完全に使いこなすにはどうしたらいいでしょうか? 書店等に本は出版されていますか? Google先生のお陰でほとんどのことは出来るようになりました。 新しい壁に今現在ぶつかってしまい、物事さえうまく、説明ができないので知恵遅れだと感じました
そうですか
膨大なテキストから、特定の文字が含まれてたら その行の文字を抜き出したいのですが やっぱり全行を配列に格納してforによる総当たりposやるしかないですか? もっと効率の良い方法ありませんか?
>>125 不可能ではないが、UWSCはWindows操作自動化ツールであってテキスト処理ツールではない。
出来たとしても専用ツールと比べ遅くてメモリも沢山食い潰しそうだ。
それより別のツールにやらせてその操作をUWSCで操作するのが本来的な使い方。
プログラミングでやるにしても他にもっと優れた言語が沢山ある。
バッチファイル+コマンドラインツールですらUWSCに勝るだろう。
っつか膨大なテキストをファイルに保存して1行ずつ処理すればメモリ食わないなw
>>125 grepとかでざっくり抜き出し、その後uwscで処理が楽そう
130 :
名無しさん@お腹いっぱい。 :2013/06/13(木) 04:31:11.40 ID:dpmxU0lB0
メールを常に監視させて、条件に合致するメールを受信したらそれをトリガにしてある動作を走らせたいと考えています。 今風なやり方は、どんなですか? メールは、Gmailです。 受信したら即座に反応してほしいので、時間差のあるPOPではなくて、IMAPでメーラーを設定するべき? できればIEだけで何とかしたい。
即座に反応が重要ならメールサーバー立ち上げて転送機能を使ったほうがいいと思うよ。 送信は規制があってできないけど、受信は無料のサーバーで可能。
>>130 お勧めしないがBecky!2などの有料メーラーは
フィルタリング設定で条件マッチメール受信時に
実行ファイルの実行などを設定できる。
あとはやりたい放題。
>>133 なんでお勧めしないの?
GmailRemoteControlの方がいい?
>>134 使いはじめるとベンダーロックインされる。
ベッキーのメールデータや振り分け設定などは他のメーラーに移行することが困難
136 :
名無しさん@お腹いっぱい。 :2013/06/15(土) 12:48:14.34 ID:zirlsqE10
画像判定について調べてると ペイントで切り出すと精度が落ちるのでGIMP等で切り出そう!とか書いてるブログがありますけど これってオカルトですよね? 単純なbmpなのにペイントとGIMPで生成画像に差が出るわけがないと思いますし それとも何か理由があるんでしょうか?
ただの妄想だな
あれだろ?精度が落るから繰り返しの中で画像が見つからなくなって止まるんだとか思っちゃう人だったんだろ?
>>136 よくわからんけどマウスで切り取りの範囲選択しにくいってことじゃない
gimpだと細かく調整できる
知り合いの話なんだけどで切り出されるネタが自分の妄想というのは バレてるけどブログの話として自分の妄想を語る手口ってのは斬新だな
>>135 どういうこと?
もしベッキーしか使わないと決めるなら、メールをトリガーにしてマクロ起動するのに最適?
ttp://www.m88sb.com/Main/Sports/Sports.aspx ここのユーザーネームとパスワードを入力させたいんだけど、RecIEを使っても記録されない。
inputがtableのなかにあるとできないっけ?
IE.document.getElementsByName("txtLoginID").Item(0).value = "test"
IE.document.getElementsByName("txtPassword").Item(0).value = "test"
も
IE.document.forms[0].elements[0].value="test"
IE.document.forms[0].elements[1].value="test"
も
IE.document.forms[0].txtLoginID.value = "test"
IE.document.forms[0].txtPassword.value = "test"
も
IESETDATA(IE,"test","txtLoginID","ユーザーネーム")
IESETDATA(IE,"test","txtPassword","パスワード")
も、みんなダメだった。
ちょい質問 id = GETID("Microsoft Excel - 新規Microsoft Excel ワークシート.xls", "XLMAIN", -1) これの xlmain と -1 って言うのは何か意味があるのでしょうか?
あるよ
>>142 IFRAME内にフォームがあるから、フレームを辿る必要がある
たぶん
IE.document.getElementById("frameLogin").document.loginForm.txtLoginID.value = "test"
IE.document.getElementById("frameLogin").document.loginForm.txtPassword.value = "test"
146 :
142 :2013/06/17(月) 00:42:44.37 ID:B4TdB57y0
>>145 ありがとうございます。
でも、早速やってみましたがダメでした。
ページ見てないけどインフレームでの入力ならこれじゃね? RE:教えてください! umiumi ドメインが違うIFRAMEの場合は、セキュリティ上 DOMでの制御はできません。 この場合は、SENDSTR関数(ACCを指定)を使用して下さい。 id = GETID("Sleipnir") SendStr(id, "123456", 6, True, True)
エクセルを開いてマクロを実行させたいんだけど excel = CreateOLEObj("Excel.Application") excel.Visible = True excel.WorkBooks.open("ファイル名") excel.run("マクロ名") だと マクロは実行されるんだけど COM_Error :例外が発生しました。 ○行目:EXCEL.run("マクロ名") って出るんだけどどこがダメなんでしょうか?
149 :
142 :2013/06/18(火) 12:16:56.15 ID:QeaOqY7V0
>>147 ありがとうございます。
ユーザーネームは
SendStr(id, "test", 3, True, True)
でいけましたが、パスワードは
SendStr(id, "test", 4, True, True)
でダメでした。
検証コードは
SendStr(id, "test", 5, True, True)
でいけます。
>>148 エクセル?
エクセルのあらゆる自動操作がエクセルVBAで可能で
マクロ記録機能使えばどんな操作もコード化してくれるのに
UWSCでエクセルに何いじるの?
こういうことするしかないんじゃね?俺はSENDSTRがACCでフリーズするので直接入力。 アルファベット対応版つくってくれ // SENDSTR代用関数(フォーカス済みのテキストボックスに数字をタイプ) FUNCTION sendNumDirectly(sourceNum, lPosX, lPosY, lFlgF10AndEnter=TRUE) RESULT = FALSE sourceNum = VAL(sourceNum) IF sourceNum=ERR_VALUE THEN EXIT LeftClick(lPosX, lPosY, 1) IF GETKEYSTATE(TGL_IME) THEN KBD(VK_KANJI,CLICK,500) KBD(VK_HOME, CLICK, 300) FOR lI=0 TO 5 KBD(VK_DELETE, CLICK, 300) NEXT IFB sourceNum < 0 THEN KBD(VK_SUBTRACT, CLICK, 300) sourceNum = ABS(sourceNum) ENDIF sourceNumStr = "" + sourceNum FOR lI=1 TO LENGTH(sourceNumStr) aChar = COPY(sourceNumStr, lI, 1) KBD(VK_0 + VAL(aChar), CLICK, 500) NEXT //冒頭の対策でもIMEが解除できなかった(あるいは逆にIMEが起動してしまった)場合の対策 //F10で半角英数、ENTERで確定。 IFB lFlgF10AndEnter THEN KBD(VK_F10, CLICK, 300) KBD(VK_RETURN, CLICK, 300) KBD(VK_ESC, CLICK, 300) ENDIF RESULT = TRUE FEND
LeftClickがありませんってエラー出る。
FUNCTION LeftClick(cx, cy, lSec=1, lBeforeSec=0.1, lAfterSec=0.4) RESULT = FALSE SLEEP(lBeforeSec) TRY BTN(LEFT, Down, cx, cy) SLEEP(lSec) BTN(LEFT, Up, cx, cy) RESULT = TRUE EXCEPT //writeLogAndFukidasi("ERR: LeftClick("+cx+","+cy+","+ly+")") SLEEP(10) ENDTRY SLEEP(lAfterSec) FEND
>>151 問題は、どうやってそのテキストボックスにフォーカスするかだよね。
番号で指定できないとすると、タブ移動くらいしかないか。
156 :
名無しさん@お腹いっぱい。 :2013/06/20(木) 10:58:28.36 ID:HTL8kg6U0
>>142 のサイト見たけどSendStrで名前入れられるならその後TABキー(KBDで)でPASSWORD、検証コードって移動できるよ
とりあえず低レベル記録を再生して成功したら パスワードを引数としてKBDで自動操作する関数を作りこめばいいだろうな アルファベットや記号をVKにマッピングするのは面倒くさそうだ 例によってナンカのAPIだとtoStringで一発で出来るみたいではあるが
158 :
142 :2013/06/21(金) 09:21:10.08 ID:IAXRAkYw0
ありがとうございます。
>>151 さんが作ってくれたのは、残念ですけどよく分かりませんでした。
結局、これで何とかやることにしました。
SendStr(id, "test", 3, True, True)
sckey(id, vk_tab)
Sleep(0.2)
sckey(id, vk_t)
Sleep(0.1)
sckey(id, vk_e)
Sleep(0.1)
sckey(id, vk_s)
Sleep(0.1)
sckey(id, vk_t)
仮想マルチモニターとか仮想デスクトップ使って UWSCで監視できる範囲を広げたいんだけど、何かいいツールない? やっぱ、でっかい液晶モニタ買って物理的に画面でかくするしか方法ないんだろうか
160 :
名無しさん@お腹いっぱい。 :2013/06/22(土) 11:21:22.95 ID:J7eZCuiw0
モニタのサイズは関係なくね?
>>160 モニタが大きい分、ウィンドウを多く並べて監視対象を増やせる
162 :
名無しさん@お腹いっぱい。 :2013/06/22(土) 12:33:32.38 ID:J7eZCuiw0
モニタ関係ないでしょ 解像度の問題
監視ってそもそも何をどうやってなのか後出し臭がするので聞かないが、 肉眼で目を離さずに見比べ続けるとかでなければ ウィンドウを複数開いて自動操作対象のウィンドウ以外を最小化すればいい
窓ID指定すれば隠れてるウインドウも監視・操作できるはずだけど。 それじゃいけないのかな。
>>163 >>164 0.1秒毎に各ウィンドウの指定の座標をクリックし続けるようなスクリプトなんだけど
ウィンドウID指定しても、ブラウザのバグなのかうまく最前面に来てくれない事がある。
最小化はさすがに頻繁にやりすぎて何かしら問題が起きそう
仮想マシンとか試してみたけど無理っぽいから
諦めてでかい液晶モニタ買うわ
>>166 そのacwでウィンドウID指定して最前面に持ってきてるよ
ちがうちがう。MOUSEORGで直接窓IDを指定。 MOUSEORG(窓ID,2)って書いたあとはMOUSEORG(0)で閉じるまで その窓IDがキーやマウス操作の対象になる。 acwで全面に持ってこなくても、隠れたまま操作可能。
>>168 HELP見てみたが
第2引数の指定って
何でわざわざ0と1があんのかね
2が出来て完璧なら0も1も要らないじゃん
0や1じゃないといけないケースって何
と思った。
>>165 複数ウィンドウを0.1秒=100msごとにクリックって相当過酷な操作だな
仮に自動操作じゃなくて超速くて正確な手動操作したとして
ウィンドウのほうが処理落ちでついてこれないことがあるんじゃね?
WindowsもLinuxもリアルタイムOSじゃないからね
直接送れない対象もあるからだろ
>>169 窓内の相対的な位置で座標指定できれば、PC自体の解像度が変わっても
問題なく動作するっしょ。
0.1秒間隔でクリック連打するマクロは使ってるが、意外と大丈夫だ。
ぜーんぜんなんともない。
>>169 2が効かないケースがあるからな、ゲームとか
Ready状態後のウィンドウ上でなら100msぐらい余裕で反応するが リソース不足気味のPCで FLASHやUnityなど重いページを表示したブラウザなどを タブでなく複数のウィンドウで何枚も立ち上げたりすれば ウィンドウの切替だけでも数十msは待たされる印象がある 最小化したりすると目に見えて軽くなる
2が効かないケースが有るってことは 逆に言えば、最初から2を試して 効かない場合のみ下げていったほうが良いのかな… 今度やってみよう
MOUSEORGなんて便利なものがあったのか…… ただ、今からやろうと思うと膨大な量の書き変えと ポチった液晶モニタのキャンセルが必要にorz まあおいおい対応させよう
MOUSEORG 使っても、画面より大きい範囲は指定できないと思うが。
178 :
名無しさん@お腹いっぱい。 :2013/06/23(日) 18:47:19.07 ID:qLhcglRE0
ここを見て、メール受信をトリガにしてマクロを動かすにはBeckey!がいいことはわかりました。 では逆に、マクロを動かし続けて、ある条件が発生したときにメールを送信して通知させるには、どうするのがよいでしょうか。 これも、やっぱりメーラー動かした方がいい?
Beckey!ってマクロ機能あったっけ? そういうのなら秀丸じゃないかな?? UWSCは操作を自動化するソフトに過ぎないから メールを送信するにはどうしたらいいかで 難しく考える必要は無いかと。 いつも使ってるメーラーがあれば、それを操作してメール送ればいいし Pro版でよければWebブラウザの操作を丸ごと記録再生できるから それでWebメール操作するのがラクかもしれない。
CDO.Messageを使えばGmailとかでメールできる ただし、アクセス数多いとアカウント停止する
アプリ立ちあげずにメール送れるその方式、 前から便利だと思ってたんだが、1日200通くらいまでなら大丈夫そう?
自分の場合は200通くらいで停止した アプリのスクショとって添付してたのも原因かもしれない。 アカウントは一日で再度アクセス可能になったし、複数アカウント用意しておいて 何通かで切り替えるかアカウント停止したのがわかれば、 そこで切り替えてもいいかも
>>182 Twitterの短時間フォローみたいに
一定の規定に達したらしばらく強制休憩ってことか。参考になった。
すまん、誤爆した。
>>178 Vectorで探せばいくらでも出てくるよ
俺は数年前、コマンドラインでテキストファイルをメール送信するツール使ってたな
>>186 俺それ使ってたけど
自分宛にしか送れなかった
そりゃプロバイダのポートブロック回避や自分のPCのファイアウォール設定とか必要だし
189 :
名無しさん@お腹いっぱい。 :2013/06/26(水) 14:27:30.32 ID:2WyGqAvE0
COMオブジェクトの操作のまとめコードみたいのってあります? ヘルプに載ってないみたいで IE.visible = True IE.navigate("") こういうのが載ってるのです
>>189 Visual Studio でインテリセンスに頼りながらプログラミングしたほうが幸せそうだ。。。
輪郭が背景に溶け込んでぼやけてる縦横15ドットくらいの文字列画像認識したいんですがいい方法ないですかね chkimgだとどうも上手くいかなくて
captraだっけ?
194 :
名無しさん@お腹いっぱい。 :2013/07/05(金) 19:42:42.22 ID:JxXZfGli0
ぼやけてる部分削ればいいじゃない?
俺も背景が変化する半透明っぽいボタンの認識に苦労してる 良く出来た「あいまい認識」の実装が急務だと思う 最近のゲームはボタン一つにもエフェクトがかかってたりして手が込んでるから ゲーム用マクロツールとして見ると正直時代遅れの感が否めない 公式サイトを見ても、掲示板はかつてのteacupのようですごく古臭いし 最近流行りのSNSやgoogle+のシェア機能なんかも全く利用してないし、 作ってる人の感覚やPCを使うスタイルみたいなものが10年前で止まってそう たぶん40歳越えたおっさんだと思う
196 :
名無しさん@お腹いっぱい。 :2013/07/06(土) 08:27:22.40 ID:hglpgn4w0
いや俺ゲーム用じゃないし 公式掲示板でもゲームのたぐいの話はNGだからな
>>192 無理
重ねあわせ処理によりbmpとして見た時に異なる画像になってしまうからこれ当たり前
>>193 CAPTCHA(キャプチャ)なら絶対無理
CAPTCHA画像をSAVEIMGしてメール送信して回答メールから解読結果を書き込むことは出来る
>>195 OpenCVやOCRじゃないと無理
そこまでやろうとするともやはUWSCでは全くの力不足
ロボットの視覚ソフトウェア作るレベル
だがゲームのbotツールとして見るなら方向性としてはパケットやメモリを覗いたほうが正しい
でもUWSCはbotツール用のソフトではないので。
まぁ俺は使ってるけどね。
>>192 の場合なら単に背景に溶け込まない部分を探して使うだけ。
無ければそういう状況を探し出し作り出す。
当然その代償として作業全体としては遅くなる。
199 :
192 :2013/07/06(土) 09:23:20.86 ID:epmGhJbJO
丁寧な解答ありがとうございます 文字の太さが1ドットなので溶け込んでない部分がないんですよね OCR系のソフトと連携する方向で考えてみます
>>199 敢えて言おう
無理であると
もしそれがゲームであるなら、無理であることが意図通りであるということ
もしそれがゲームでないなら、別の手段でアクセシビリティが提供されていることに気づいていないか、
単にアクセシビリティが糞過ぎて使えないソフトかサイトであるということ
まぁ > 作ってる人の感覚やPCを使うスタイルみたいなものが10年前で止まってそう > たぶん40歳越えたおっさんだと思う は同意かなw
その何とかボタンってのまったく必要性ねぇwww
と思ってる無知なおっさんは時代に付いていけないのであった
SNS連携って何に使うの? ゲームの知り合いとかに俺マクロしてるって言いたいだけ?
SNSで汎用関数群提供とか?
そういう余分な気持ち悪い機能はいらん
意味不明なマクロ構文が垂れ流されるぐらいなら余計な機能なんてイラネ そもそも公式じゃなくて自分でその手のコミュ立ち上げてから口を開けよ
>>209 余計な機能なんてイラネ(キリッ
なんで上から目線なの?
お前みたいな屑の方がよっぽどイラネ(キリッ
カスNSのボタン云々は蛇足じゃないの デザインがショボいお、が真意じゃないかな 本気で連携ボタンほしいお、ってんなら、 いやどっちにしろ痛い子夏の風物詩だね
212 :
名無しさん@お腹いっぱい。 :2013/07/08(月) 05:59:21.52 ID:pgmJvHrF0
イイネボタンやツイートボタンで利用者アップ、 RSSフィードで更新情報や新トピックの配信、 Google+やトラックバックで関連記事と紐付ける、とかの 重要性が理解できないのは時代についていけなくなってる証拠 ガラケーで充分と言ってるのと同種の人間 本人は必要ない余分なものだと信じて疑わないが 実は価値観が出来上がってしまって頭が固くなってるだけ 気付くと新しい物に疎い中年の一丁上がり ラジカセなんか要らないレコードの方が音がいい! 昔から延々と繰り返されてる
213 :
名無しさん@お腹いっぱい。 :2013/07/08(月) 07:53:06.27 ID:7JZtb1q3P
見ず知らずの情弱にイイネなんてつけられたら恥ずかしくて自害して果てる
本人は必要だと信じて疑わないが 実は価値観が出来上がってしまって頭が固くなってるだけ
215 :
名無しさん@お腹いっぱい。 :2013/07/08(月) 08:50:44.70 ID:1aHjlsVQ0
気付くと流行に踊らされるガキんちょの一丁上がり そんなに新しい物が好きならこんな古臭い言語仕様のソフトなんて使うなよ
>>212 クソワロタwww
これ本気で言ってんだよな・・・?
すごい重要性だな!w
検索 ※過去ログ記事を検索するには、各過去ログ上で検索して下さい ※20件以上は表示されません 自前で掲示板一括全文検索できないなら googleサイト検索のテキストボックスぐらいつければいいのに… あ、レンタル掲示板でドメイン名がアレだから、それも無理なのかw
218 :
名無しさん@お腹いっぱい。 :2013/07/09(火) 07:47:45.63 ID:AZFmw7ltP
効いてる効いてるwww
>>203 >>204 >>209 >>211 >>213 >>214 >>215 ”無いことのメリット”を説明できずに個人的な使用目的や感情論しか
垂れ流すことができないのって哀れだな。反論になってない事に気づいてない時点で論外。
新しいものを認めたくてキャンキャン泣いてる負け犬なのは誰がどう見ても明らかだが、この手のやつは
まともなスクリプト書く知能も思考能力も無いから短文や草、オウム返しとかでしか切り返しできないから見てな。
きっとSNSに親でも殺されたんだろう。 仮にSNS=厨房が沸く的なイメージで固執してるならそれは大きな間違いだし 海外の技術フォーラムとか見た事あるスレ民なら説明しなくてもいわずもがなWeb連携のメリットは分かってるはず。 100歩譲ってボタンは省いたとしても、有用トピが超初心者のトピで沈むのを避けるために 形式変更はあった方が使いやすいね。掲示版住人も住み分けできてるから、例えば 一行の回答で終わるような話題は初心者トピに集めるとかすれば技術トピの発展もしやすい。
uwscなんて本格的にプログラミングするためのものじゃない これに尽きる
いや、お前の言う重要性とやらはよく分かったよ お前にとってはかなり重要なことなんだろう けどいちいち押し付けんなよ
使いたくないやつは機能実装されても使わなきゃいいだけじゃないの? 俺は使わん
他はともかく
>>213 みたいなのは病気でしょ
いいねボタン押されようが押されまいが思われたら一緒じゃね?
いいねがつくつかないで何か変わるの?
むしろ「恥ずかしくて自害して果てる(キリッ」なんて書き込みの方が恥ずかしいと思うんだが
さっさと自害しろって話
高尚(のつもりらしい)論を展開するのがなぜここなのか、というのが一番滑稽なんだが。 作者さんに直接、僕の考えた最強のサイト!案を出してこいよ。
まだいたのかよさっさと作者に凸ってこいよくそめんどくせぇ そんなことよりimacrosに変数受け渡すスマートな方法誰か教えてくれ
つーかそういうことこそ公式サポート掲示板で聞いたらよくね? このスレいらなくね?
恥ずかしくて自害して果てるってイイネ
>>227 ネチネチと粘着して気持ちわりーやっちゃなぁ・・・
なんでも自分の思い通りにならないと気が済まないんだろうけど
いらんと思うなら来なけりゃいいだけじゃねーの?
230 :
名無しさん@お腹いっぱい。 :2013/07/10(水) 11:54:12.30 ID:4B9H8XFU0
新しいものを取り入れられないどころか 拒絶するようになったらいよいよ老化が進んでる証拠だな
>>229 公式掲示板で聞けって何か間違ってた???
>>231 間違ってないから公式掲示板に行け
戻ってくんな
戻ってくるとか自由なのになんで強制されなきゃいけないの?
そんなことよりお前ら
>>226 に答えてやれよ
>>233 義務を伴わない自由や意味不明な個性が大切にされる社会なんてのは
空想上の社会なのよ?w
>>201 は見てるならコテでもつけてもう一度降臨してほしい
気に食わない書き込みを全てお前だと決めつけている粘着キチガイが常駐しちゃってるぞ
検索 ※過去ログ記事を検索するには、各過去ログ上で検索して下さい ※20件以上は表示されません 自前で掲示板一括全文検索できないなら googleサイト検索のテキストボックスぐらいつければいいのに… あ、レンタル掲示板でドメイン名がアレだから、それも無理なのかw
>>235 呼ぶなw
公式掲示板にいいねボタンつけろだとか
ここで喚いても意味ないことくらい分かるだろ?
> googleサイト検索のテキストボックスぐらいつければいいのに… その程度のことなら自分でできるだろ。 できることは自分で何とかするのが自動化ツールなんだってこと忘れるな。
はい、結論出ました 自動化ツールなんだから自分で何とかしろ
自分でgoogleサイト内検索できないような情弱はお断りなんだが
作者さんでもない人に何かを断られても何の影響も無さそうだが… レンタル掲示板ドメインであってもUWSC掲示板のみターゲットとするサイト内検索方法を教えてくれないのなら、確かに困ったな。 俺情弱だから判らん。
>>244 それサイト内検索じゃなくてフリー検索だけど
総論であなたが情強です
ローカル保存してそこから検索するのならUWSC掲示板の一番下に置いてあるやん
>>245 サイト内検索でぐぐって一番最初に出てくるんだけど。
・普通はオプションを隠し属性で渡してるだけ。
・フリー検索じゃねーから
ttp://www.hyuki.com/netserv/google.html 検索サイトGoogle.comの検索用のテキスト入力のところでsite:というキーワードを利用すると、 指定したサイト内の検索を行うことができます。
でも上記の方法だと、site:www.hyuki.comという文字列が表示されていて、 ちょっと不恰好ですね。
このページでは site:www.hyuki.com を表示させずに サイト内検索をする方法を示します。
<input type="hidden" value="hyuki.com" name="as_sitesearch" />
ttp://www.google.co.jp/intl/ja/faq_freewebsearch.html よくある質問 -- Google フリー検索 (カスタマイズ版) : ウェブ検索
よくある質問 -- Google フリー検索 (カスタマイズ版) : サイト検索
>>247 結局、
公式掲示板がコレ使わずに
過去ログを20件づつ分けてしか検索できないようにしてるのは
つけようと思えばつけられるけど
俺達への愛の試練として
敢えてつけないってことでFAなのか?
>>248 馬鹿はヘルプすら読まないから掲示板のその他の内容にも
目を通しておけってこった。意味不明な改行するぐらいなら
>>249 バカがヘルプすら読まないと
なんで掲示板が出てくるんだ?
ヘルプ読めば掲示板の過去ログなんて不要だから検索を便利にする必要もない、
なら筋は通るが
沸いてるのが沸いてるナ
スレタイ読めよ。「UWSC使いよ集まれ」だよ。 「UWSC使いたい人集まれ」じゃないんだよ。
クリックイベントをバックグラウンで送れるように タッチイベントをバックグラウンドで送りたいんだけどなにか方法ないかな
公式で聞け
作ったスクリプトがどう動いてるか知りたいのですがよい方法ありませんか? printを使って一文毎やると凄い手間がかかってしまいます。わかる方教えてください
257 :
名無しさん@お腹いっぱい。 :2013/07/18(木) 19:06:55.56 ID:+5oWFf0C0
デバッガー
>>256 ありがとうございます。正にコレですね
ただ…高い…。試用期間2週間って何度も出来るわけじゃないですよね?
>>257 そういえば、昔Excelのマクロを少し勉強した時にデバッグって目にした覚えがあります。調べてみます
msgboxを入れてる
260 :
255 :2013/07/21(日) 11:50:32.28 ID:15KbCEU/0
デバッガをググってみたけど、pro版しかなさそうでした…。
>>259 ありがとうございます。msgboxはその都度止まってしまうし、print使うのと手間が変わらないです
・関数分割による構造化の徹底 ・CALL文によるファイル分割 ・main()に相当する本分は1ファイルとし、他ファイルは関数ライブラリとする ・多用する基本命令を関数でラッピングし、エラー処理する ・ファイル入出力関数を使い、デバッグログ関数を作る ・長い関数は分割するのが基本だが、やむを得ない場合、 関数内のどこまで進んだかの進行度変数を持たせ、 ログやPRINTに表示させる。 PUBLIC LOG_FNAME_DEBUG = "debug.log" PUBLIC gFlgLoggingDebug = TRUE PUBLIC gMaxLinesNumOfLoggingDebug = 2000 PROCEDURE writeLog(lStrLog) IF !gFlgLoggingDebug THEN EXIT lFID = FOPEN(LOG_FNAME_DEBUG, F_READ or F_WRITE) deleteLinesUntilTargetLineCount(lFID, gMaxLinesNumOfLoggingDebug - 1) FPUT(lFID, getCriteriaDateTimeStr() + " " + lStrLog) FCLOSE(lFID) FEND PROCEDURE writeLogAndFukidasi(lStrLog, lMsgPosX=0, lMsgPosY=0) FUKIDASI(lStrLog, lMsgPosX, lMsgPosY) writeLog(lStrLog) FEND
FUNCTION deleteLines(lFID, lStartLine, lEndLine) RESULT = FALSE TRY //IF lEndLine < lStartLine THEN swapVariable(lStartLine, lEndLine) FOR lI=lStartLine TO lEndLine FDELLINE(lFID, lI) NEXT EXCEPT EXIT ENDTRY RESULT = TRUE FEND FUNCTION deleteLinesUntilTargetLineCount(lFID, lTargetLineCount, lDeleteDirection=0) RESULT = FALSE lLineCount = FGET(lFID, F_LINECOUNT) IFB lLineCount <= lTargetLineCount THEN RESULT = TRUE ELSEIF lDeleteDirection = 0 THEN //先頭行から削除 RESULT = deleteLines(lFID, 1, 1 + lLineCount - lTargetLineCount) ELSE //最終行から削除 RESULT = deleteLines(lFID, lTargetLineCount + 1, lLineCount) ENDIF FEND
263 :
255 :2013/07/21(日) 13:26:56.15 ID:15KbCEU/0
>>261-262 これ自分に対してですよね?
そうだとしたら素人なのでよくわかりません。すいません。
これをスクリプトのどこかに貼れば良いんですかね?
無知ですいません。
ただのオナニーだから相手にしなくて良し
266 :
255 :2013/07/21(日) 15:33:16.92 ID:15KbCEU/0
>>264 すいません。
今日は7月21日ってことで許してください
>>265 纏めれるものは纏めてしまえば解析が楽になるということですね
先程のスクリプトは何ですか?
あらうまいw
>>266 出来ればコードを読んで使って欲しかったが…
デバッグ用のログファイルを出力するのに使う関数ですよ。
PRINT文の代わりにwriteLog("デバッグメッセージ")とすれば
テキストファイルに残るので、長時間の動作見るのに使える。
もっともPRINT文は、
> 同じ内容をUWSC.LOGに保存
> (最大行数は uwsc.ini の LogLines= にて指定可、もしくはOptionにて)
とあり、Optionでパスやモードも指定できるので、
ログファイルのファイル名が単一で良い場合は不要ですな…
私はPRINTのウィンドウが邪魔なのと
ファイル名を起動PCによって変えたりするのでコレでやってます。
あ、getCriteriaDateTimeStr() が無いとダメですね。
FUNCTION getCriteriaDateTimeStr(lOffsetDays=0, lRefDt="")
IFB lRefDt = "" THEN
GETTIME(lOffsetDays)
ELSE
GETTIME(lOffsetDays, lRefDt)
ENDIF
// YYYY/MM/DD HH:NN:SS
RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2
FEND
全角スペースは半角かタブ文字に置き換えてね
268 :
255 :2013/07/21(日) 22:49:57.04 ID:15KbCEU/0
>>267 すいません。
まだ始めたばかりの素人なんで…。せっかく親切に教えて頂いたのできちんと時間ある時に一つずつググります。
それと、内容は全く理解してないですが
>>261 ,262,267をスクリプトの最初に貼り付けてみましたが、動かなくなりました。
>>268 関数を最初に貼りつけたら
その後ろのベタ書き(main()相当)は動かないよ
後ろに貼り付けるか別ファイルにしてCALL
でもそれ以前の段階みたいだね
プログラミングの基礎から関数までのテキスト読んだほうがいいな
270 :
255 :2013/07/22(月) 11:35:15.78 ID:iklThCsb0
>>269 すいません。
本当にそれ以前の段階です。
皆様はどうやって学習していったのでしょうか?
自分は
>>1 にある初歩のサイトでスクリプトをコピペして動かして少し変えてみて動きを理解している段階です。
272 :
255 :2013/07/22(月) 13:57:14.70 ID:iklThCsb0
>>271 そうなんですか…。
数年前事務職でEXCELとACCESSを少し使っていて、マクロに興味を持っていたんです。
最近UWSCの存在を発見したので遊び心で時間ある時にやりはじめたんです。
参考URLをご丁寧にありがとうございます。見てみます。
273 :
255 :2013/07/22(月) 13:59:18.05 ID:iklThCsb0
というか、自分スレ汚ししてるような気がするので、捨てアド貼った方が良いですかね?
メールだと誰かレスしたのかどうか分からないし 特定の人に依存することになるからよくない。 メールでやるくらいだったら公式掲示板で作者に質問したほうがいい。 2ちゃんねるは喧嘩とかにならなければ自由に書き込んでいいんじゃね? 時期によって常駐してる人も違うし、書き込んでみて何か言われたら考えればいい。 夏休みとかになると子供が多いんで適当なこといいまくるけど そういうのは気にしなくていいお。
>>273-274 UWSC使いが集まるチャットがあれば便利そうだな
ちなみに一昔前はグループチャットといえばIRCが定番中の定番だった
今もネット古参達の間では当たり前のように使われてるそうだが
別にこのままがベストだと思うけどな チャットだと常に誰か居るわけでもないしすぐ過疎るのが目に見えてる このスレで別に他のことで盛り上がってるってわけでもないし
Linuxで同じようなソフトないかなぁ
278 :
名無しさん@お腹いっぱい。 :2013/07/28(日) 00:13:43.54 ID:JPJ+NpRD0
画像認識を含むスクリプトをexe化したいんだけど誰か方法わかりませんか? iexpressでやってもやっぱり意味無いですもんね・・
279 :
名無しさん@お腹いっぱい。 :2013/07/28(日) 01:45:56.77 ID:Sb1g5G6j0
pro
ちょっと質問なんですが chromeで画像認識の簡単な操作してるんですが、デスクPC(i5、8GB、win7home)で再生すると 開始数分で通常時40%前後のメモリ使用率が80%を越えます。終了しても減らず、 タスクマネージャーで確認してもその使用率の上昇分が表示されず何に使われているのか不明です。 同じものをノートPC(i3、8GB、win7home)で再生してもこの現象は起きません。 原因わかる方いますか?
エアロ切ってないとかじゃない?
回答ありがとうございます。 試したところ異常はなくなりました。ただどちらもエアロが有効のままだったので 片方だけ起きたのが謎ですね。
ピークカラー関数を使って、あるポイントの色($FF0000)の識別をしているんですが たまに色が変わってないのにエラーが出る(ポイントの色が変わった時用のif分岐動作)ので調べてみると $000000と$FFFFFFを吐き出しているようなんですが、これは仕様でしょうか? 負担をあまりかけないようにピークカラーは1秒おきに使用しているし PCのスペックはそこそこで、使用中は余裕があるほどなのでスペック不足ということも無さそうなのですが…。 どなたか分かる方いらっしゃいますか?
>>283 まずは再現する短かなソースかif周辺のソースを貼ったほうがいいかと
>>284 ソース張り忘れ失礼しました。
┌─┐
│; ↓
│while true
│; sleep(1)
│; color = peekcolor(25,25)
│; ifb color = $FF0000
│; ; break
│; elseif color = $000000
│; ; break
│; elseif color = $FFFFFF
│; ; break
│; else
│; ; エラー時の処理
│; endif
│wend
│; │
└─┘
(25,25)が$FF0000色だったらbreak→再び1秒後カラーチェック
今はelseifで$000000と$FFFFFFを吐き出した時も問題ないようにして正常に動いてるんですが、なんかスッキリしなくて…。
もちろんチェックしてる座標に黒い物や白い物を被せたりはしてないですorz
色が変わってるんじゃない?
>>286 チェックしている対象は色が変わるような物ではないので大丈夫だとは思うのですが
一応各break、elseの部分に「print color」を入れてしばらく数値をチェックしてみましたが
自分で意図的に座標部分を隠した時以外は$FF0000(チェックしたい色)$000000、$FFFFFF以外の数値は出て来なかったので
目で判別できないレベルで色がひっそり変わってるというのは無さそうですorz
>>287 今まで使ってきてpeekcolor()が変な値を返した事はないなぁ、mouseorg()とかは大丈夫?
あと可能ならuwscのバージョン変えて確認してみるのも1つかもよ
最新だから良いって物でもないしね
printでのチェックは他の部分も含めてのチェック? そのループ部分だけの状態でのチェックだと他の部分が悪さしてるのとかわからないからエラーはかないってこともあるよ
後出し後出しにならないように、サンプル作ってUPしてくれ。それが早い。 環境依存か仕様かどうかを、(俺以外の)スレ住人が総力を挙げて全力で調査してやる。
elseでcolorが何になってるか吐かせればいいだけ。 何ならその時をSAVEIMGすればいいじゃん。
ん?$FF0000色「しか」有り得ないはずって前提か? ならば色判定する必要性自体が皆無なんだが… $FF0000色になるのを待つ、って処理で、 $FF0000色になっているはずなのに$0や$FFFFFFを取得し続けるのか? ループの中にウィンドウID再取得とMOUSEORG入ってないが?
質問です、ネットゲームの話なんですが メインPC側でUWSCを動かして仮想PC側のネットのキャラを動かしたいのですが 画像認識が上手くいきません ACW(GETID("Windows 7-1 - VMware Player","VMPlayerFrame"),0,0,1170,928,0) ifb chkimg("A.bmp",0,0,0,1000,0500) mmv(G_img_X,G_img_Y) endif これで動かしているのですが目的の画像の上にマウスポインタが移動しません bmpも24ビットで保存していて、画像自体も一色のみです もしかしてメイン側では仮想PC側の画面を判定するのでできないのでしょうか?
そっかー
A、Bはそれぞれの行動であるとして・・・ Aを3回繰り返した後、Bを1回する。 これをループさせたいんですがどうすればいいんですか? for kaisu=1 TO 3 A next B からわかりません
リピート 1 A、B
>>293 本当に画像判定が失敗しているってことが特定できているのかな?
SAVEIMGで画像が取得できていることを確認してみ。
実は、判定に成功してマウス移動しているけど、VMToolsのラグで操作が無効になってたりする場合も考えられるよ。
その場合は、画面内を一度クリックしてから操作するとか何とかが必要かもね。
>>295 VB 多重ループ でググる
UWSCでブラウザの操作を自動化したいのですが、同時に 二つのブラウザを使うもののそれぞれのセッションを別けな いとダメのようです。 ブラウザを起動するときは -nomerge と言うオプションを使 って別けているのですが、UWSCで起動するときは IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True 以外にどの様な命令を出せば良いでしょうか?
IE = CreateOLEObj("InternetExplorer.Application") IE2 = CreateOLEObj("InternetExplorer.Application") と2つオブジェクト作って操作するのはダメなの?
>>300 すいません説明不足でした。
UWSCを実行するときは既に一つブラウザが開いて使っている状態です。
それとは別にUWSC経由でブラウザを開いて、それは元から開いている
のとは異なるセッションを持たせたい感じです。
理由は特権権限でログインしてログを表示させながら一般権限でログ
インしてデータの投入を行いたいのです。IEとFirefoxを使えば実現出
来るかと思ったのですがシステムがIEでしかダメで、パソコンを別ける
のも難しいので悩んでいます。
>>301 IE8以上使ってるならだったら
InPrivateブラウズモード使うといいかも
doscmd("start iexplore -private")
sleep(3) //IE起動を待ってみる
InPrivateIE = GETACTIVEOLEOBJ("InternetExplorer.Application", "InPrivate")
クラス感覚で機能単位のuwsファイル用意してcallで呼び出そうとしたら返値的なもの受け取る方法ないよね どうしたものか
publicな変数で渡せばいいんでない?
>>302 ありがとうございます!
なんとか行けそうです。
本当に助かりました。
>>304 そんなんアリなの?と試したらできたー
返値専用のpublic変数を用意しておけば捗るね
androidでUWSC的な自動操作したいのだけどまだそういうソフトないのな
Android マクロで検索すればいくつか出てくると思うけど? アンドロイド端末でやらせるよりもリモート操作だったりPでCで操作できるようにさせてPCからマクロ実行っていうのが多いと思うけど(アンドロイド端末でやらせるよりも処理が軽い)
>>309 PC対応ソーシャルゲームだがandroidの標準ブラウザでも一応動くのでスマホでマクロ操作させたい。
PCつけっぱは電気代がもったいない
そうですか
電気代ケチる人が自動とか考えちゃダメだよ。 省電力PC組むだけじゃない。 この際出費も考えちゃダメ。
電気代をケチるレベルならそもそもそのゲーム止めれば そんなはした金ケチる必要ないんじゃね?
PC一台マクロに占有されたくなく、使ってない旧いスマホなら占有されてもいいっていうか使い道ないから活用したい ってならわかる
でもそうなると完全にスレチなので適切なスレへどうそって話だわな
単純に動作を記録再生だけならFRepとか使ってればって思う AndroidはJAVAで簡単にプログラムも組めるしゲームのマクロ位ならツール探すよりも自分で作っちゃったほうが簡単な気もする ただアンドロイド端末でずっとつけっぱなしとか熱対策とかそっちの問題のほうが難しとおもうが
UWSCの強みは、低レベル操作関数の作り込みと画像判定。 オブジェクトを取得してOLEで自動操作するのは VB.netやC#などのオブジェクト指向言語+総合開発環境のほうが普通に楽だろ。 自動操作を考慮されてないアプリに対して自動操作を強行するには 画像判定でゴリ押しするのが手っ取り早い。 自分でやろうとしたら画像処理を自作で作り込むか、OpenCV使わないとだめだろう。 Linux系で無いのが残念。
全角英数→半角英数にするの一番上手いやり方って何かね。 ヘルプ見てもこの変換はできないようだ。カタカナは変換したくない。 今はテキストエディタでやってるから問題ないし 26種×2をreplaceするのもなーって思った。 正規表現は分からんので参考になるURLあったら張ってくれ。
>>320 このくらいしか思いつかないわ
FUNCTION strconv2(str)
for i=1 to length(str)
ascii=asc(copy(str,i,1))
if (ascii>=65296 and ascii<=65305) or (ascii>=65313 and ascii<=65338) or (ascii>=65345 and ascii<=65370) then ascii=ascii-65248
RESULT=RESULT+chr(ascii)
next
FEND
そうだぱーるでだぶりゅえすしーをかこう
>>312 電気代もそうだがこの時期無駄に部屋が熱くなる。
まぁお前は視野が狭いからどうでもいいんだろうが
>>314 なんか大げさだろ
スマホでできることをわざわざPCでって
自鯖とかもお古のスマホで十分
UPSいらないしな
ぷw
[Ver4.9]
TRIM関数の全角指定にて UNICODEのスペース($2029-$202E)も削除するようにした
GETACTIVEOLEOBJ関数にて順番に-1が指定された時は最新(一番最後)のものを取得するようにした
SAVEIMG、CHKIMG、PEEKCOLOR関数にてクリップボードを利用するモードを付けた
CTRLWIN関数にてトップにするがアクティブ化しない TOPNOACTV を付けた
STATUS関数にて IDが有効かを調べる ST_ISID を付けた
GETSTR関数にてアイテムが存在しない場合は EMPTYを返すようにした
FUKIDASI関数のエリアス名として BALLOON を付けた
スレッド使用にてエラーが出るパターンがあるのを修正(スレッドの安定化、最大数を64に)
COM_ERR_IGN、MOUSEORGの有効範囲が全範囲だったのをスレッド単位にした
SENDSTR関数にて DateTimePickerに日付を送れなくなっていたのを修正
Pro版:
SETFORMDATA関数直後の Navigate("javascript:") が実行できないを修正
Debugger: メニューから登録スクリプトを実行できるようにした(初期状態で4つのスクリプト)
RecIE: デフォルトのレンダリングモードが IE7相当だったのをインストールされているIEに合わせた
RecIE: BusyWait関数のロジックを変更した(JavaScript、マルチフレーム対応の為)
RecIE: 再生時に IEが終了されたらスクリプトも終了するようにした
RecIE: 環境によりマルチフレームでの記録ができなくなっていたのを修正
ダウンロード
http://www.uwsc.info/download.html
復帰
公式掲示版ってたまに白熱した展開になるよな
ff14の単純作業でマクロを作ってみようと思うのですが AutoHotKeyとUwscだとどちらが機能性充実していますか? またどちらが覚えやすいでしょうか?
どちらもそんなんに変わらん UWSCは外部のAPIとかDLLを読み込めるが実行ファイルとかにするには有料版が必要(配布とか考えているなら) AutoHotKeyはGUIの作成が簡単、実効化ファイル作るのが無料で出来る
ありがとうございます。 UWSCの方が日本産まれなので参考になるサイトが多いかなと思ったのですが 少し触ってみるとたしかにAutoHotKeyは直感で組み立てることができますね。
ホットキーとしてつかうなら断然AHK。速度も早い ただ書式がとっつきにくい… (自分は)
ゲームのマクロって画像認識させてとかレベルのものでしょ? テストで適当に特定条件下でのボタン押しマクロみたいに単純なもの作ってみて作りやすい、精度が高いと思ったほう使えばいいんだよ ゲームマクロ程度ならUIも外部のAPIやDLLなんてほとんど関係ないんだから 中華のmobみたいなもの作ろうと思ったらマクロツールじゃなく本格的なプログラミング覚えた方が良い
>>335 その通りです。画像認識を使って単純作業の効率化を目論んでます。
BOTを作るにはバイナリーのレベルで解読しないと無理なんですよね?
憧れますけどかなり敷居が高いですね。マクロすらまともに扱えない素人なので
> STATUS関数にて IDが有効かを調べる ST_ISID を付けた やっとか 今までハンドルに変換してからウィンドウIDに再変換とか無駄なことさせられてたよ。
みんなahk使ってるのか せっかくuwsc覚えてそこそこ使えるようになったのに
主観をみんなと表現しちゃう人って
さくらエディタでスクリプト書いてる人はこれやってる? makoto-watanabe.main.jp/program.html#sakura
それやらないとサクラエディタ使ってる意味殆ど無くね?
半端なurlだる それってなに
なるとん :が入ってたら補完してくれるかな
347 :
名無しさん@お腹いっぱい。 :2013/09/09(月) 18:49:38.33 ID:Y7+Rnm/L0
忍法帳のレベルが低いとURLかけないのよ
ああ、そういうことだったか。 確か :// あたりに反応するんだっけ。
にんにん
にんにん
352 :
!ninja :2013/09/14(土) 12:53:49.32 ID:8bZZxalT0
名前欄に !ninja
353 :
名無しさん@お腹いっぱい。 :2013/09/16(月) 16:07:59.86 ID:gkEdeY2B0
データグリッドビューを操作することってできないんですか?
call(ブレイク)の数に制限ありますか? 今まで20個コールして自動運転できてました 25個に増やすと必ず22個目にハングアップ uwscをタスクマネージャーでプロセス終了してはテストしてます 呼び出す順番変えても22個目にハングアップ 13個と12個に分けて2つのスケジュールにすると止まらず運転できます windows xp sp3 uwsc4.8 Google chome ブレイクかコールが怪しい気がしてます どなたかご教示お願いしますm(_ _)m
そういう仕様についての質問は開発者しかわからんだろうし公式で聞きなよ ちなみにテストで PRINT ("番号") だけ書いたファイルを25個用意して順番に読み込ませるテストしてみたけど正常に動作した
だからコール1回きりの関数プログラミングにしとけとあれほど…
354です 早速レスありがとうございます うみうみ氏のところで質問しようとしたら 書き込みのところにゲーム関係の質問はしないで下さいとありました 嘘ついてまで質問できないのでこちらで質問させて頂いた次第です 今も全く別のスクリプトを作ってテストしました やはりコールの23番目にハングアップします 開発者しかわからない仕様かもしれないですね 2つのスケジュールにわけて25個を動かす事にします 70分毎なのでスケジュールに設定するのが倍の手間になり面倒なので 一つのスクリプトからコールしたかったんですが 2つのスケジュールでやりくりしてみます ありがとうございました
354です 書き漏れありました コールで呼んだスクリプトの中にコールが一つあります 25個とも同じ作業です Chromeを起動する時にUAで識別させているので 中身で違う部分はUAのユーザー部分だけでバイト数は全て同じにしてあります 失礼しました
>>358 >356氏の言うようにコールじゃなくて関数化
UWSCのコールは都度読込みのではなくて、起動時に一括読込みだから
おそらくメモリ管理あたりでハングしてる
CALLは命令の文言的に誤解されちゃうのかな? 非関数部分のスクリプトは動作しちゃうから その誤解を助長してしまう部分もあるかもしれないけれど CALLはincludeな使い方をする命令 CALL先のスクリプトは出来るだけ関数のみ定義して 必要に応じて関数を呼び出す方が良いよ 同じファイルをCALLで複数呼び出すと変数の管理が想定外の自体になりやすそう
>>357 ネトゲ関係の質問しないでってそういう意味じゃないだろw
>>357 >>361 も言ってるけど、ネトゲ関係の質問するなってそういうことじゃないと思う。
掲示板のログ全部読んだわけじゃないけど、◯◯のゲームで××出来ますか、どうやるんですか、みたいな質問が多かったんじゃね?
お前の場合ならCALLで呼んでる別スクリプトの個別の内容の書き方を聞くような、ドキュメント嫁で終わる内容のさ。
その手のアホ質問じゃないから公式凸っていいと思う。というよりはうみうみ氏もバグ出しありがとうなネタなんじゃないかな
何も考えず試さず、どうやってbot作るの教えれみたいな思考停止厨が嫌われてるだけで 掲示版は優しい人多いから理由(根拠)述べれば大丈夫だよ
まぁその後ろめたい気持ちは忘れずになw
自動ログイン程度のことも出来ないスクリプトの知識がまったく無いやつが 一からUWSCを使えるようになるのに有用な本やサイトがあれば教えて頂きたい。
一からどこまでやりたいのかわからないとアレなんじゃねぇか?
357です 原因わかりました callでは無かったみたいです callでスクリプト@を呼び出す chromeをUA付きで起動して ピークカラーで色判定 閉じる callでスクリプトAを呼び出す chromeをUA付きで起動して ピークカラーで色判定 閉じる 作業内容は全く同じです テストではprintとsleepだけです 23個目にハングアップ chromeの起動する時にUAを付けないとハングアップしない ピークカラーを使わずにsleepで時間待ちするとハングアップしない うみうみ氏のサイトのサンプルでchromeの読み込み待ちを試したところ UA無しでは機能していますが UA付きでは機能しません それでピークカラーでの色判定で読み込み確認していました やりたい事はUA付きでchromeを起動して読み込み待ちです 22個目までは動きますが23個目にハングアップ 呼び出したスクリプト内にはcall無しに書き換えてもハングアップしました ここまでわかりました長文すいません
368を一部訂正 うみうみ氏のサイトのサンプルでは UA付きでchromeを起動しようとしたら エラーでChromeが起動しないです もしかしたら私のUAの付け方に問題あるかもしれないです 拡張機能をオンにしてUA無しでChromeを起動させて読み込み待ちはできました ChromeでUA付きで起動させて読み込み待ちをご存知の方おられましたら ご教示お願いしますm(_ _)m
宜しくお願いします。久しぶりにUWSCを使ってスクリプトを書いてみたのですが 私の想像通りの動きをするかの確認とスクリプトのアドバイスお願いします。 【Aループ開始】 画像1があればクリック→画像2があればクリック どちらも無い場合【Bループに突入】 画像3を見つけてクリックするまでクリックできたらBreakでAループに戻る 上記の動きを上手く書けているかの確認と バックグランドで動かしたいのでMOUSEORGを入れてますが現在上手く動きません。 なのでCTRLWINでアクティブにしてるのですがもう少し良いアドバイスあればお願いします。 id = GETID("F") ifb id = -1 then MOUSEORG(id, 2) While True CTRLWIN(id,ACTIVATE) if GETKEYSTATE(VK_ESC) then exit endif sleep(2) IFB CHKIMG("1.bmp") BTN(LEFT,click,G_IMG_X+25,G_IMG_Y+5) sleep(2) IFB CHKIMG("2.bmp") BTN(LEFT,click,G_IMG_X+25,G_IMG_Y+5) else While True IFB CHKIMG("3.bmp") BTN(LEFT,click,G_IMG_X+25,G_IMG_Y+5) eles Break endif WEnd endif WEnd
クリックできたらBreakじゃなく画像が見つからない場合はBreakになってるよ クリックできたらにしたいならBTNの下にBreakでしょ
>>370 これ実行してエラー出ないの?
色々ぐちゃぐちゃだけど
While True if GETKEYSTATE(VK_ESC) then exit sleep(2) IFB CHKIMG("1.bmp") or CHKIMG("2.bmp") BTN(LEFT,click,G_IMG_X+25,G_IMG_Y+5) sleep(2) ELSE While True IFB CHKIMG("3.bmp") BREAK ELSE BTN(LEFT,click,G_IMG_X+25,G_IMG_Y+5) ENDIF WEND ENDIF WEND こんなかんじだな
あ、上のままにするならね これだとESC押しても3.bmpのループ中には終了しないとか問題ありそうだけど
>>371 ほんとですねorz御指摘助かります。
>>372 画像3が出なかったら一応動きますよ。
>>373 or文って使えるんですか!勉強になります
画像3が必ずあるわけではないので
画像1をクリック→画像2をクリックまでは一連の流れなのですが
画像2をクリックしたあとアプリが更新されて20〜30秒待たされるんです
その後、アプリが問題なければまた画像1で
エラーだったら画像3をクリックしないと駄目なんです
とりあえずループさせて待ち時間を回避しようとしてますが何か良い案ありますか?
>>370 コピペでエラー出る
13-14行目 endif追加
18行目 eles → else
ネトゲ不正スクリプトを添削してもらえるスレ
え?艦これの登録スクリプトだと思ってたぜw
画像1クリック→画像1が消えて画像2がでる 画像2クリック→エラーなしの場合は画像2が消えて画像1が表示 エラーの場合は画像2が消えて画像3が表示 ってこと? それとCHKIMG("1.bmp") or CHKIMG("2.bmp")って書き方はダメ 1.bmpが見つかって2.bmpが見つからなかった場合にG_IMG_X,G_IMG_Yに値がはいらない
// main() while true ifb click1and2() then continue while true ifb click3() then break wend wend // functions function click1and2() result = false if !CheckWindowAndMouseorg(2) then exitexit ifb clickImage(LEFT, "1.bmp", 25, 5, 2) then ifb clickImage(LEFT, "2.bmp", 25, 5, 2) then result=true endif endif fend function click3() result = false if !CheckWindowAndMouseorg(2) then exitexit ifb clickImage(LEFT, "3.bmp", 25, 5, 2) then result=true endif fend
function CheckWindowAndMouseorg(lAfterWaitSec) result = false id = GETID("F") if id = -1 then exit result = true mouseorg(id, MORG_DIRECT, MORG_BACK) sleepWithEsc(lAfterWaitSec) fend function clickImage(lButton, lBmpName, lOffsetX, lOffsetY, lAfterWaitSec) try result = CHKIMG(lBmpName) except result = false exit endtry BTN(lButton, click, G_IMG_X + lOffsetX, G_IMG_Y + lOffsetY) sleepWithEsc(lAfterWaitSec) fend function sleepWithEsc(lSec) for ldSec=0 to lSec*10 if GETKEYSTATE(VK_ESC) then exitexit sleep(0.1) next fend
訂正:main() の ifb は全て if
>>368 も一々callせず、
やりたいことを関数分割して main() の入ってないサブスクリプトを冒頭でcallしておき、
あとはcallではなく関数を呼び出すといい。
>>380 それだと画像3がでるまで無限ループしね?
どうしたいのか判らんけど ここまで抽象化したら一目瞭然のはずなので 後は好きな様に変更すればよろし
IEのお気に入りとかのサイドバーが開いているか、閉じているかの判定はどうしたら良いのでしょうか?
>>386 オプション指定して開くところから組み込めば好きに出来るんじゃね?
幾つかthread命令を使った関数を走らせてる状態で、
メインは走らせつつ、メインから全threadの一時停止と再開、
メインは走らせつつ、とあるthreadから自分以外のthreadの一時停止と再開、
こういうことは可能でしょうか?
検索でヒットしたんですけど、何やら危険な香りが・・・
http://siromasa.digi2.jp/uwsc/u_sample/Base/SuspendThread.txt > 排他制御中にサスペンドされるとデッドロックの可能性があります。
> それらを考えると、使用は全く勧められません。
PUBLIC変数をフラグとして使って、
好きなときに一時停止・再開をやろうとすると、
極端な話、1命令毎に変数チェック
とかやらないとダメなんでしょうかねぇ・・・
何か安全で良い方法は無いでしょうか?
全部止めたい時の一番簡単な方法はメッセージボックスの表示 特定のスレッドなら一旦そのスレッド閉じさせるとかフラグ作ってというのが簡単じゃない?
>>388 厳密にやりたいならそれなりの言語にした方がいいよ。
外部からの強制一時停止だとか見るからに危険そうじゃん。
いつなら止まっても安全なのか知ってるのは、走ってるスレッド本人だけ。
既に思いついている通り、自作の一時停止願いシグナルを発行し、
スレッド側が出来るだけ常にそのシグナルをチェックし、スレッド側が自主的に一時停止。
シグナル用のあるグローバル変数がTRUEのとき一時停止として、
スレッドは一時停止していいタイミングごとにシグナルをチェック。
TRUEなら、それがFALSEになるまでSLEEP挟んで無限ループする関数に跳ぶ。
ゾンビスレッド対策に、そのループのときに別のシグナルでスレッドを終了してしまう箇所も設けておく。
どうかね?
391 :
ひみつの文字列さん :2025/01/04(土) 18:15:32 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
スレッド個別に制御したい場合は、まずスレッド生成時に一意のスレッド番号を必ず付与して区別できなければならんだろう。 このスクリプトでやるならその仕組は当然自作w んで、シグナル発行直前に、複数の個別対象スレッドを指定する番兵付配列を設定してシグナル発行だ。 正直、それを以ってやりたいこと自体をもっと洗練させて、こんな手段が必要ないようにした方がいい気がするが…
393 :
ひみつの文字列さん :2025/01/04(土) 18:15:32 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
画面のド真ん中(上下左右周囲誤差2ミリ)に指定した色があるとクリックしてくれるような物を作りたいのですが
できるでしょうか?
またクリックは時間0.1〜1秒単位で調整できないでしょうか?
色はF8F848位の明るい黄色からD3D822くらいの暗めの黄色です
イメージはこんなかんじです
http://i.imgur.com/GblFtqB.png WHILE TRUE
RGB=PeekColor(512,384)
R=RGB AND $0000FF
G=(RGB AND $00FF00)/$100
B=(RGB AND $FF0000)/$10000
//ifb GETKEYSTATE(VK_RBUTTON) then
ifb ((R>=$色 AND R<=$色) AND (G>=$色 AND G<=$色) AND (B>=$色 AND B<=$色)) then
BTN(LEFT,CLICK)
Endif
//Endif
Endif
sleep(0.002)
WEND
これだとど真ん中しか意味がなくて困ってます
chkimgで範囲指定すれば簡単なんじゃね?
>>394 repeatの式に範囲指定入りのchkimgをセット。
ネトゲの自動操縦のために同じ操作のもん作って使ってる。
そこまで色の幅があって、もし色がその幅の間を連続的に変化するとかだと、 仮に出来たとしても非常に辛いことになる(判定が安定しないだとか思いだとか) まずは全力で、判定に使える変化しない画像が間接的に取得できないか考える。
色幅ありすぎるとchkimgでは厳しいから、 範囲も2mmと狭いし、素直に考えればまぁ ループで回して1ピクセルずつ判定だろうなぁ for py=384 to 394 for px=512 to 522
>>391 これ最初の変数 PUBLIC 書かなきゃダメだったね
SPLIT関数の戻り値で配列を生成する場合、 データが無かったなどでSPLITの戻り値が要素のない謎の配列になる。 この状態の謎配列を、配列を引数に取る関数に渡すことが出来てしまう。 その時点でエラーにならない。 HELPには、SPLITの戻り値はSAFEARRAY型と書いてあるが、それ以外何の説明もない。 UWSCのHELPにSAFEARRAY型の仕様について記載はない。 ネットでググると、.NETのオブジェクトの一つっぽい。 UWSC自体を開発している言語に属するものなのだろう、と推測できるだけで解決には役立たない。 さてこの謎配列、関数側のエラー処理のつもりでこの配列の中身に指1本でも触ろうとすると、 「GetValue:バリアント配列が範囲を超えています」というエラーで止まってしまう。 配列サイズをRESIZEで調べると、配列でない変数は -1 になるはず(HELPに記載なし)だが、 この謎の配列はそうではないらしく、添字最大値判定でチェックできない。 そして、正常な配列であれば、少なくとも配列[0]だけは存在するはずだが、 その配列[0]の中身を参照しようとした時点で初めてエラーとなる。 エラーの原因が、異なる型を代入しようとしたのか、謎の配列を渡されてしまったのかを区別するために、 TRY〜EXCEPTで配列[0]の内容をログとして残そうとしても、エラーとなり記録に残せない。 そのため腫れ物に触るように2重3重にエラー処理を書くことになった。 元々UWSCのHELPにエラーメッセージ表すら無いのだから、GetValueの記載もバリアント型の説明もあるはずがない。 ネットでググると、.GetValueはNETのメソッドらしい。 UWSC自体を開発している言語に属するものなのだろう、と推測できるだけで解決には役立たない。 別に何らかの解決を望んでいるわけではない。 これがUWSCというスクリプト言語なのだなぁ。と感じるだけ。 プログラミング言語初心者にお勧めできない理由を巧く表現できないが、まぁそういうことなんですよ。
白馬の王子様まで読んだ
sckeyをバックグラウンドに送れたらいいのに
こんな感じでread processmemoryで読み込むアドレスを繰り返し処理で変動させてサーチみたいのしたいんだけど DEF_DLL ReadMemory(string, DWORD, var DWORD, DWORD):int:Memory.dll PUBLIC pname="○○" PUBLIC size=4 public Buffer = 0 public Size = 4 public PowerAd = $△△△△ for i = 0 to 1000000 ReadMemory(pname,PowerAd+i,Buffer,Size) IF (Buffer = $××××) THEN next これだと糞遅いんですけどどうにかなりませんかね
メモリを読み込んで指定範囲内のアドレスで特定の値があったら○○とかいうスクリプトを組みたいんです どうすれば高速でできますか?
まあ画像認識とかでなくメモリサーチ型のbotを組んでみたいんだけどどうしたらいいか分からんとです
素直にcでも使えよ
デバッガみたいな機能をスクリプト内でどうにかしたいんだがな メモリ検索ソフトなんかすると一瞬でサーチできてる訳で
c++で作れば瞬時で終わるわ uwscに拘る意味がわからん
一応UWSCとデバッガだけでどうにかする方法は思いついた プログラミング言語も勉強したいけど…
アプリのメモリ変更機能も欲しいが、俺はパケット生成機能の方が欲しい
gui作成機能ほしい
>>413 せめてC#にしたほうが
(unsafeの中なら何でもできる)
分からんあるよ 完成品をいじるとかならともかくいきなりは無理ぽw
>>403 安鯖(2core以上,IntelNIC)買ってESXi5.1が最強。バックグラウンドに沈める必要自体が無かった。
早速visual studioダウンロードして動画やサイトを見ながらやってなんとかドラクエ10のメモリサーチするプログラムは組めました でもc++で組んでも遅いんだよな cheat engineなんかだと検索が一瞬で終わるのに
スレチだけどサーチする範囲指定してないんだろ
2013/10/03 UWSC Ver4.9a、 Pro版と Free版をリリースしました。
おう
直接CreateWindow叩いてウィンドウ作ればいいじゃん それかサンプルの「PowerShellより .Net Frameworkを利用しフォームを作る」みたいにやるか
.NETからUWSCをコンポーネントとして使えるようにすれば全て解決なんだがなぁ
>>423 誰かがブログでやってたが、
メッセージループとコールバック関数が必要になり、裏技的にしか解決できない。
具体的にはマシン語のバイナリでそれを用意してスレッド作成とかで・・・だったような。
で、そこまでやったとしても、そのバイナリコードに UWSC のスクリプトを呼び出す仕掛けを作りようがなかったような。
まあ、メッセージループは UWSC で回せなくもないので割り込んで制御を読み取るなんて事は可能かな。
しかし、スクリプトが遅いので窓枠をマウスでいじると落ちたような。
PowerShell 経由で画面を作れるけど、結局、普通に UWSC としてコントロールするしかないので
特別リアルタイムに画面を作る必要でもない限り、HTML で作ったほうがいい。
ただ、ローカルの HTML を開くとセキュリティの警告がウザイ。
HTA で開けば警告は出ないけど COM オブジェクトがなくてコントロールできない。
マルチスレッドのプログラミングでメッセージのやり取りで同期を取る仕組みがあるんで
それを使って呼び出してるように見せることは可能じゃないかと思うけどめんどくさすぎ。
GrapeCityみたいにコンポーネントの使用ライセンスで売れば商売になるだろ〜 PRO買った人には割安で頼むぜ
>>425 そのブログ知ってるけどあんなクソめんどくさいことやらなくても
createwindowはできる
>>427 メッセージループでそのまま処理するんだっけ?
推奨されてない方法だけど。
429 :
404 :2013/10/04(金) 00:54:56.85 ID:+qKH2C550
read processmemoryの読み込みバイト数が4バイトずつ読み込んでたのが遅い原因でした c++でプロセスメモリ検索みたいなのは組めたからuwscでも同じやり方でいけると思う
win7だとバックグラウンドで実行できない?
431 :
名無しさん@お腹いっぱい。 :2013/10/07(月) 22:46:18.21 ID:uuINVVvt0
どっかのブログで既に開いているIEを取得して 操作するってのがあったけど思い出せない 誰かわかったら教えて
>>432 まじかー、xpからwin7に変えたらできなくなったんだよなぁ
>>433 タブブラウザになってややこしくなってるだけじゃね?
POFF(P_MONIPOWER2) sleep(10) POFF(P_MONIPOWER3) 10秒間モニターOFFにしようと上記を実行したんですが 一旦オフになってすぐにオンになってしまいました どうすればできるでしょうか?
>>436 最初に Sleep(1) を入れてみて
>>438 じゃあ権限がなくてスルーされてるか
省電力動作を拒否してるアプリがいるかのどっちかかな。
管理者権限でUWSCを起動して実行するとか、
怪しい常駐ソフトを全部落とすとか。
デバイスドライバが省電力機能をに対応してない可能性もあるけど。
>>439 管理者権限で実行したら出来ましたー
ありがとうございます
441 :
440 :2013/10/11(金) 17:52:41.00 ID:nLsJdmZj0
>>440 訂正
原因は管理者権限ではなく
省電力動作を拒否してるアプリの方でした
442 :
394 :2013/10/16(水) 13:37:25.27 ID:D+9oU0+e0
Repeat //Aの色があればクリックしてX地点へ ifb CHKIMG("色") x=G_IMG_X y=G_IMG_Y BTN(LEFT, CLICK, x, y, 300) endif X地点 //Bの色があればクリック、無ければZ地点へ戻る Until CHKIMG("色") x=G_IMG_X y=G_IMG_Y BTN(LEFT, CLICK, x, y, 300) endif これを繰り返せばいいんでしょうか? 初心者なもので質問ばかりですいません・・・
悪かった。君はもういいから掃除てもしてなさい。
kusoresu.quit()
このスレの人間は閉鎖的だな リアルでもそうなんだろうけど
xyに格納する理由が分からないけどまぁいいや。
閉鎖的も何も三角関数はUWSC独自の話じゃないのよ 普通に検索して発見したロジックを移植したらいい
BOTスクリプト欲しがってるアホはUWSCの機能に関する質問とか一切せずに 糞BOT用に組んだ動かない馬鹿文の添削させようとしてるだけですし
RGB=PeekColor(512,384)って座標指定してるからでほ 素直にフォーーーーーーーーーーって回してればええやん for Xi = 500 to 505 for Yi = 380 to 390 RGB=PeekColor(Xi,Yi) ifb 似ている色 クリック breakbreak endif next next
あ〜ふぉーやるのか〜
>>399 にある通り色幅ありすぎだから。
CHKIMGのオプションでカバーできる範囲を超えてる。
提示した通りの判定方法でやるならフォーしかないが重い処理になる。
もっといい判定方法を探した方がいい。
どんな使い方するのかしらんがそこまで重くなるか? option SHORTCIRCUIT は必須な
失礼します。 先生方、モバゲーで自動操縦しようと簡単なマクロを試験したら右クリックは可能なのに左クリックだけが対策されてるようで実行されないようなのですが 左クリックの代理となるショートカットキーやその他の抜け道をご存知でしたら教えてください。 よろしくお願いします。
よし、マウスのドライバで右左のクリック反転しようぜ。 しかし、対策されてたかなぁ?
聞いたことないけど
>>453 左クリック対策?
モバゲーのなんてゲームだろか
はじめて聞いた
重いと ,CLICK では反応しない場合があるぞ。 ,DOWN ,300) ,UP ,700) SLEEP(0.2) ぐらいで、クリック成功を判定するまで何回でもクリックするループ組んでみ
>>456 モバゲー星矢っす。
手動だと左クリック可能ですけど、uwscで操作だと左クリックできません。
何かがおかしいのかな。
でもネットにも載ってるスクリプトで特におかしなとこはないと思うんですが。
自分で書いてないんなら書いた奴に言えよ
>>457 ありがとうございました。
教えの通りやってみましたがやはり不動でした。画像の場所までは行くのですがね。
星矢自体なぜかプロテクションが多くて嫌になります。
ネットに載ってる方法だけではPCプレイもできず、更にsgviewerを使って初めてPCプレイが可能になるほどです。
UWSCが敗北する時がこようとは
VMも無理なん?
VMってググったけど見ただけで俺がギブアップですw
先にMMVできちんと座標移動してからクリックでもだめなん?
>>460 CLICKではなく
down,upで時間の調整してみては?
自分は時間調整したり
連続DOWNのあとUPしてみたりしてるよ
BTN(LEFT,DNWN,座標x,座標y,20)
BTN(LEFT,UP,座標x,座標y,20)
BTN(LEFT,DNWN,座標x,座標y,40)
BTN(LEFT,UP,座標x,座標y,20)
BTN(LEFT,DNWN,座標x,座標y,100)
BTN(LEFT,UP,座標x,座標y,20)
BTN(LEFT,DNWN,座標x,座標y,20)
BTN(LEFT,DNWN,座標x,座標y,20)
BTN(LEFT,DNWN,座標x,座標y,20)
BTN(LEFT,DNWN,座標x,座標y,20)
BTN(LEFT,UP,座標x,座標y,20)
ありがとうございます。座標移動は省略可能なので試す意味がないかと思います。
>>465 ありがとうございました。
それ全部試して全滅でした。
>>467 ブラウザはGoogle Chrome ?
星也やらないからわからないけど
他のモバゲーでクリック対策された時に
ブラウザの拡張機能
Mouse2 Touch
これをChromeに拡張したらクリックできたよ
多分、ここに聞きにくる前に試してるとは思うけど念の為。
>>466 違うよ
ゲーム側がどうやって判断してるかの推測、化かし合いでしょ。
マウスポインタが、人間が操作した時のように動いてからクリックしたのではなく、
いきなり特定の座標に瞬間移動してからクリックしたら、
自動操縦ソフトだと判断して操作を受け付けないような仕掛けがしてあるかもしれんでしょ。
操作の記録で、MMV省略しないよう設定してやってみればすぐ確認可能でしょ。
>>468 ありがとうございます。クロムです。
Mouse2 Touchの拡張機能探してみたけど現在はないみたいで代わりにchromeタッチで
スライドタッチできるようにしてみたけどやっぱり不動です。
>>469 ありがとうございます。mmvでも動きませんでした。
というかそれゲームではなくクロームの拡張機能が制御してるんじゃないの? ソーシャルゲームビューア使って無理やりスマホ用のゲームPCので動かしてるんでしょ?
>>471 ということはsgviewerを使うと左クリック禁止になるってことですか?その他のモバゲーゲームでまだ試してないんで帰宅したら試してみます。
寝マクロくんでも左クリック可能かどうか試してみます。
>>474 ありがとうございます。
設定弄るのは初耳だったので早速やってみましたがやっぱ不動です。
あと、モバゲーのガンダムコレクションも同様にやってみましたが星矢と同じで左クリックできませんでした。
寝マクロも左クリックできん。詰んだ。
普通にできるじゃん そもそもUWSCとか寝マクロの問題じゃないからこれ以上は他所でどうぞ
>>477 sgviewer環境で星矢できてるんですか?ブラウザなら普通に出来ると思いますけど。
あと、ここ以外UWSCの話題はスレ違いで入れないですよ?
ブラウザで普通にできるならブラウザでやれよ
>>475 ガンダムコレクション
今やってみた
やり方わからないから「探索」ってのを押して適当にクリックしてたら
新しいエリアってのに行けるようになった
UWSCのカメラモードで記録して再生しても同じようにできた
特別な事は何もしてない
Windows XP sp3 で試した
>>470 GoogleChromeの拡張検索でマウス2タッチは何故か検索できないようになってた
マウス2タッチをインストール済みのChromeでマウス2タッチのURLを調べた
そのURLへマウス2タッチのインストール無しのChromeから移動してみた
まだ無料でマウス2タッチをインストールできた
URLは長いから要請あれば教える
他のタッチで代用できてるなら要らないよね
>>481 他にもctouchとか拡張してみましたがやっぱり左クリックできません。
解決したらもう消えますので、なんとかマウス2タッチのurlを教えていただけませんか?
うざくて申し訳ありません。
>>482 エッチてぃてぃぴーえす//chrome.google.com/webstore/detail/mouse2touch/bmokioijeefenglkpfnbalmpmocnodo
ガンコレはこれ無しでできたと書いてる
しかも代用も見つけたと書いてる
なんで今更これがいるのかね
自分が思うに左クリック出来ないのはUWSCが原因ではないと思う
つまりここで聞いても解決しないと思うね
まあやってみて。多分UWSC関係ないところで解決の糸口みつかる思う
UWSCはクリックするだけ
クリックのタイミングは変えれるがあくまでクリックするだけ。
堂々とゲームマクロ宣言してる上にこんな痛い奴相手にしてあげるなんてやさしいのな 違うスレにきたかと思ったわ
>>483 すみません。url行ってみましたが関係ないstylishという拡張機能のページが出てきました。
あと、ガンコレでできたとはどこにも書いていません。それは他の方がテストしてくれたものです。
代用タッチも失敗なので見つかっていません。
>>485 ガンコレで出来たって俺がテストしてあげてここに書いたけど
クリック出来ないのはUWSC関係ないかもね
クリックの問題=UWSCの問題
そう思ってるのならずっと解決しないよ
僕もそう思ってまして誠意調査中です。テストありがとうございました。
単に画面右に時計やらカレンダーやら表示したままやろうとしてるだけじゃね?
メモ帳にSENDSTRで文字列を送信すると メモ帳がアクティブになってしまうんですが バックグランドのまま送信することはできるのでしょうか?
>>489 sendstr( id, "文字列", 1, false, 2)
>>490 ありがとうございます
それ単体で動かすとアクティブにならずに送信できるんですが、
私がやりたいマクロに組み込むと送信ができないので
別問題ですかね
,1, false, 2)を使わなければアクティブにはなりますが送信はできるので歯痒いです
492 :
453 :2013/10/20(日) 00:36:51.79 ID:NlPrYuIzP
魚おおおおおおおおおおおおおっ。 できた。左クリック。 みなさんに色々提案していただきましたが、根気強く検索して自力解決できました。 windows7とvistaはそのままじゃUWSCが実行できないエラーが出る時があるんです。 解決方法はクロームとUWSCの両方ともダブルクリックじゃなく、右クリックで管理者として実行を選択するとエラー回避になるそうです。 これで僕も皆さんも一つ賢くなれました。ありがとうございました。約束通り消えます。
UWSC一時敗北したと思ったがまた勝ってしまったか
てか、管理者実行って基礎中の基礎…
>>492 そんなの当たり前だ
ここに来る連中はお前以外全員知ってる
あまりにも初歩的なので
ワザと
>>480 ではWindows XPで試したって書いておいたのに
読み飛ばしていたとはな
案の定管理者権限かよ
ここに書くのも恥ずかしいくらい初歩の初歩。
皆さんも一つ賢くなれました()
顔真っ赤で書いたんだろスルーしてあげろよそれが日本人の優しさだろ
皆さんも一つ賢くなれました (=_=;) なれてるとしたら次回から、こうすることに決めたことか。 真っ先に「管理者権限は?」と聞いて、 まともに答え(られ)ない奴を門前払い。
香ばしいな 芋ケンピかってくるか
IE=createoleobj でIE操作をするとき、1回の起動だったらだいたい問題ないんだけど、 何度も開いたり閉じたり、タブを複数扱ったりするとうまくいく時といかない時があるんだけど 、対処法ってあるんですか? うまくいかない:スクリプトは間違っていないのに(何度かは開けている)のにたまにCOMエラー、 5回IEを開く命令をしたのに3回目でIEがずっと読み込み中のまま停止、 IE.document.forms[n].elements[i].value=1 とかでも、だいたいはうまくいくけど、たまにCOMエラー。 Excel = getactiveoleobj("Excel.application")これでもCOMエラーが出る時もあるんだけど、 対処法わかる人いたら教えて下さい。 ちなみに自宅でも職場でも似たような事態になるので、PCスペックとかではないかと。 一応自宅のはウインドウズ7、職場は確かXP。
>>500 間違ってなくてもタイミングでCOMエラーは出るよ。
たとえばドキュメントが空の時にページ内にアクセスしようとしたときとか。
>>500 例外処理するかCOMエラー無視するかすればいいのでは
管理者権限忘れてるとかUWSCの問題じゃなく 知能が低すぎた事が原因じゃねーかw
>>501 ,502
あざっす!
そういうときはやっぱり
>>502 の言われるようにCOMエラー処理で皆さん対応されてるんですかね。
例えば、1.IE開く 2.navigateで特定URLへ誘導 3.そのサイトのフォームへ入力して送信
みたいな場合の2でCOMエラーが出ちゃう場合は、エラー無視してもしなくても(フォームが表示されないので)
アウトになっちゃいますかね?COMエラーは今まで触ったことないんで、これから学んでみます。
UWSCの「ChkCtlID.uws」というスクリプトを どなたか、「AutoIt3」か「AutoHotKey_L」用に 移植していただけませんか? どうかよろしくお願いします。
お金は出せないが、 ・無炭酸ノーマル味トンスル2本 ・炭酸入りノーマル味トンスル2本 ・無炭酸キムチ味トンスル2本 (1本350ml)なら用意できまする。 残念ながら、炭酸入りキムチ味トンスルは人気ゆえ現在在庫を切らしてる。
そんな報酬じゃ朝鮮人しか引き受けねぇよな
マクロ実行中にブラウザが消えてしまいました もしやと思いctrlwinを試したところ無事表示されたんですが、原因の見当がつく方いらっしゃいますか? スクリプトの内容は、単純なFlash操作で、せわしなくクリックを反復する類です 以前に一度だけあったような気もしますがそれだけなので、再現率はかなり低いと思いますが 不可解なので理由を知りたい
ポーズ入れて噴出しいれて何の処理したら消えるのか自分で確かめろよ お前のローカルにあるスクリプトなんざ誰が確認できるんだよアホ
吹き出しよりもプリントの方が放置できるでしょ UWSC以外の原因でもブラウザのバージョンアップで消えていたとかいろんな可能性はあると思うが
これからの季節に最高の犬肉サムゲタンを2名様
炭酸入りキムチ味トンスルをお一人様1本ずつ
サービスするから
>>505 作って〜
スクリプト作成で困っている人を対象に 有料サポート掲示版を設置するのはどうだろう。 互いがWIN-WINになるだろうし。
金払うなら普通に業者に頼んだほうがいいだろ 後はクラウドソーシングとかはすでにあるしその手のサイトでも結構UWSCのスクリプト作ってみたいのはあるぞ
POSの引数の左右間違えちゃうわー
そうそう。 クラウドソーシングでUWSCの依頼あるね〜 放置されてるけどw
まじか。過疎るってことは重要無いってことなのかな それとも日の当たりを浴びてないだけかどっちだろ
依頼者が技術を甘く見てるとか、 そんなのUWSCで無理やりやるの? みたいなパターンのほうよ。
windows7で動いていたのが、持出し用のwindows8ノートパソコンに移したら全然動かなくなった。 マウスのクリックが全然記録・実行されないようだ。 SONY VAIOタッチパネル付。タッチパネルが悪さしてるのかな? まだ過去ログあさってないのだが、こういう事象って解決してますか?
521 :
名無しさん@お腹いっぱい。 :2013/10/28(月) 01:04:13.93 ID:23r+fMxT0
70くらい上のレスに「管理者として実行」というのがあったので、 これか!と思い試してみたところ、見事に問題解決しました。 本当にありがとうございました。
皆さんも一つ賢くなれました(名言w)
ご教授をお願いします。 UWSC4.9aのプロ版を試供状態で作ったスクリプトが、ライセンス登録後に動かなくなりました。 原因のわかる方いらっしゃいますか? 現在試したこと ○アンインストール後、試供版での動作 ×アンインストール後、ライセンス登録での動作 ○友人pcでの試供版での動作 いずれもver4.9aです。
524 :
523 :2013/10/28(月) 22:18:02.60 ID:s3Odbqit0
以下は実際に動かしているスクリプトになります。 Sleep(3.0) while true ifb CHKIMG("開始.bmp") x=G_IMG_X y=G_IMG_Y BTN(left,click,x,y) SLEEP(3.0) if CHKIMG("中止.BMP") THEN KBD(VK_1,CLICK) SLEEP(3.0) endif ifb CHKIMG("中止.bmp") x=G_IMG_X y=G_IMG_Y MMV(x, y) endif Wend
ライセンス登録したならデバッグツール使ってみれば? 無駄は多いけど変なところはないと思うけど
行数少ないんだから、とりあえず1行ずつ消してみて、どこで動かなくなっているか見るのも手だわな 動いてる人もいるんだし
left,click
529 :
523 :2013/10/29(火) 05:33:25.28 ID:q+h1Wa5+0
ご返信ありがとうございます。 デバックツールで確認したところ L20が存在しません。 というエラーが表示されました。 エラー内容が解釈できないのですが、どなたかご教授をお願いします。 何度も質問ばかりで申し訳ない。
>>529 もっと、お勉強してからにしましょうね!
533 :
529 :2013/10/29(火) 16:09:49.91 ID:q+h1Wa5+0
ご返信ありがとうございます。 もう少し調べてみます。 ライセンスは自分で購入したものです。
535 :
523 :2013/10/31(木) 05:59:37.30 ID:JXFIbavg0
L20のエラーについてですが、アドバイスを頂いたとおり、公式にて問い合わせをして解決しました。 アドバイスを頂きありがとうございました。
原因なんだったんだ? 折角なんだから一言ぐらい書いておこうぜ。
虚偽でなければ、(違法割れ業者とか割れ友人から)購入したんじゃね。 都合が悪い事から書けないでしょ。
538 :
523 :2013/10/31(木) 09:22:37.25 ID:Yb7q90j80
私が購入した、シリアルナンバーの入力を誤っていたのですが、偶然にもその数字が通ってしまい、アドバイスを頂いた割れ対策のエラーがでていたようです。 以下、公式からのお返事です。 登録するのは 伝票番号の xxxxxxxxx ではありません。 ベクターより 17桁のライセンスキーが発行されているはずですので 一度 UWSCをアンインストールしてから 再インストールをして 17桁のライセンスキーを入力してください。 たまたま、伝票番号の xxxxxxxxxx が登録処理を通り その後に 不正キーの扱いになり、機能制限がかかったようです。 大変に失礼いたしました。 こんなミスをする人はなかなかいないと想いますが、L20のエラーを次回のテンプレのL22の次にでもそっと追加をお願いします。
> 登録処理を通り > その後に 不正キーの扱いになり、 あるんだね@
試しに何度か適当にキー打ってみたら登録ありがとうございますって出た もっともエラーコードも出なくて試用状態のままだから本当に不正キーとして通ってはないようだけど
むう…Chromeでブラゲーをバックグランドでも動かしていたのだが とーとつにクリック情報を認識しなくなってしまった。 id = GETID「ウィンドウ情報」 hnd_id = GETCTLHND(id,"Chrome_RenderWidgetHostHWND",1) MOUSEORG(hnd_id,2) アクティブならちゃんと動作するし、hnd_idで出力してもIDちゃんと吐くんだけど 他にバックグラウンドで動かすのに必要な要素を 見落としてそうなら、ぜひ教えてください
ヘルプに、バックグラウンドだか非アクティブだかって単語があったようなないような
UWSCのキージェネレータって今もアプリ版とVBS版2種類出回ってるんだな。最新版には対応してないけど。
VBS版は普通にテキストエディタでソースもろ見えだから見たけど結構単純なアルゴリズムだった。
>>538 悪意なく偶然にも通ってしまったのか。疑ってすまんかった。
UWSCの試用期間と登録キーは2エントリ共レジストリで管理してるけど
登録キーってアンインストールしてから 再インストールをすれば直ったっけ?
過去にいずれもピンポイントでバックアップ取って14日制限を復活させたり、
UWSCProを一度も立ち上げずに正規登録済みにして遊んだ事があったが
アンインストールでは試用期間は復活しなかったのは覚えてるけど
そういや登録キーの方は試してなかったんで気になった。どうでもいい事だが。
>>541 試用期間消えないダミー処理もあるのか。
IERECやデバッグツールが動くかどうかで正規として通ってるか判断できると思う。
まぁエラー出ると思うが、その番号がL22かL20かそれ以外なのかをできれば報告頼む。
今まで2Dゲームでuwsc使ってマクロ作ってたんだが、3Dゲームになると難易度めっちゃ上がるな… 画像認証なんてのは3Dゲームだと陽当たり、角度で認識が変わるから使えんし、移動も角度によって行き先が変わるから中々上手くいかない 3Dゲームでuwsc使ってる人いたら移動とかのアドバイスくれないか?
マップが表示できるならそこで判断 それ以上のことやると座標データ取るのにメモリ解析とかさせないといけないから外部DLL作るとか別ソフトと連動させるとかしないとかなり面倒だと思う そこまでするならUWSCに拘る必要性もなくなるが
>>545 アイテムのプロパティだとかダイアログだとかは2Dだろ?
CHKIMGのG_IMG_X、G_IMG_YってTHREAD実行で二つ以上の画像判定を並行させて 同時にヒットしたときってどーなってんだろ? てかG_IMG_X、Yに限らず関数実行結果が返る特殊変数全般なんだけど。 RPGをセミオート化しててなんも考えず 「敵シンボルを認識して追跡」 「同時に戦闘コマンドウインドウを認識(エンカウント)したら追跡中断し戦闘ロジックへ」 みてーなことやってみて今んとこ衝突誤爆らしき事象がないんだが・・・ たまたまかな?
グローバルじゃないから問題ない
>>549 おー、グローバルじゃないんだ。ありがと!
特殊変数のスコープってヘルプや公式に記載あるの?
全然見つけられん・・・
551 :
名無しさん@お腹いっぱい。 :2013/11/02(土) 11:50:37.39 ID:J6jlqaqni
>>547 今どきダイアログに透過かかってねぇ3Dゲーなんてほとんどないよ
そんだけで単純なchkimgじゃ検知しづらい
2Dオブジェの点滅や回転も多いしね。
まぁUWSCでやる範疇じゃねーな…
>>551 uwscで使う画像も透過にすりゃいいだけだろw
>>550 UWSCにデータシートみたいな上等なもん期待しちゃいかん…w
>>551-552 透過あり画像で出来るかもしれんけど、
行き当たりばったりなプログラミングじゃなくて
うまくいかないのが画像判定に失敗してるのかバグなのか
判定するためのテストケースのあるプログラミングが
必要になってくるね。
> IMG_MSK_BGR4: 各色(BGR)に対し 16/256の色幅を許す
のオプション以上に曖昧な判定するには
OpenCVに手を出さなきゃあかん
メモリピークとどっちが楽なんだろw
どちらにしてももはやUWSCでやるメリットが少ない
UWSCはBOTツールではなくマクロツールだからな BOTを作りたいならCとかCが難しいならPythonとかRubyあたりを勉強するといいよ
>>553 ・・・。
特殊変数の有効範囲程度でも自力検証してるってこと?
G_IMG_Xってグローバルだと思うよ 別スレッドでChkimgしたとき上書きされた
どういう検証をしたらグローバルだと思うんだ
グローバルだとすると
>>381 のclickImage関数がリエントラントじゃくて使えない
ローカルならもはや関数化しない理由がない
>>556 FOR文の変数が変更不能なのすら書かれてないしw
>>559 >FOR文の変数が変更不能なのすら書かれてないしw
これ、むっちゃハマったわ
そもそもUWSCはスレッドを使うように設計されてないんで スレッドを使わずラウンドロビンにするなど極力避けたほうがいいぞ。 スレッドがリソースのデッドロックで応答なしになった場合、 通常のまともなマルチスレッド言語と違って スレッドを強制終了する方法そのものが実装されて無い。 UWSCは自動操作の相手次第でデッドロック頻発する。
あと、複数のスレッドから特定の1スレッドを指定するIDも、必要になったら自作だなw
1ドットの青と赤の画像用意してやってみたけど変わらんやん Thread c2() for i = 1 to 3 CHKIMG("c:\blue.bmp") print "c1 " + G_IMG_X + " " + G_IMG_Y Sleep(1) next print "ここからCHKIMGなし" for i = 1 to 10 print "c1 " + G_IMG_X + " " + G_IMG_Y sleep(1) next procedure c2() for i = 1 to 20 CHKIMG("c:\red.bmp") print "c2 " + G_IMG_X + " " + G_IMG_Y Sleep(0.5) next fend
特殊変数はコンテクストによって ローカルになったりグローバルになったりしてる可能性はあるね 初心者に分かり易くという親切心で謎の挙動になってるんじゃね 検証してみればなんてことはないかもしれんが 他にも仕様が謎の部分だらけなんでやる気起きない
恥の上塗り
スレッド内のchkimgの変数がグローバルかどうかはちょっとコードを書けば確認できるけど それが仕様なのかどうかがHelpとか読んでも判らないのが・・・
仕様だと明記する仕様として確定してしまい黙って変更できなくなる。 その手間すら惜しい開発体制なのだろう。 仕様をせっかく検証しても、「今のところ」という非公式なものとなり その仕様に従って開発するのは自己責任ですということに。 クローズドの典型的な悪い例みたいになっちゃってる。
>>554 ゲームにもよるがchkimgの透過、色幅でどうこうできる範疇超えることが多いねー
一見単純な2Dに見えるもんが実はテクスチャだったり
>>192-195 辺りの話にコマンドウインドウ等の透過処理、アンチエイリアス、光源、エフェクト・・・と
色々絡まって一見同色に見えるもんが刻々と変わってる感じ。
そこをシステムデザイン・UIの穴堀り、なんとか色固定ドット数点と認識幅探して、透過やエフェクト時のマッチングパターンも多数用意して・・・
なんて力技かましゃ「認識できない・・・」から「誤爆が増えたw」になる嫌な予感しかしねーから素直にOpenCVsharpにシフトするも
画像処理の地盤がない俺じゃやれること(勝手にそこまでやってくれるwこと)が多くて
適正な手法を絞れず結局超えられない壁が残っちまうw
570 :
HH :2013/11/03(日) 08:28:15.18 ID:gJ3EnPh60
初めて投稿します。 どなたかからUWSC EXECLシートのプリントプレビュー画面の枚数を取得する方法をご存知の方 教授ください。 UWSCでEXCELシート内データを一部を変更して、ファイルセーブするスクリプトを持っています。 これにプレビュー枚数を記録する機能をつけたく思います。 現在は、いちいちプリントプレビューを開き、枚数をずらして、複数枚になっていないかを確認しているのでとても手間が かかっています。 EXCEL(.DOCUMENT(50)なる表現をインターネット上で見つけたのですが、UWSCでの実装方法がわかりません。 どなたか、教授頂けると幸いです
EXCELなんてVBAマクロで全て自動化できるだろ マイクロソフトがEXCELをそう作ってある UWSCでEXCEL操作するという発想自体が筋が悪い VBAで出来るはずのことを調べきらずに UWSCで誤魔化す形になってないか
>>570 EXCEL = GETACTIVEOLEOBJ("Excel.Application")
Page = EXCEL.ExecuteExcel4Macro("get.document(50)")
MsgBox(Page)
574 :
名無しさん@お腹いっぱい。 :2013/11/03(日) 15:52:12.39 ID:RaTkj/Nv0
以下、ダウンロードさせて頂いたプログラムですが デザイン変更で動かなくなってしまいました 1.画像A(反転前)があるか判定する 2.画像Aがあれば、画像Zをクリックする 3.画像A(反転前)が無い場合、画像B(反転後)をクリックしたい
575 :
名無しさん@お腹いっぱい。 :2013/11/03(日) 15:53:03.61 ID:RaTkj/Nv0
PROCEDURE MYPAGE_CHECK() //マイページのチェック、移動 mypage = 0 LOOP_COUNT = 0 WHILE mypage = 0 SLEEP (0.5) PRINT ("LOOP_COUNT: " + LOOP_COUNT) mypage = CHKIMG("mypage03.bmp") PRINT ("マイページ画像検知(WHILE中): " + mypage) LOOP_COUNT = LOOP_COUNT + 1 IF mypage = 1 THEN BREAK IF LOOP_COUNT = 10 THEN BREAK WEND IFB mypage = 1 mypage = CHKIMG("mypage03.bmp") PRINT ("マイページ画像を検出: " + mypage) PRINT ("マイページ画像座標: " + G_IMG_X) PRINT ("マイページ画像座標: " + G_IMG_Y) MMV (G_IMG_X + 5,G_IMG_Y + 5) BTN (LEFT,CLICK) SLEEP (1) MMV (10,10) ELSE PRINT ("マイページ画像を検出不可") CALL reload01.uws SLEEP (2) CALL energy_recheck.uws
576 :
名無しさん@お腹いっぱい。 :2013/11/03(日) 15:54:05.64 ID:RaTkj/Nv0
UWSC 画像判定と条件分岐について質問です 画像判定してボタンを押したいのですが一度ボタンを押すと色が反転してしまいます そのため 押したいボタンの反転前と反転後の双方を候補にして どちらかが判定されたら次の処理に入りたいと思ってます アドバイスお願いします ちなみに次の処理もボタンを押すと色が反転するタイプです 宜しくお願いします
577 :
名無しさん@お腹いっぱい。 :2013/11/03(日) 15:57:28.63 ID:RaTkj/Nv0
↑ ↑ ↑ なぜか3つに分かれてしまいました ごめんなさい もし アドバイス頂けたら助かります ↑
FOR loop_count = 0 TO 9 SLEEP(0.5) mypage = 1 IF CHKIMG("mypage03a.bmp") THEN BREAK IF CHKIMG("mypage03b.bmp") THEN BREAK mypage = 0 NEXT IFB mypage = 1 MMV(G_IMG_X + 5, G_IMG_Y + 5) BTN(LEFT, CLICK) SLEEP(1) MMV(10, 10) ELSE CALL reload01.uws SLEEP(2) CALL energy_recheck.uws ENDIF
579 :
名無しさん@お腹いっぱい。 :2013/11/04(月) 13:48:07.48 ID:B13tSujf0
>>578 さん
ありがとうです 無事クリアしました
助かりました
またお願いします 感謝です
最近になってUWSC始めました 現在極々簡単なスクリプトをスケジュールで一回だけ実行に登録して使っています 本当はインターバルがよいのですが、明示的に今から40分毎に・・・ とはできないんですよね?みなさんはこういう時どうされてますか? あともう一点、たまに実行時間を忘れてマウス操作などをしているときに スクリプトが走り出して止まってしまうことがあります スクリプト実行中は、例えばesc以外のkeyやmouseを 受け付けなくする方法などはありますか?(UWSCの処理を優先したい)
もう忘れてしまったな現役に教えてもらってくれ 単にこれキックじゃダメなんだっけ ループ終了 SLEEP(40*60*60) 実行処理 ループ終了 実行の数十秒前にこれでも書いて自分に警告ウィンドウ出すとか MsgBox あとは仮想マシン上で実行とか 40分毎って回復のタイミング??ゲームとか?
ループ開始をループ終了と書いてた
スケジュール使ってないから知らんけど 式による設定で出来るんじゃない ヘルプに書いてあるのが (YMDNN mod 18)= 0 // 18分間隔 だからmod 40にして=0を適当に変えりゃいいんじゃないの >受け付けなくする方法 LOCKHARDとかLOCKHARDEXとか 特定キー残したいならSETHOTKEYでいらないキー潰すとか?
>>581 sleep 1回だとかなりアバウトになる。
>>583 のやり方は初めて知ったけどいいね。
どういうときに使うのか知らんけど。
> 今から40分毎
今を基準にするなら
((YMDNN+x) mod 40)= 0
とか言う式になるけど、xはどうやって設定するのか。
UWSC.ini の [SCHEDULE] に登録すれば GetTime で現在の x が指定できるっぽいね
x = INT(GetTime() / 60) mod 40
str = "((YMDNN+" + x + ") mod 40) = 0"
WRITEINI( "SCHEDULE", "M" + 番号, str, GET_UWSC_DIR + "\UWSC.ini" )
S スクリプトファイル
M 条件
P 別プロセスフラグ
でも、現在時刻で起動するか分からんな。
重複チェックした上で1回目は起動してやる必要がありそう。
>>581 レスありがとうございます。sleepは最初使っていたのですが、他のスクリプト走らせると
とまってしまうので(別プロセスもうまく働かない)スケジュールにしてました
msgboxはモニタを見てない時に困るので何かないかな?と
仮想マシンはありかもしれないですね。そちらの導入も少し考えてみます
風景を時々刻々アップしてるサイトのスクリーンショットとか
ニコ動でキーワード検索して新しいものがあったらダウンロードなどに使ってます
40分はあくまで例えです。すいません
>>583 ループのところしか見てませんでした
式による設定、あとで調べてみます
>LOCKHARD
おー!そういう命令がやはりあるんですね。
一通り目を通したつもりでしたが見落としてました。
どうもありがとうございます
>>584 ちょっと複雑になってきましたが、詳しくありがとうございます
式による設定しらべてみます
せっかくインターバルあるならこの辺りの設定
作者さん見直してくれないかな〜とおもいつつ・・・
みなさんに教えていただいた方法、試行錯誤してみます
どうもありがとうございました
586 :
名無しさん@お腹いっぱい。 :2013/11/09(土) 13:36:37.84 ID:gzzGzzLX0
570です 572さん RES どうもありがとうございました。 プリントプレビュー画面を開くことで画面数の取得ができました。 以上
perlとpython使いの先輩がセミオートでドヤ顔しながらPCに張り付いて仕事してたから UWSCでさらっと完全自動なものを作ったら怒られた
Ver4.9b3
>>587 自動化で君の仕事がなくなったので明日から会社に来なくていいよクビね
Jane Styleのレスボタンをclkitemで押すのは無理なのかな?
超ど素人なんだけど質問よい? ループで再生するとマウス座標が勝手にずれてくるんだけどなぜ? 例えばAの位置からBにマウスを引っ張って最後またAに戻るとゆう操作を 再生するとAとは明らかにずれた位置から始まる。 しかも最初の頃は問題なかったのに突然こうなった。 どうすれば回避できるのか教えて欲しい
あとUSWCってセキュリティは大丈夫ですか? なんかこれ使いだしてからクレカの番号盗用されて 不正利用されたんだけどまさか情報吸い取られてたりとかないよね
失礼 USWC × UWSC ◎
>>591 AからBまで、例えばMVしてるなら座標からインターバルから何から何まで見直すか、破棄して一新。
ダメならバージョンやOS諸々晒しつつ再現方法を提示してくれ。暇な住民が検証するかも。
>>592 怪しいと疑惑を吹っ掛ける根拠を示してくれ。必要のない背景や被害状況は省いて。
>>592 オンラインゲームの自動操作のためにUWSCを導入
↓
構文を学習せずにマクロスレや親切()な人のサイトでマクロを拾ってくる
↓
アッー!
なんてことをしなければね。
自分で書いてる分には大丈夫だよ。
身元不明のEXEファイルを実行しちゃいけませんて学校で習ったよね。
UWSCも同じだからね。
とあるツールの補助ツール作って限定配布したことがあるが そのツールで表示できる情報なら根こそぎ奪えるよな〜と思ったことはあるな。 ログインから求めるようにすればパスワードも入力するだろうし、 バックグラウンドで何か送信するとかもできるし。まあUWSC以外の全プログラムにも言えるが。
>>594 >>596 ど素人の自分にレスくれてありがとう。本当に初心者なので
他人のサイトを参考にwhiel1って入力したぐらいで、他人の作ったマクロは
まだ使用していないから盗用の件でUWSCは特に問題なさそうですね。
たまたまタイミング的に近かったから思わず疑ってしまったけど、
自分結構ネットショップとかでクレカ使用してたからそこから漏れたんだとは思うw
あとズレに関してはあきらかに同じ位置にマウスを持ってきてるのに
座標みても完全に横にそれてしまってるから、新しく記録を繰り返すんだけど
またズレて記録されているといった感じ。素人すぎてなんのこっちゃ
自分にはよくわからないから、ファイル自体を一旦削除してまたDLでやってみても
最初の2〜3回はうまく行くけどまた同じような症状に戻ってくる。
もしかしたら自分のやってるオンゲで狂わせるような対策されてるのだろうか・・・
>>598 ブラウザは?
途中からブラウザのツールバー出てきてない?
おれも超初心者だけど 再生中に自分でなにか操作すると上書きされたりするよね? ちょっと上のレス参考にして Lockhard で挟んでスケジュール化(while削除) Mouseorg(2) を使うことでうまくうごくようになた ただlockhardはちょっと危険かもしれない
配列IMG[5][5]があったとして、中身が例えば 00122 00122 00122 00122 00122 となっていた場合、0の部分を白、1の部分を赤、2の部分を黒の画像を表示 させる方法はあるでしょうか。 1ピクセルのそれぞれの画像を用意して、それを張り合わせていく方法を考えたのですが、 今回は5*5ピクセルですが、実際に使う場面だと数百*数百になって、とても効率が悪そうです。 uwscでbmp画像を作成、その後表示という方法とか理想的かなと思ったんですが そもそもどう作ればいいのかぐぐればいいのかがよくわからなかったですorz
>>601 「BMP ファイルフォーマット」とか「BMPデータ構造」とかでググれば出てくる
32bitBMP形式が一番単純で作り易い
UWSCの紹介して正規ユーザーなったら2000円バックとかないかな? アフィリエイトってやつw あれば結構な人数を紹介できそうなんだよね 作者さんここ見てる? 紹介制度検討して下さい
ゲームマクロ乞食が昇格した?
俺が製作者ならサイトをSEO対策してBBSもスレッドフロート型にした上でSEO対策する
一部のオタクしか課金しないんだからSEOで収益が上がるようなものじゃないだろ
s/UWSC/Win8.1/ < 604 > nul
ClkItemのアイテム名はFlashだとどこを見ればわかりますか?
ソース
>>611 swfを落としてflaにして中身を見るということですか?
サンプルのIEFlash.uwsが正常動作しなかったので
(GETSTR(flashid, 1, STR_ACC_STATIC)以下が効かない)
なんとかしたかったのですが、
検索すると昔は ClkItem(flashid, "Pause" が ClkItem(flashid, ""
だったということまでしかわかりませんでした
GETSTR(flashid, 1, の「1」を30まで増やしてみましたが無理でした
どうすれば動くようになりますか?
>>613 エスパーして答えるが
IE10、IE11だったらFlashハンドルを取得出来ないからそのサンプルは使えないぞ
どうしても試したかったら、XPもしくはwin7+IE9(できたっけ?)で動かすしか無い
>>614 ありがとうございます
最初に書いてあるのに思いきり見逃していました
ぬおおお 何で座標指定してクリックするとウインドウが切り替わるんだ 今日休みだから一日使って考えられること全部実行して、解決出来なかったら質問させて頂くかもです その時は宜しくお願いします
616ですが事故解決しました。 結局直接的な原因が何だったかは分からずでしたが...
誤爆
大学の課題全部片付けるスクリプト作ったった 捗るわ
>>620 ツール売れば人生セミリタイアできるくらいには稼げるんじゃね?
>>621 某大学の特定のネット上課題を遂行するスクリプトだからなぁ
その大学の生徒には売れるかもしれんが
1時間程度で出来そうなスクリプト作るのに1ヶ月丸々かかっちゃってるんですけど。
俺も大学の卒業研究で膨大な量のデータ処理する為にスクリプト組んで処理させてたわ 今年も同じような研究してる筈だけど、プログラムのプの字も知らない輩だから大変だろうな 礼儀が全然な奴らだったからスクリプトも全部消したかそういえば
あっそ
業務が捗りすぎてヤバいのは感じたことあるな RPGでみんな必死にボカスカやってる中でザキやデス覚えてしまったような感覚
リメイク版ではザキ連発しなくなった代わりに、アリーナがちょっとでもダメージを受けていると最優先で回復するようになったぞ
uwscで割り込みとか、ある処理を強制的に外部から止めるとかってさすがに厳しいのかな thread 処理() sleep(3) 処理() exit procedure 処理() while true hukidasi("a") sleep(1) wend fend みたいな感じに外部から強制的に処理を中断する手段がほしい
>>630 グローバル変数で自作
スレッド内で変数を見て自主的に終了
>>631 やっぱりそれしかないかなぁ
実際はスレッド内はいろんなところでループしてるからそのループごとに
監視しないといけないとなるとかなりの手間になっちゃう
>>630 exitexit すれば強制的に全部終了
個別にやるなら、フラグで制御できるループをスレッドで呼び出して
そっから機能を呼び出せば、機能自体はいじる必要がない。
ただし、強制的な終了じゃない。
もっときめ細かくやるなら、処理の最中に常にフラグをチェック。
めんどくさいならSleepを呼び出すときにフラグをチェックして終了する関数にする。
public flag = false って終了フラグと
function fSleep(time)
Sleep(time)
result = flag
fend
って関数を作っておいて
通常
Sleep(1) とか書くところを
if fSleep(1) then exit と書く
長ったらしい行動スクリプトのときにやったけどめんどくさいし反応遅いけどね。
処理時間を引数から出して
kbd(vk_a); if fSleep(1) then exit
とかやるんだけど
いくつかまとまった行動を関数化しているときはその関数内でフラグチェックして
if walk() then exit
ああ、強制終了が欲しくなるな・・・
スレッド生成時に何も受け取っていない時点で・・・ 因みに自分はめんどくさがりなので大抵のバッチ系はこんな感じで動かしてる 何か例外的な事が発生したら自分でおkボタンを押してるわ thread メイン処理() ←※基本無限ループ、正常終了する時は下のおkボタンを押下しちゃう MSGBOX("OKボタンを押下すると終了", BTN_OK, 4, 858)
説明に不備があってやろうとしてることがうまく伝わっていない様子 読み返してみたら言わんとしてることと確かに違う 上記のは処理の例で、実際にやろうしていることは while true while true 長ったらしい処理 wend 別の処理 wend 基本的にループの「長ったらしい処理」をしてて、目的のことを終えると「別の処理」に移って、 それも終わったらまた最初に戻る ただ、「長ったらしい処理」を待たず、別のスレッドから命令を与えると、そのループを抜けて 「別の処理」を行うようにしたい 割り込みでよくある電話でたとえると、 ・基本的に本を読んでいる 本を読み終えるとAさんに電話をして、電話が終わったらまた本を読み始める っていう処理に、本を読んでいる途中にAさんから電話がかかってくる処理を追加したい ・Aさんから電話がかかってきたらすぐに電話に出る。ただ、電話が終わったあと しおりをはさんでいないので、最初から読み直す という感じにしたい これも例えがわかりにくい気がしてきた・・・
http://siromasa.digi2.jp/uwsc/u_sample/Base/SuspendThread.txt umiumi さん が作ったスレッド停止スクリプト。
Win32API を使ってスレッドを停止、再開する。
それで他の関数を探してみたが、
CloseHandle はシンプルだけど終了しなかった。
TerminateThread はUWSCのプロセスが終了しなくなる。
ためしに SuspendThread したまま exitexit しても同様に終了しなかった。
最終的に強制終了は必要になるけど、TerminateThread でスレッドは止まる。
しかし、SuspendThread したまま放置したほうが安全かもしれない。
>>635 それは外部から強制終了とか不可能だけど
マルチプロセスでやれば可能。
>>635 EXECに同期フラグってあるでしょ。
だからこれでおk。
while true
EXEC(GET_UWSC_DIR + "\UWSC.exe " + REPLACE(GET_UWSC_NAME, 自分のファイル名, "sub.uws"), true)
別の処理
wend
sub.uws を taskkill コマンドで強制終了すれば実現できる。
・・・どうやって sub.uws と自分を区別できるんだっけ。
タスクリストから自分のプロセスハンドルを除外した UWSC.exe を全部終了すればいっか。
ハンドル見るからちょっとめんどくさいね。
自分のハンドル取得は GetCurrentProcess。
マルチプロセスはデータの共有とか同期がめんどくさいんだよね。
起動に時間かかるからよっぽどじゃないと使わない。
>>637 の方のが一番しっくりきそうな感じです
ただ、ハンドルとかそのあたりのことを一切知らないのでこれから勉強ですねorz
あと、replaceがどういう意図で使われているのかがわかりません
普通に"sub.uws"とどういう違いがあるんでしょうか
>>638 スクリプトの起動方法によってカレントディレクトリが変わるんで
ファイルはフルパスで指定したほうがいいかなと。
で、スクリプトファイルのディレクトリのパスを直接取得できないんで
スクリプトファイルのパスを取得してファイル名部分を置き換える。
ファイル名を削ってからつなげるのが普通だと思うけど、めんどくさいんで。
あと、REPLACEを使えば
>>637 みたいに1行で書けるし。
読書中にかかってきた電話が偶然にもコーヒーカップを口に運んでる時だとして、 カップを床に落としても問題がないので電話を取るっていうのなら殺すべきだろうけど、 読書中にコーヒーを飲む事ある?あるならカップはテーブルに置いた方がいいかも。 興味本意だけどそこが気になった。しっくり来たならコーヒーは飲まない派だろうけど。
IE11にしたらルーター操作のIEマクロが動かなくなった 作り直して動けばいいけど、上げるんじゃなかった
俺もアンインストしたぜ
まともな大学生ならスクリプトなんて組まずにプログラムを組むし どんな三流大だよ
スクリプトにはスクリプトの長所ってものもあるのさー 人間の作業負担の代替の場合は基本的に手続き型の操作になるから特にね コスパでどっちを使うか選べば良い
というかどんな作業なのか分からないのに
プログラムの方がいいとか判断できる
>>644 はとってもすごい大学行ってるんだなw
スクリプトもプログラムの種類なんですけど
認証させたい画像が良くても5割しか判定に成功しません 切り取る画像の大小、デフォ透過色無視の0,1,-1も試しましたが無理でした 同ゲーム画面の別の画像は問題なく認識します 解決方法をご存じないでしょうか ifb CHKIMG("認識したい画像.bmp",IMG_MSK_BGR6) // x=G_IMG_X Y=G_IMG_Y BTN(LEFT, CLICK, x, y, 80)
↑が途中で切れてしました 確認に使っているスクリプトです ifb CHKIMG("認識したい画像.bmp",IMG_MSK_BGR6) // x=G_IMG_X Y=G_IMG_Y BTN(LEFT, CLICK, x, y, 80) else PRINT "みつかりません " endif
画像の撮り方が悪いとかエフェクトがはいってて認識できないとか
>>648 それだと透過色/色無視の引数にIMG_MSK_BGR6を指定してるから
ifb CHKIMG("認識したい画像.bmp",,,,,,,IMG_MSK_BGR6)
これで試してみ
それ以外だと情報が少なすぎて分からないな
原因が分かりました、それより上の行のスクリプトがおかしかったようです PUBLIC id=getid("ゲーム名") 正:MOUSEORG(0) 誤:MOUSEORG(id) 以下↑に同じ どちらもマウス移動の相対化で どこかのサイトには(0)より(id)の方がいいと説明されてました
あ
UWSCを触り出して2ヶ月になります。色々なサイトを見ながら、仕事に必要な マクロはだいたい組めるようになり、他の人(職場の)に比べて数十倍以上の 効率で処理を行えるようになったと思います。なので、現時点で特に スキルアップの必要性はないけれど、個人的な興味から今より上の技術を 学びたいと思っています。ただ僕はUWSC以外のプログラムはほぼ触ったこと がなく、VBAをわずかに触ったくらいです。UWSCの上級者と思われる人たち は、UWSC以外にも精通している方が多いですよね。色々な点で自分は 相当無知だとも自覚しており、今はある程度全体を俯瞰できるような上達の 目安表が欲しいと感じています。 例えば漫画板ではちょくちょく見かける強さランキング。 Sランク: Aランク: Bランク: Cランク: このような形で「ここまで到達したらUWSCのレベルはこのくらい」みたいな 部分を教えて頂けないでしょうか。
連投すいません。個人的な主観の場合。 ■初級の中:記録機能を使わずとも、最低限の処理は一から書いて対処できる程度。 ウインドウ関連…getid,clikitem,ctrlwin,sendstr,sckey,sendstr,getstrなど ダイアログ関連…input,msgbox,slctbox 制御関数関連…exec,sleep,gettimeなど 文字列操作関連…copy,pos,length,replaceなど スクリプト構文…変数、if(ifb)-endif、for-next,select-selendなど …この辺りの一部を扱い、基本的な処理を形にできる。 ■初級の下:記録機能からの「保存→編集」ができ、不要な記述を カット、編集して効率化を図れる程度。 ウインドウ低レベル関数(mmv,btn,kbd,acw)やsleep辺りを何となくいじれる。 ■触り始めた直後:記録機能を使って「保存→再生」ができる程度。
UWSCに限らずプログラムというのは一方向に知識が偏ることが多いからこれができたらこのランクというものはない あえて言うなら詰まった時に自分で調べて打開できるか出来ないかの違いだけだ
物事を1つやるだけでもいろんなアプローチの仕方があるし ソースだって重視するのが見やすさか文字量か処理の早さも人によってこだわりがあるだろうし ただ、レベル高い人は正規表現が使いこなせるイメージがある
正規表現なんて初歩の初歩だろ・・・
Excelなら読み書き保存で初級、グラフ・関数で中級、マクロで上級ってのが一般だが 会社によって使用頻度の高い機能が違うから、これができてこれを知らないのかよ! ってのはありがちなのと同じだな。 この感覚でいけば、記録再生で初級、ヘルプを読めばソース書けるで中級 外部のAPIやDLLなどと言い出したら上級のような気がしてる。
>強さランキング ネタをネタだとわからないようじゃあ、いつまでも2ちゃん初心者
UWSCは、他のプログラム言語でそれなりの知識を積んだ人が、使うものだと思うよ ヘルプも、プログラミング中級者以上を対象にした書き方になってるし 少し気の効いた事やろうとすると、COM/WindowsAPI/マルチスレッド&排他処理などが、必要になってくる それらの知識を持たないなら、いつまで経っても初級のまま・・・かもしれない
初級:
・記録したマクロを、構文や変数などで初歩的な構造化を施し、改変できる。
・ヘルプのスクリプト関数を調べて7割を活用できる。
中級:
・自作関数による基本的な構造化が出来る。(
>>261 >>265 CALL多用は除外)
・ヘルプのスクリプト関数を調べて9割を活用できる。
・googleで検索してトラブルシューティングやヘルプ未記載の仕様制限を確認できる。
・googleで検索して初歩的なAPI活用・OLE使用を行い、UWSCの使用制限を突破できる。
・基本的な例外処理を行える。
上級:
・自作関数を適切に分類し、自作ライブラリを構築してCALLでincludeしている。
・ソフトウェアテストの行い易い構造化を行い、大規模になっても部分に切り分けたアジャイルな開発を行える。
・他の言語と比べたUWSCの欠点を理解し、費用対効果でUWSCが適している場合のみUWSCを使う。
・高度な例外処理や、リソースのデッドロックによるフリーズに対処出来る。
超上級:
・UWSCを卒業。オブジェクト操作は各種高級言語から、画像判定はOpenCVで行う。
・あるいは逆に、ソフトウェアテスト業界でUWSCをバリバリ活用しているか、LancersなどでUWSCの仕事を受注している。
余計な一言
UWSCなんぞで数十倍以上の効率で仕事を処理できるなんて、なんて非効率で甘々な仕事なんでしょうか。羨ましいです。
>>661 やっぱりそうですよね。ヘルプ読んでてそう感じました。
>>662 ありがとうございます。こういうのが欲しかったです。
参考にさせて頂きます。
※「処理が数十倍」というだけで結果は必ずしもそうではなく、極端な例で言うと
漫画家に近いかもしれないです。週1本書けるのが普通の漫画家とすると、
それを30本描けるようになった…みたいな。
この土日をフルに使って、某ブラゲの長時間遠征系のマクロの雛形が出来た いい解説サイトがなくて、調べて理解して自分で使って動作検証しての繰り返しでかなり手間がかかった 今までは単純なマウス記録で済ませてた。 使ったのはifb CHKIMG、Else、sleep、xy=G_IMG_Y、BTN(LEFT, CLICK, x,y ,80) くらいだから、UWSC初心者レベルで見ても相当遅いんだろうな
吐き出したいけど卑怯だと理解してるからTwitterなどSNSでは言えず、結果ここしかないんだろうけど、目障りだって想像できないのかな まあ実際にはどういうつもりかは知らんけどアプローチの仕方を少しも考えないような、やはりゲームを自動化するような奴は自己中なんだろうって思いました
なんじゃそりゃ 目障りもなにも、見たくなきゃ見るな、というのが2ちゃんねるなんですけど。 単純作業の自動化は、単純作業で延命するタイプのネトゲでだけ卑怯とされるのであって、 ゲーム以外のほとんど全てでは、推奨される美徳であり、生産的な価値ある行為なんだがなw
その通り 見たくなければ来るな
え、まぁチラ裏すぎてなぜこのスレに書いたのかわからない日記には見えるけどw
uwscをそこそこ触れるようになった時点で、 次のステップとしてお奨めの言語ってありますか? どれやっても大差ない?
>>671 UWSCぐらいの日本語情報がないと厳しいなら
今ならC#あたりじゃない?
DOBON.NETで勉強できるC#かVB.NETで決まりだな。
N88BASIC
アプリのメモリ弄りたいんだがどれがおすすめ?
どれもそう変わらんから自分の好きなの使うといいよ
どれを好きになればいいのかって事かと
皆、どういう目的のプログラム組んでるの? 仕事、私用問わず。 俺は仕事の7割くらいの作業の効率化と、 生活のルーチン化。 アフィリで稼ぐのにプログラム組んでる人ってどのくらい?
>>679 俺使ってるよ。年額でたった75万位にしかならんけど。
>>680 マジか。それってクリック式のとこ?
組み方の問題とか、遊びでやってるレベルだからとか?
それともやっぱセンスなのかね。
まぁ75でもお小遣いとして見れば悪い数字ではないよね。
>>682 作れんし
作れても詐欺師の道具なんて金もらえんだろ。
ウィルス作成罪で警察に突き出すと言われて逆に脅し取られるわ。
>>682 > オートマウスにての稼働ですが、
> これを完全自動化させた感じで
オートマウスでの自動が駄目ならUWSCもダメだろ。
最初から作らないと。
不正でのアクセス稼ぎじゃなくて、送信数を大幅に増やすことで アクセスアップを狙えば問題ないわけだろ。興味のありそうな人への 自動送信とかさ。この「興味がありそう」っていうところをプログラムでの 自動判別にして、手動だったら毎日10人送るのも面倒かもしれない作業を、 自動で毎日1000人くらいに撒けば、最低でもアクセスはそこそこ取れる。 ブログや記事内容が不正や騙しでなければ固定ファンがつく可能性もある。 30〜50の不正プログラムを作るなら、毎月コンスタントに5万稼げる健全な プログラムを考えた方が遥かに良いとは思うな。
IEでページ移動した後、いつまで経ってもBusy状態なのだけど、何か考えられる理由ありますか?
GetItem(id,ITM_ACCTXT,-1)で まったく取得できなくなったんだけどわかる人いるかな。 他の環境(OS・ブラウザ同じ)だとちゃんと取得できるんだけど。 今の環境だとIE以外のブラウザでも取得負荷。たっけてー
つかIP偽装しなきゃ毎回変えられんだろ…
>>688 アクセシビリティ経由は超遅くて超不安定。
デッドロックで応答なしもショッチュウだな…
>>688 JavaランタイムとJava Access Bridge for Windows がインスコ済みかどうかの違いとか?
>>691 Bridegeはどっちも入ってない ランダイムは入れなおしてみたけどだめだった
他のアプリだと取得できるけど、やっぱりIE,Firefox,Chromeはだめだー
IEのポップ(規定のブラウザにしますか?、パスワードを保存しますか等)を uwscで消す方法ってどうするのん?
>>692 >やっぱりIE,Firefox,Chromeはだめだー
ここ読んで少し試してみたけどIE,FirefoxはACC経由の情報は問題なく取得できるけど
Chromeは取得できないな
本家サンプルの
// Google Chrome にてGoogleを表示、日本語ページより検索(ACC方式) #n37
http://www.uwsc.info/sample.html#n37 も動かない(GETITEM(id, ITM_ACCCLK or ITM_ACCTXT))で戻り値0で表示完了処理でループしてる
win7+IE11,Firefox,Chrome,uwscは共に最新
環境によるのかねえ・・・
最新()
>>693 そのウィンドウが出たら閉じるボタン押せばいいだけでは
>>696 それを自動的にしたいのだと思われ。
俺も似た症状がしょちゅう出るうっとい。
本来手動で行う操作の自動化なんだろ? ならばその画面が出る可能性がある箇所に 画面が出ていないか判定し出ていたら任意の操作を行う関数を作成 呼び出しすればいいだけじゃね?
というかスレッド処理しろよどんだけ無知なんだよ
というか、IEの設定画面から無効にするか、レジストリを書き換えるかしろよ
While true if GETKEYSTATE(VK_ESC) then exit // ESCキーを押すと終了させる ifb CHKIMG("6.bmp",0) // btn(left,click,g_img_x,g_img_y) endif wend 画像認証で指定の画像をクリックする簡単なマクロですが マウスの移動→クリックの過程の動作を早くすることは出来ますか?
良いCPUのPCで実行する intervalを10にするとなんか早い気がする
実行までの待ち時間はきちんと入力したほうが早い 詳しくは忘れたがデフォだと100だか200に固定されてるんだっけ?
CLICKよりも、DOWNしてUPさせた方が速い
>>694 IE/Firefoxに関してはAcrobat proが原因でした。
Chromeは改善せず。
速くするだけなら幾らでも早くすればいいが、 相手があるんだからその分失敗率が高くなるぞ
相手のレスポンス待ってる訳じゃないからな、 やれることは指定時間のウェイトの後にクリックする事出し。
どなたか詳しい方、教えてください… hoge.dll public class a{ public a(string b){ ... } public int c(){ ... } } こういうDLLがあるとして、UWSCから使うにはどうすればよいのでしょうか? bのaを作って関数cを使いたいです。 DEF_DLLでオブジェクトaを作ろうにも、bの渡しかたがわからず挫折しました。 DLL自体を解ってないのでそもそもの発想が間違ってるのかもしれません…
msgboxの自動ループって機能的に無理ですよね? 例えば、ページ1、ページ2、ページ3…ページ100とかあって、 それをOKボタンを押さずに、3秒おきにページを進めていくとか。 printだとちょっとニュアンスが違うような気がして。 fukidasiでも考えてみたいですけど、先にmsgboxから。
>>708 DLLの呼び出し規約で、vc++の場合は関数名の後ろに@数字がついてる。
あと、DLL側で extern はしないといけないんじゃないかな。
>>709 できないね。
>>709 Thread使うと出来そうだけど
SLCTBOXで代用したほうがシンプルで良さそうだよ
タイマーも付いてるし
エスパーして中断機能が欲しいと予想しても、だ 基本 Thread を使い中断機能部分は msgbox に 進捗状況はその上にオーバーライドさせた fukidasi で表示するのが吉かな
WScript.Shellオブジェクト作ってPopUpメソッド呼び出す力技
thread多用し過ぎw それで済んだとしても典型的なバッドノウハウだろ。 SLCTBOXで十分だし、 それで不満ならUWSCを卒業した方がいい。
>>710 勉強になります。
externはDLL側に必要なんですね。
DLL付属のドキュメントには関数ぐらいしか書かれてなかったので、externされていることを祈りつつ呼び出し規約を色々試してみます。
>>709-711 VBscriptにはmsgboxのタイマー設定できるのな。自動で○秒表示。
UWSCにもその機能あればいいのに。
なぜかChromeのRC版テスターに選ばれて 32.0.1700.41 m Auraを使ってるんだけど クラス名「Chrome_RenderWidgetHostHWND」取得が出来なくなったみたい 影響は少ないと思うけど(UWSCでChrome操作してる人いるのか・・・) 次期Ver32で少し改修しないといけない場合があるかも(安定版でどうなるかわからないけど) Chrome_RenderWidgetHostHWND→Chrome_WidgetWin_1で座標系が少し狂うのかな?
>>718 MSGBOXのこと言ってるのに何こいつ
これがアスペか
スクリプトAを毎日、違う時間で実行させたい時、例えばinputで 「15:20」と入力したら、15:20に起動させるようなことって可能? それが「式による設定」になるんかな?
現在の時刻と指定時間の差を取ってsleepで待つ ってしてるな
>>713 WScript.Shellやってみたけど消えなくね?
user32.dll、MessageBoxTimeoutAは消えたけど色が変だ
>>709 OK押さずにか・・・
こういうのじゃ押しちゃうから駄目ってことか
THREAD msgclk()
for i = 0 to 10
msgbox("test"+i)
next
PROCEDURE msgclk()
while true
sleep(3)
id = GETID(, "TFmsgDlg.UnicodeClass", -1)
CLKITEM(id, "OK", CLK_BTN)
wend
fend
>>724 MessageBoxTimeoutはミリ秒、PopUpは秒
>>725 OK押さずにってところで
CLKITEM(id, "OK", CLK_BTN)
↓
CTRLWIN(id, CLOSE)
これでどうだ(閉じる、キャンセルボタン押した事になる)
>>722 UWSCのスケジュール機能の式による設定ってのは
設定画面で入力するYMDを使う計算式のことだろ。
YMDと四則演算しかないから違う時刻というのは無理。
> 例えばinputで
それはスクリプトで出来るけど既に動いてるスクリプトがあっての話。
動いてるスクリプトがあるんならCALLでもEXECでもなんでもすればいい。
バグの危険性増やしてまで仕様以上のことをしようとするより 素直にSLCTBOX使えば良い。 ボタンの配置などがちょっとMsgBoxと違うだけで使用上は全く問題ない。 仕様で出来る範囲で割り切って使う。 そのかわり簡単手軽にサクッと使う。 それが“スクリプト”を使う意義。 ボタンの配置などがちょっと違う程度のことも許せずに 延々と不要で煩雑な手間を掛けるのはテクニシャンでも何でも無く ただの暇人。
>>725 そういうので全然おkっす。あざっす!
要は、「手動作業を入れずに」ってことですね。
(自動でボタンを押す分には問題ない)
>>729 仮にそれが暇の産物だったとして、暇から生まれた有益な開発は多いですよ。
アインシュタインの相対性理論だってある意味そうだし、科学上の重要な発見の多くもそうだと思うので。
個人的にはデフォルトでできることを、
癖のある変則スクリプトなど組んで、傍から見たら
「よくもそこまでやるねぇ」って呆れられるくらいのレベルの人が
細部においても実力がある人が多いように感じます。
uwscとかプログラムに限らず、どんなジャンルでも。
>>730 最初の人かどうかはもはやどうでもいいんだけれどさ
それって作業前の応答待機中は何もしないって事なんだぜ
って事はそもそも進捗表示じゃないから
print や fukidasi を使ってみようかって考えている時点で・・・
そして自動応答なら SLCTBOX にあるのだから
メイン処理が止まっているのに
わざわざ THREAD を作ってまで MSGBOX 使うって・・・
まぁ、おつかれさん
本当に優秀なプログラマは無駄なコードは書かない
優秀なプログラマはトリッキーな事はしない シンプル伊豆ベスト
最近まで動いてたんだけど マウスとキー情報を直接送ることができなくなった 最低限のこのプログラムでも動かなくて //test.bmpのx,y=100,100にクリック mouseorg(getid("test"),2) btn(Left,0,100,100,100) windowsのアプデのせい? 誰か解決策教えて
何がしたいのかいまいちわからん 相対座標にして情報送っただけと指定の座標をクリックするだけで動くも動かないもないかと それだけで何もしないならUWSC自体が動作してないって事でアプデ以前の問題
>相対座標にして情報送っただけと指定の座標をクリックするだけで動くも動かないもないかと そう指定の座標をクリックしたいだけ win付属のペイントでtest.bmp開いておいて、 ペイントは非アクティブの状態で、 uwscでマウス情報を直接ペイントに送って、ブラシ(マウス)で点を描きたい 最近まで出来てたのに、、、
737 :
名無しさん@お腹いっぱい。 :2013/12/13(金) 22:45:39.46 ID:YLPUMqSi0
管理者
738 :
名無しさん@お腹いっぱい。 :2013/12/13(金) 22:47:48.78 ID:YLPUMqSi0
管理者権限での実行は? 常識だけど…
>>736 興味本位で聞くけど、ペイントで自動操作ってどんな用途で使ってるのか
支障が無ければ教えて
あと、Windowsの種類とペイントのバージョンもあれば情報が出やすいかも知れない
XPと7のあのペイントは別物だろってくらい違うでしょw
windowsのアプデって、XP→8.1にしたとか言う落ちだったら笑うが
もちろん管理者権限も確認してます
>>739 ペイントは最低限の動きを確認するため
即席で書きました
実際は
ショートカットキーを押すと非アクティブウィンドウに指定した座標を押すという簡単な作業に使ってます
mouseorgの基準指定を(0に)変えればマウスカーソルが動いて点を描くんですが、、、
地味にキー情報を非アクティブウィンドウに送信するというのが便利だったんです
解決策システムの復元
今まで動作していたって話なら 前提条件が崩れているとしか考えられないから とりあえず getid が成功しているのかとか 処理を分解しながら確認してみたら? 後、成功を前提としたスクリプトを描いていると 何処で躓いているか迷うから最低限のエラー処理は入れておくべきだよ
>>731 グダグダ入ってないで代替案と代替コード。
他力本願
>>740 Windows7とかのペイントだったら描画部分をmouseorgでクリックしたい場合はそこのオブジェクトを指定しなきゃダメだぞ?
お前何か勘違いしてないか?
こんなかんじで
mouseorg(getctlhnd(getid("ペイント"),"Afx:0000000000000000:8"),2) // 16桁の0の部分は起動ごとに変わる
btn(Left,0,100,100,100)
mouseorg(getid("test",,-1),2) btn(left,0,100,100,100) print "end" これでtestのペイント開いてない状態で走らせると、もちろんgetidのところで待ちに入る。 ペイント開いた瞬間endが表示され、プログラムはそこで終了する。 しかし点は描かれない。なぜ〜
mouseorg(getid("test",,-1),0) btn(left,0,100,100,100) print "end" こちらはキー情報直接送信ではない方 マウスカーソルが動くがプログラムとしてはちゃんと動いてるので問題なし プログラムは何も問題無いはずなんだよ(この最低限の3行コードでも動いてくれてないけど キー情報直接送信だけがどうしても、うまく動いてくれない
>>745 ありがとう
getctlhndで動きました
オブジェクトを指定しなければならないとはわからなかった
アイテム名って簡単に調べる方法や固定する方法はありますか?
>>748 調べたいところにマウス合わせて
idtohnd(getid(GET_FROMPOINT_OBJ))
とかかなぁ
名前が知りたいならこっちか status(getid(GET_FROMPOINT_OBJ), ST_CLASS)
>>740 なるほど、ペイントは確認のために使っただけで実際は違うプログラムの操作を行っていると
とするwindows updateの前にペイントにマウス、キー情報を直接送れてた訳ではない感じか
>>748 ペイントの場合だけどAfx:以下が変わるのであれば、固定されている所から取得するように作ってみた
getallwin(hndtoid(getctlhnd((getid("ペイント")),"MSPaintView")))
id = hndtoid(getctlhnd((getid("ペイント")),status(ALL_WIN_ID[0],ST_CLASS))) //ALL_WIN_ID[0]は子ウインドウ1個の場合なので考慮が必要かも
指定したアドレスをchromeで開くのにSENDSTRを使って、 F6 SENDSTR(ID,"アドレス",1,True,True) RETURN で試してみたのですが、まずF6を押して、そのままENTERを押してしまっているようです。 IDはChomeになってるし、アクティブにもなっています。Windows7です。 誰か解決方法教えていただきたいです。
>>752 エスパーするとid取得が出来てない
本家サンプルの
path = "C:\xxxx\Application\chrome.exe"
id = Exec(path + " --force-renderer-accessibility --process-per-tab --new-window
http://www.google.co.jp/ ")
この形だとidに-1が返ってきてid取れないから
id = GETID("Google","Chrome_WidgetWin_1")
Chrome開いたあとあらためてid取得しないとダメ
>>753 chromeっていいましたが、実際はchromiumというブラウザです、すいません。
いつもはchromiumを開いた後にマクロを開始して、一行目に
ID = GETID("Chromium")
としてやっているのですが、なんせ知識が全くないもので合ってるのかわからないのですが。
そもそもGETID("Chromium")では取得できてないですか?
>>754 idが取得できたか知りたいときは
ID = GETID("Chromium")
print ID
で-1が返ってきた時は取得できてない(通常は1とか2とか)
chromiumを使ってないから分からないけど、仮にChromeと同じ感じだとして
google(
http://www.google.co.jp/ )を開いている時のid取得は
ID = GETID("Google")
クラス名を指定していないから、googleと言うタイトルのプログラムがあれば
そちらを拾ってくるかもしれない
>>755 1が反映されました。
IDが取得できているのなら、SENDSTRのところが間違ってるのかもしれませんね。。。
SCKEY(ID,VK_F6)
SENDSTR(ID,"http〜",1,True,True)
SCKEY(ID,VK_RETURN)でできないです。
ちなみに、SENDSTRでアドレスをクリップボードに置いて、それを張り付けて移動ということはできました。
連続してすいませんが、 SENDSTR(ID,"http〜”)で行うと、文字を一文字ずつ打ち始めました。 エディトコントロールとかいうのがポイントかもしれません。
日々、コピー&ペーストで確認する作業に疲れてしまい UWSCの導入を考えています。 IDを複数所有していまして、順番にサイトにログインして確認する作業を自動化、ルーチン化したいのです。 例えば ID1 ID2 〜 ID50 とIDが50個あり、これをサイトのログインページに自動でログインさせ、表示されたページの特定の数字を.txtなどにID毎に出力をさせたいのですが UWSC コバヤシ式とかいうサイトを見ればできるようになりますか? このようなスクリプトはだいたい既にネット上に落ちているスクリプトをパズルのように組み立てていくと聞いたのですが、 初心者の自分には左も右もわからない状態です。 おすすめの参考サイトなどありましたら教えて下さい。
761 :
753 :2013/12/14(土) 23:48:55.79 ID:Sfxs7E+C0
>>753 訂正します
>id = Exec(path + " --force-renderer-accessibility --process-per-tab --new-window
http://www.google.co.jp/ ")
>この形だとidに-1が返ってきてid取れないから
Chromeが一つも開いていない状態で実行するとidが取得出来ました
Chromeがすでに開いてい状態で(新たにChromeを開く形で)実行すると-1になりました
>>759 楽勝でできる。構文がわかれば10分もかからずに作れる。
構文を学ぶには
>>1 をどうぞ。無料だ。
文脈的に単一のサイトに50のIDと読めるがなんだろうな およそまともとは言いがたいだろうと想像してしまうが、どうでもいいことか
>>759 ちなみに何のID?
簡単なら作ってみるよ!!
RecIE
ぶっちゃけた話なんですけど、コバヤシ式のサイトに書かれてることとか、 本に書かれていることってあまり上級な内容ってないですよね? 悪口は言いたくないんですけど、あのサイトなり本なり読んで「上級」って 書かれてることは、ちょっと学べば誰でもすぐにできると思うので、 初級〜中級のように感じました。中級を上級と言われると、勘違いしてしまう のが嫌ですね…。
明確な資格試験が無い以上 自称上級者や勘違いなんて主観の問題なんだよ 他人に主観を押し付けている時点で同類になるから 思うだけにしとけ
いままでは PRINT ("ブラウザ再起動開始") 画像A = CHKIMG("画像A.bmp") IFB CHKIMG("画像A") = 1 PRINT ("画像A検知有無: " + 画像A) PRINT ("画像A画像座標: " + G_IMG_X) PRINT ("画像A画像座標: " + G_IMG_Y) MMV (G_IMG_X + 450, G_IMG_Y) SLEEP (2) BTN (LEFT, CLICK) KBD (VK_F5, CLICK, 50) PRINT ("リロード実行") PRINT ("トップ画像検知スタート") 画像B = 0 LOOP_COUNT = 0 WHILE 画像B = 0 SLEEP (1) 画像B = CHKIMG("画像B.bmp") PRINT ("TOP画像検知: " + 画像B) LOOP_COUNT = LOOP_COUNT +1 PRINT ("LOOP_COUNT: " + LOOP_COUNT) IF 画像B = 1 THEN BREAK IFB LOOP_COUNT = 30 PRINT ("ERROR: 画像B NOT FOUND ") PRINT ("ブラウザ再起動失敗") っで問題なく動いてましたが 最近は複数のエラーが多発のため画像を2つ追加して対策したいと思ってます 『新規画像1を感知した場合、新規画像2を左クリック』←追加したい 新規プログラムを以前のプログラム先頭にして 新規画像1を感知しない場合は以前のプログラム通り動いて欲しいと考えてます ご教授 宜しくお願いします
>>768 >『新規画像1を感知した場合、新規画像2を左クリック』←追加したい
簡単だよ。既存のそのプログラムからも学べるし、
>>1 のサイトを参考にしてもいい。
>>769 さん
是非とも新規プログラムを以前のプログラム先頭にして
発見時は新規プログラム実行後、以前のプログラムへ以降する書き方を
教えていただきたいです
プログラム自体を教えて頂きたいのです
参考サイトの伝授は いま現在はパスです
ありがとうです
sute.jp のログインスクリプト作ってたらアクセス拒否食らった。 作成済みのアカウントにログインは出来るけど新規が作れない。 アカウントは24時間で無効になるから・・・オワタ 以前、ログインを試行錯誤してたことがあったけどそん時は大丈夫だった。 ログインは今も可能なことを考えると、パスワードミスとかで何度も試行することは許容されるのか。 それとも作成できるアカウントの数に制限があるのか。 めんどっちいから成功失敗関係なく通しで処理したのがいけなかったのかな。
「スクリプトを組む能力」と「数学的に考える力」は別物と考えて いいんですかね?例えばfor〜next、repeat〜until、while〜wend を多用したスクリプトを見て、「この実行結果はこうなるだろう」って すぐに予想できるのは数学的な力が高い人だと思うんですけど、 プログラムを組む際にそういう力って重要なんでしょうか? (無関係ではないのはわかるんだけど、ここで聞きたいのは 「重要かそうでないか?」ということ)
数学的なのかは知らんが 実装したい手続きを抽象化してグループ分けする力とか そういうのであればあった方が楽なのは確かだよ でもそれって別にUWSCに限った話じゃないしな
数字の認識力について、か。 お題としては数学と言うよりは算数だし、重要ではないかな。 その辺りの話なら算数よりもロジックの積み重ね方や閃きの方が重要。 しかし、ループで複数行を使えば実現は可能だが、ある計算式、公式を知っていたらたったの一行で済むということはたまにある。 可読性、バグの発生、メンテナンス性が上がるという点で、重要と言える。 でもUWSCに限らない話だな。プログラミング雑談スレ part836に逝ってよし
・組む能力 言語的熟語力です。 ・ループを数式に 中高レベルの数列です。
スケジュール設定で、「条件が満たされていなければ実行」 「満たされていたら実行しない」みたいな設定ってできないですよね? 例えば毎時間、「今日はノルマの腕立て伏せ50回しましたか?」っていう 確認メッセージが出てくるとして、「はい」を押したらそれ以後は出てこない (明日になったらまた出てくる)。「いいえ」の場合は、「はい」が押されるまで 24時まで毎時間出続ける…という形にしようと思ったら、 スケジュール設定ではなく、sleepでやるべきなんでしょうか。
>>777 条件は実行するスクリプト内で判断すればいいのでは
「実行後、条件が満たされていなければ続きの処理」
「実行後、条件が満たされていれば何もせず終了」
これじゃなきゃダメなんてルールはないし自分でやりたいようにやりゃいい スリープでやろうが次官取得なり何らかの条件付けでやろうが思った通りの動作してくれりゃ自分で使うにはなんの問題もないだろ
以前、公式掲示板でUWSC.INIを直接書き換えてスケジュール設定する方法を 考えている人がいたな ポイントは、UWSC.INI書き換え後UWSCを再起動しないと設定が適応されないらしい 興味があれば、(公式掲示板直リンしてもいいのかわからないのでgoogleで 「UWSC.INI ある条件となった際にスケジュールを設定する方法」で検索して)該当スレを探してくれ 一応書いておくけどUWSC.INI壊すと、当然設定壊れるから慎重に、最悪誤動作の可能性もある わからなければスルーが吉
再起動なんてしなくても適用されるだろ iniへの上書きだけで変数変えてないとか逆にiniだけ書き換えて再読み込みしていないとかポカしてるだけじゃね? 少なくとも俺が試した限りでは再起動なんて必要ない そもそもUWSC.INIで設定する必要も・・・
いにじゃなくてつくりこもうよたのしもうよ
起動するのに、Windows標準装備のタスクスケジューラを使うのは、このスレではご法度なの?
iniを屠るのもそれはそれで楽しそうだな スクリプトはsleepで待って、PC自体はWindowsのスケジューラでスリープから復帰ってしてるな そんで処理が終わったらPCもスリープに入る の繰り返し
>>781 そうなのか、いつか使おうと思って覚えていただけなので
教えてくれてありがとう。
>>777 の場合はsleepで待機して
>>778 の通り条件判断するか、
状態記録するファイルを用意してインターバルで1時間に一回起動
条件判断がいいかもしれないね
>>779 の言う通り
色々突っ込もうと思ったが
>>779 が結論出してた
例えば数万行のテキスト処理方法を議論してる中で
正規表現使えよみたいな効率化観点ではない時点で
結局はどういう方面でアプローチしていくかの次元でしょって事
俺なら各スクリプトを制御するマスタスクリプトを走らせるな 何らかの出来合いのもので管理するということは、 その出来合いのものが想定した枠内でしかスケジュールが組めない。 ましてや、サブスクリプトの実行結果をマスタプログラムが見て、 スケジュールを条件分岐させることは不可能だろう。 たとえば二日間連続で実行して次の三日間は実行しない、 なんてパターンはどのスケジューラも既定で持っていないパターンだろう。 スクリプトなら、年間積算日を返す関数などを作っておいて、 ( DayOfYear() MOD 5 ) < 2 で判定できるわな。 サブスクリプトの実行結果をマスタに送信するには、 単にグローバル変数を使ってもいいし、 既存のINIファイル命令を介してもいいだろう。 マスタスクリプトの信頼性に自信がないなら、 自分が活動中であることを示すため、 レポートを好きな形式でログに出してもいいし FUKIDASIで表示してもいいだろうし、 コマンドライン対応のタイニーメールサーバでメール報告させてもいいだろう。 それらを介して外部ツールがマスタスクリプトの生存確認を行い、 生存か確認できなければUWSCの全プロセスを強制停止して再起動すれば良い。 したがって、既存のスケジューラで十分な、単純なスケジュールなら、 マスタスクリプトの製作の手間を省く意味でのみ、既存のものを使い、 そうでないなら、姑息な裏ワザなど追求せずに、マスタスクリプトを書けばいい。 まぁあくまで個人の感想ですが。
すいません IE.document.body.innerTEXTを取得してprintできるサイトと できないサイトがあります。この違いは何でしょうか?
>>789 <BODY>が有るか無いか。フレームだけのページなどは<BODY>が無い
または
サイトの応答が遅いのに、IEの読み込み完了待ち処理をせず、sleepで時間を決め打ちしてるなど
>>790 どっちも大丈夫です
何が悪いんでしょうか
>>791 「エラーが出る」 それとも 「有効な文字列が返ってこない」 どっちなの?
サイトのURLは出せないの?
>>794 SLEEP(1)
SENDSTR(0,IE.document.body.innerTEXT)
SLEEP(1)
txt=GETSTR(0)
SLEEP(1)
company=BETWEENSTR(txt,"企業情報・お問い合せ先","住 所 :")
sleep(1)
print company
これでもならないんです
>>793 できたけど
IE.Document.body.innerTEXT
IEGETDATA( IE, "TAG=body" )
どっちでもできる。
BETWEENSTRで失敗してるだけ。
”住 所:” ○
”住 所 :” ×
エディタで検索したら一発
>>795 所 と : の間に余計なスペース文字が1つ入ってる
SendStr(Exec("notepad"), txt, 1, true)
してtxtを確認すべき
ありがとうございました。
こういう住所や電話番号などの絡みは テキストを一旦、全角か半角に統一・余計な空白削除・括弧類削除 ーを-に修正etcを統一で行う変換関数を作っておくと便利
CHKIMG関数の座標なんですがデスクトップの座標をしている為、 他のPCで使用すると座標がずれてしまいます。 起動しているアプリ上の座標を指定するにはどうしたらいいでしょうか?
mouseorg
すいません uwscでcsvに出力したいんですが、 セルを指定して出力することは出来ますか? A1なら会社名、B1なら住所、C1なら電話番号みたいな感じで
エクセルオブジェクト
>>802 comオブジェクト、createoleobjとかgetactiveoleobjでExcel作って、
Excel.range("a"+n).value=kaisya
とかで。コバヤシさんのサイトに触りは書いてる。
そういえばCSVなら便利な関数あるじゃん
わざわざEXCELオブジェクト経由する意味が判らん。 csvの仕様と、EXCELがcsv読み込む仕様に、 難しい所は何もない。 EXCELがcsvを吐くときの仕様に行儀の悪いところがあるだけ。 1行目をタイトル行として、 "会社名,住所,電話番号" 2行目以降をデータ行として "株式会社ほげ,東京都不臥区禿1−2−3 髭ビル2F,03-0000-0000" これを拡張子csvで保存してEXCELから開けば端から入っていって 嫌でもA1が会社名になるぞ。 テキストエディタで書いてEXCELで開いてみろよ。
FPUT(fid,company+address+tell,3,3) これでやると companyが3行目の3列目C3 addressがA4 tellがA5って感じになっちゃいます 列に隣り合って出力したいんですが・・・ 例:A1=company B1=address C1=tell
>>807 FPUT(fid, company, 10, 1) //10行1列のセルにcompanyを書き込む
FPUT(fid, address, 10, 2) //10行2列のセルにaddressを書き込む
FPUT(fid, tel, 10, 3) //10行3列のセルにtelを書き込む
HELPよく読んでなくてFPUTの引数を間違えてるだけか… 実際のテキストがどうなってるかCSVをテキストエディタで開いてすらいないだろうな。 FPUTになまじ列対応機能とかあるのが裏目に出たな。
>>809 やってるんだけど、出来ないんです
10,1=A10
10,2=B11
10,3=C12
に出力されちゃうんです
>>810 >10,1=A10
>10,2=B11
>10,3=C12
バグじゃん、開発に報告よろ
>>810 UWSCのCSV機能は中途半端だから、改行やダブルクオートを含んだ文字列だと、正常なCSVにならないよ。
FPUTのCSV機能使わずにやるか、EXCEL/Calc経由でやるかだね
事前に文字列編集してから、FPUTすればいいような
まぁ俺もFPUTの列機能なんて使ったことなくて、
単に
FPUT(fid, company + "," + address + "," + tell)
ってやってるだけだけどね。
>>810 だからさ
その出力されたCSVをテキストエディタで開いてみたかい?
CSVというのはそもそも何なのかぐぐってみたかい?
出力されちゃうんです、じゃねーよw
>>802 >>807 テストコード書いたよ
F_READ or F_WRITE を指定するのが普通だけど
それだと前回書いた 4:3 の ”3” が残っちゃって分かりにくいんで。
[test_13_018.uws]
filename = replace( GET_UWSC_NAME, ".uws", ".csv" )
FID = FOpen( filename , F_WRITE )
FPut( FID, "a,b,c", 2 )
FPut( FID, "1", 3, 1 )
FPut( FID, "2", 3, 2 )
FPut( FID, "d,e,f", 3, F_INSERT )
FPut( FID, "3", 3, 3 )
FPut( FID, "g,h,i" )
FClose( FID )
DOSCMD("notepad " + filename)
[test_13_018.csv]
a,b,c
d,e,3
1,2
g,h,i
ちゃんとした利用法なら十分な利用性のある関数でしょ 読み書き、蓄積、なんでもござれだよ
バグなのか ならしょうがないな
818 :
771 :2013/12/24(火) 06:13:49.26 ID:4ztCQIgc0
途中まで書いたけど、そこで断念して放置したまま3ヶ月以上死蔵している スクリプトっていくつくらいあります?
>>818 module構文なんて使わないから面白かったわ。
変数のスコープをmodule内に限定できるみたいだから便利だね。
コレ使えばよかったわってのが手持ちに沢山あるな…
ところで
GetTime()
date = eval(G_TIME_YMD)
time = eval(G_TIME_HMS) // YMDとHMSを同時に処理できない
こういうのは凝ったことせず素直に
function getDateAndTime(var date, var time)
で良くね?
ログ出力はFPUT使ってるけどバッチファイル方式かw
Function GetWindowTitle( ID ) に status(id, ST_TITLE) 使わないのは何故
> fukidasi() をスレッドで呼び出そうとしたらなぜか死ぬほど遅くなる
myfukidasiの中でthreadで更に呼び出して
2〜3秒後に自動的に消える投げっぱなし方式のfukidasiにしたかったとか?
即席でテスト書いてみたけど特に怪しい動きはしなかったよ。
試しに1000個生成しようとしたら64個制限エラーが出て生成できなかったし
64個ではCPU使用率に変化殆どなし。
ただし、試しにスレッドごとにIEオブジェクト生成させてみたら、
20個ぐらいから遅くなり始め、MAX64個生成したら俺の4コアマシンでも応答なしになって
UWSCを強制終了するのに数分かかってしまったよ。
げ、UWSC強制終了してもIEのプロセスが64個残ったままだわw
>>819 やりたい事と出来る事を突き合わせて作るので未完成と言うのはあまりないけど数は分からない。
他の言語なら未完成があるよ。
UWSCの場合は”出来なかった”と言う確認の積み重ねがほとんどだと思う。
結局、UWSCで出来る事を確認するためのテストコードを大量に書く事に。
動いたコードをGrepで探してコピペだから、一旦動けばずっと使える。
まあ、可能な事なら完成するまでつぎ込める時間があるです。
だけど、Web使うものはWebサイトが閉鎖されたり、仕様が変更されたりした時点で動かなくなって放置なんで
大抵のものが死蔵になってるかな。
gooメールとかメール確認すらなく登録できてたのに・・・
>>820 G_TIME_ って GetTime() を呼び出したスコープでしか使えない。
G_TIME_ を使えば、GetTime() の1回の呼び出しでいろいろ自由にできる。
自由に指定できる関数を作ると言う手もあるけど・・・自由度が増せば複雑度が上がる。
> status(id, ST_TITLE) 使わないのは何故
存在を忘れてた。いや、マジで。
WindowsAPIを使いたい中二的意味もあるかも。
> 2〜3秒後に自動的に消える投げっぱなし方式のfukidasiにしたかったとか?
そうそう。
スレッドはこういうときに便利に使えるはずなんだけどなぜか重くなっちゃって。
> G_TIME_ って GetTime() を呼び出したスコープでしか使えない。 関数の中でGETTIMEを呼び出してG_TIME_を元に加工した値を返せばいいでしょ。 俺はG_TIME_みたいなシステム変数をメインルーチンの中では一切触らずにやってるよ♪ for id=0 to 65 myfukidasi("thread myfukidasi id:"+id, 3+id) next sleep(10); exitexit procedure myfukidasi(str, wait) thread threadMyFukidasi(str, wait) fend public _staticMyFukidasiId=0 procedure threadMyFukidasi(str, wait) fukidasi(str, _staticMyFukidasiId*20, _staticMyFukidasiId*30) _staticMyFukidasiId=_staticMyFukidasiId+1 sleep(wait); fukidasi("") _staticMyFukidasiId=_staticMyFukidasiId-1 fend この_staticMyFukidasiIdもmoduleで外から隠せるのでそのうち使いたいと思ふ
UWSC 画像判定と条件分岐について質問です どうか宜しくお願いします 1.画像Aがあるか判定する 2.画像Aがあれば、画像Bをクリックする 3.画像Aなければ、いままで使ってるリロード処理を行う 画像A判定→画像Bクリック 以下 いままで使っているリロード処理 IFB ZZ_reload = 1 ZZ_reload = CHKIMG("ZZ.bmp") PRINT ("リロード画像を検出" + ZZ) PRINT ("リロード画像横軸: " + G_IMG_X) PRINT ("リロード画像横軸: " + G_IMG_Y) MMV (G_IMG_X + 5,G_IMG_Y + 5) BTN (LEFT,CLICK) SLEEP (2) BREAK ENDIF IFB LOOP_COUNT = 5 PRINT ("リロード画像無し") BREAK ENDIF 困っています 是非お願いします
.画像Aがあるか判定する これがまず出来てないじゃん IFB CHKIMG("A..bmp") 画像があるときの処理(画像Bをクリックする) ELSE 画像がないときの処理(いままで使ってるリロード処理) ENDIF
//1.画像Aがあるか判定する 判定A=CHKIMG... //2.画像Aがあれば、画像Bをクリックする IFB 判定A THEN //画像Bをクリック ELSE //3.画像Aなければ、いままで使ってるリロード処理を行う //リロード処理 ENDIF こんなの今や義務教育らしいじゃん?
自分のプライベート用に作ってるプログラムってどんなのあります? 俺はスケジュール管理系ばかり。
IEと相性良いんで、ネット活動の自動化や一括化やね。 (アフィ)サイトの自動更新、テキスト整形(innerHTML連携で便利なんで) ブラウザPCゲームの自動稼ぎ、一括登録系、一括POST系、一括メール送信 あとはAPI提供が無いサイトからデータ蓄積・抽出botみたいなスクレイピング。
SAVEIMGで保存された時の画像名なんだけど 同じフォルダにその名前のものがあったら違う名前を自動でつけるのってどうすればいいんだ?
>>830 basename = "hoge"
extname = ".bmp"
suffix = ""
for i=1 to 10000
filename = basename + suffix + extname
if FOPEN(filename, F_EXISTS)=false then break
suffix = "(" + i + ")"
next
if i>10000 then MSGBOX("ファイル多過ぎ")
SAVEIMG(filename)
とりあえず上書きされなければいいのなら def_dll GetTickCount(): dword: kernel32.dll SaveImg("hoge " + GetTickCount() + ".bmp")
>>815 このバグの回避方法教えてください
Excel出力は有料じゃないと使えないので無料のcsvでなんとだめなんです
>>833 指定通りに出力されるみたいだけどどのあたりがバグなの?
頭
ごめん されてたわ 忘れて
イラくるなあ
>>833 バグがある機能は使わない。
直された後でさえ、かつてバグがあった機能は使わない、永遠にだ。
この程度の開発体制のスクリプトに期待を持つな、不当な期待だ。
スクレイピング時の疑問なんですけど、例えば 単語1/単語2/単語3/単語4…単語155 とかってあったとして、単語の文字数も一定ではなく、単語の項目も一定ではない時に、「山」「川」「谷」「田」のどれかを 含む単語だけ抽出したい、っていう場合ってあっさりしたコード記述では難しいですよね?山川…の漢字も4つとかでなく、100以上あるような場合は 結構難解なコード書くしかありませんかね? あと、入力をした数字によって表示される文字列を変えるコードを書く時、今は Dim moziretu[99] test=input("testに数字を入力") select test case 0 ;print moziretu[0] case 1 ;print moziretu[1] case 2 ;print moziretu[2] … case 99 ;print moziretu[99] selend と律儀にやってるんですけど、例えばこれを select test case test ;print moziretu[test] selend みたいにするのはできないんですかね?? さっき試してみて、どちらも撃沈したやつなので、簡略化できる方いたら教えて下さい。
配列を使うかcsvのように区切り文字を使って抽出する範囲を判別させる
>>840 s = "池本/桜井/中川/釜田/安永/川本"
re = CreateOleObj("VBScript.RegExp")
re.Pattern = "[^/\s]*[山川谷田][^/\s]*"
re.Global = true
m = re.Execute(s)
for i=0 to m.Count-1
print m.item(i).Value
next
MsgBox("END")
やっぱ正規表現か。だよな。
>>840 質問番号でもつけろよ。
前半の質問
正規表現が最も有効
>>842 だが
使わないなら、検索対象単語配列の各要素に対して検索語配列の全要素を検索する2重ループにする。
もちろん低速。とはいえ100*100程度なら数秒じゃないか?
コードとしてはあっさりしたものになるぞ。
後半の質問
test=input("testに数字を入力")
IF CHKNUM(test) THEN print moziretu[test]
ではなくSELECTしてる理由は?
すいません。URLパターンが
http://*******@ttss のみを絞るときはどうすればいいですか?↓だと全URLが出てしまいます
re.Pattern = "https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+"
事故解決しました
ttp://anago.2ch.net/test/read.cgi/software/1278083626/876 というのをUWSCでやってみた。
最初 (1) を作ったんだけど3つのプロセスのうちひとつしか設定されないうえに
タスクマネージャーから開くと権限が書き換わってエラーが出るようになった。
管理者権限でタスクマネージャーを起動すれば見れたけどそんなのあほらしいんで
(2) を試してみたらしたらうまく行ったんだけど、これだと start コマンドでやっても同じだなあと。
(1)
ID = exec(program)
Hnd = OpenProcess( PROCESS_QUERY_INFORMATION or PROCESS_SET_INFORMATION, TRUE, STATUS( ID, ST_PROCESS ) )
SetProcessAffinityMask( Hnd, 5 )
CloseHandle(Hnd)
(2)
Hnd = GetCurrentProcess()
SetProcessAffinityMask( Hnd, 5 )
exec(program)
CloseHandle(Hnd)
// 定義部分
DEF_DLL GetCurrentProcess(): hwnd: kernel32
DEF_DLL OpenProcess(dword, bool, dword): hwnd: kernel32
DEF_DLL GetProcessAffinityMask(hwnd, var dword, var dword): bool: kernel32
DEF_DLL SetProcessAffinityMask(hwnd, dword): bool: kernel32
DEF_DLL CloseHandle(hwnd): bool: kernel32
public PROCESS_DUP_HANDLE = $0040
public PROCESS_SET_INFORMATION = $0200
public PROCESS_QUERY_INFORMATION = $0400
program = "C:\Users\xxx\AppData\Local\Chromium\Application\chrome.exe"
数分間、又は数回画像認識できない場合F5を押して途中で見つかったらまた繰り返す処理をしたいのですがどうすればいいでしょうか While True ifb CHKIMG("画像A",0) x=G_IMG_X y=G_IMG_Y btn(left,click,g_img_x,g_img_y) MMV(x+50,y+50,0) sleep(3) //B,D,E,F画像で同じ回数chekimg endif //個数分書いてます IFB chkimg("画像1.bmp")=true THEN ifb CHKIMG("画像2.bmp",0) x=G_IMG_X y=G_IMG_Y btn(left,click,g_img_x,g_img_y) MMV(x+50,y+50,0) sleep(3) endif REPEAT // chekimg数回 UNTIL chkimg("画像3")=true endif wend このような感じです
ほれ どう考えてもperiodに達しないけど dim 秒数 = 60 dim 回数 = 3 dim 画像リスト[] = "画像A", _ "画像B", _ "画像C", _ "画像D" while true // 内while終了条件をリセット period = gettime(秒数/24/60/60) // ループ終了条件1 予定時刻 count = 0 // ループ終了条件2 予定エラー回数 while gettime() < period for i = 0 to length(画像リスト) - 1 // 必要な個数分繰り返し ifb !chkimg(画像リスト[i]) count = count + 1 // なかった回数をカウント else // あったらやり直し? continue 3 endif sleep(0.1) next if 回数 < count then break sleep(1) wend KBD(VK_F5) wend
URLリストからブラウザでIEを起動せず、情報を入手したいんですが それってできますか?
>>850 つ Microsoft.XMLHTTP
IE8以降ならHTML独自仕様ほとんどないから Safari,Chromeあたりと同じ位置づけでいいんじゃない?
ChromeもCOM的に操作できたら捗るんだけどなぁ。
855 :
840 :2013/12/29(日) 07:34:58.06 ID:qF357mkgi
返事遅くなりました。
>>842 ありがとうございます!正規表現調べて自分のものにします。
参考にさせてもらいます。
VBScriptとか全然触れたことがなかったけれど、コードを見る限り、
全く手が届かないものでもなさそうなので、そちらも調べてみます。
>>844 質問番号は確かに。以後気をつけます。
>>検索対象単語配列の各要素に対して検索語配列の全要素を検索する2重ループにする
これって「自分が予想できる要素のみで構成されている場合において有効」なもの
ではないでしょうか?例えば「単語が100あり、その中に全ての常用漢字が使われる可能性がある」
というような場合、コードを書く時かなりしんどくないでしょうか?
CHKNUMは触ったことがなく、用途も知りませんでしたが、確かにそれならいけますね。
勉強になりました。ありがとうございます!
>>855 スクレイピングと言ったのだから対象要素が不定という要求仕様があるということは
言わなくても判るものだ、というつもりだったのかな?
VBScriptも正規表現も使ったことないのに今までどんだけ言語いじってきたか知らないが、
そこまで言うなら金出してスクレイピングソフト買うなり製作依頼の仕事出すなりすべきじゃないか?
要求仕様の後出しはやめようね。
大量のデータ捌くのは、データ構造の設計して、
判定用マスタ情報も自動で読ませるのが普通。
じゃなきゃどんな方法使おうと無意味。しんどいに決まっとる。
まぁ正規表現でやるにしても、常用漢字のチェックとか
不利だらけのUWSCでやらなきゃいけない意味が判らんが。
エラーチェックはChkNumだけでなくもっと沢山必要だぞ。
ループでやるなら判定材料を配列に納めろところさえ自動でやればPG自体は簡単。ただし遅い。
正規表現でやるならさらに、式を文字列操作関数で自動生成することになるが、
果たして何文字までの正規表現ならまともに動くかな?ということになるな。
ちなみに[a-z]とは書けるが[亜-腕]と書けるわけでもない正規表現で
2136字の常用漢字を判定するつもりなら、
正規表現が最適かどうか怪しいぞw
要求仕様の後出しはやめようね。
もしVBSの正規表現で間に合わないならbregonig.dllでやるのもいいよ そっちならShiftJIS全文字並べた長いパターンでも大丈夫だし、戻り読みにも対応してる
ファンクションを作成したuwsファイルを別のuwsファイルで読み込んで 使うことってできる?
call
>>859 できました
ファイルの実行しかできないと思ってた、有難うございます!
861 :
名無しさん@お腹いっぱい。 :2013/12/30(月) 00:10:29.58 ID:uCwyxvsg0
IESETDATA( IE, 1, , "A" ) IESETDATA( IE, 1, , "B" ) IESETDATA( IE, 1, , "C" ) これらをwhile trueの間ランダムで選択し続けたいのですがどうすればいいのでしょうか また Aを押したらBかC、Bを押したらAかC、Cを押したらAかBとするのは可能ですか
> Aを押したらBかC HTML内でOnClickイベント時にBかCをするようにinnerHTMLを書き換えればいいけど 直接呼び合うとおかしくなるんで それぞれをクリックしたときの動作を関数として外に出してそれを呼ぶようにする必要がある。 WebページのボタンをクリックしたときにUWSCを呼び出す事は出来ない。 Pro版を使ってGUIを作ったときの話は知らないんで本家で聞いてね。 RANDOM(Range) // 0 <=X <Range の範囲にある乱数を返す select RANDOM(3) case 0 data = "A" case 1 data = "B" case 2 data = "C" selend IESETDATA( IE, 1, , data ) 配列を使ってもいいけどこっちの方が汎用的。
近頃UWSCと関係ない、それ以前の構造文の基礎の質問だらけだな。 義務教育でプログラミングが採用されてからは習ってるはずだが? chars[] = "A", "B", "C" sel = 0 while true sel = random(3) // 0-2の整数 IESETDATA(IE, 1, , chars[sel]) wend VKABC[] = VK_A, VK_B, VK_C getABC[] = false, false, false for idx=0 to resize(VKABC) getABC[idx] = getkeystate(VKABC[idx]) next resChar = "" for idx=0 to resize(getABC) ifb getABC[idx] then resChar = chars[( idx + random(2) + 1 ) mod 3] //または resChar = CHR( ASC("A") + ( ( idx + random(2) + 1 ) mod 3 ) ) break endif next
ああ、AとかBとかCとかを押したらってのは文字通りキーボードの事だったか。 だけど呼び合う事が出来ないのは同じ。 UWSCでBをクリックすると、Bがクリックされた事を拾ってしまうから。
フラグ管理しとけばなんお問題もない
プログラミングってこと理解した方がいいよな わからないならマウス記録機能だけ使ってろっての
キーボードは使っちゃいけないの?コード組むよりショートカット使ったほうが捗ることもあるけど
>>866 こういうのってさ、英語と同じで教科書ばっかり進化しても
先生がそもそも知らんわけよ。
ヘタしたら親がPCいじりの好きな生徒の方が詳しかったりね。
もともと義務教育でベーシック言語みたいな項目がさらっとあったはずだけど
先生もまともに説明できないもんだから、歴史の教科書の後半並みに飛ばし読みで
終わりだし。
いつから高校が義務教育になったんだ
必死にP2使ってまで無知をひけらかすとか何がしたいんだろうな。 もう来るな。
2chでp2バカにする奴は田舎もん確定 p2使うのはIP規制が頻繁にあるから つまり人口が多い地域に住んでいる証明みたいなもん 地方じゃIP規制なんてならない 年がら年中IP規制なあ時なんて無い人はP2使う 田舎もんには信じられないだろうが あるんだよね 年がら年中IP規制の地域 どこのプロバイダーに替えてもIP規制の多い地域は一緒一緒 結局人口密度だろ 無知をひけらかしたんでは無く 本人大真面目 お前にそういう時期は無かったの? そういう時期だから質問するってさっしてやれよ田舎もん
安定の末尾Pw
>>872 地方でもそうでなくても大手のISP使うのは変わらん気がするが?
ここ数日、回答もらったのにお礼すら書かない人が多いね 義務教育で礼儀を教えろよ>文科省
あれだ、年末でバタバタしてんだろ。
>>875 基礎がないので貰った回答が理解できんのだろう。
2chなんかでお礼を期待するほうが馬鹿
じゃあ、2chで回答を期待するのも馬鹿ってことになるな
そういうとこだろ
じゃあ、もう回答も不要だな スレ終了w
期待するなってことなのに どうして極論なのか
ぶっちゃけ、くだらない質問に親切心で答えてやってるやつが 結果的に「荒らしに餌をやる構図」になってる。 答え教えてるやつが結果的にスレ汚しに加担してる形になってるわけだ。 テンプレ読まない、何がやりたいのか説明しない、作成途中のスクリプトすら書かないやつには 直接答えを教えず、道標だけ示せばいいかと。それか放置か叩けばそのうち懲りるんじゃね。
「ぼくの考えた最強の2ちゃんねる」は過去現在未来において存在しません
>>847 は無駄だったと思ったんだけど意味あったよ。
環境引っ越して chrome-win32 を Program Files (x86) に置いてショートカットを設定しようとしたら
start コマンドじゃ登録できなかった。
ダブルクォーテーションが使えないんだな。
C:\Windows\System32\ にあるアクセサリは start コマンドでもいけた。
ただし、Windows 8.1 のスタート画面のショートカットではコマンドプロンプトは開くものの、アプリは起動しなかった。
Windows 8.1 は動作がきびきびしてるが、コマンド関係が不自由になってる。
ウィルス対策だから仕方ないわな
いや、俺が間違ってただけだった。
ダブルクォーテーションのありとなしで動作が変わるからはまった。
詳しくは
ttp://anago.2ch.net/test/read.cgi/software/1278083626/876-877 ttp://toro.2ch.net/test/read.cgi/tech/1374205515/321-323 UWSCでもコマンドライン オプションでプログラムを指定して汎用的に動くようにしようとすると
ダブルクォーテーションをつけないと動かなかったんだ。当然と言えば当然だけど。
だけど、UWSCのスクリプトで直接実行ファイルを指定して動かせたから
start でも動くかもと試行錯誤する気になったわけで、まあ、意味はあった。
急ぐ場合でもとりあえず動かせるのがいい。
ちゃんと動くコマンドラインのサンプルがこれ。
C:\Windows\System32\cmd.exe /c start /affinity 5 "chrome" "C:\Program Files (x86)\chrome-win32\chrome.exe"
"C:\Program Files 3\uwsc\UWSC.exe" "C:\Program Files 3\uwsc\小物\SetAffinity.uws" "C:\Program Files (x86)\chrome-win32\chrome.exe"
バッチファイルユーザーは過去散々、 忌まわしい空白混じりパスに対しダブルクォーテーションで戦ってきたので 例え不要になったとしても省略したりなどしない。 ダブルクォーテーションで囲ってもいいなら是非囲う、それが漢ってもんだろ。
コマンドに渡すときだけダブルコートだね 変数定義でダブルコートつけてるやつはニワカ
いやぁ。パスは囲んじゃうね。 囲まないことでトラブることはあっても囲んで悪いことは無いし 習慣として囲むわ。
Program Files 何度MSってバカじゃねーのと思ったことかw
LFNの完全に正しい仕様 そりゃ20年経ってもLFNに対応しないのがおかしい
質問させてください。 id = EXEC("notepad.exe") と書いたuwsファイルを実行すると、問題なく新規メモ帳が開きますが fid = FOPEN("D:\UWSC49\test.txt", F_READ or F_WRITE) と書いてもtest.txtが起動しません。 念のためMSGBOX(GET_CUR_DIR)でテストしましたがtest.txtを置いている階層はあっていますし ファイル名、フォルダ名共に間違いもありません。 何か他に考えられる原因などありますでしょうか? win7proで使用しています。 すみませんがよろしくお願いします
fopenはそういう用途に使うもんじゃない
>>895 何が聞きたいのかよく分からんけど、おそらくメモ帳でtest.txtを開きたいってことかな?
だったらexec("notepad.exe D:\UWSC49\test.txt")でいいと思うけど
fopenはUWSC.exeが自分でFGETしてFPUTしてFDELLINEしてFCLOSEするので notepad.exeは必要ないし起動もしない *.txtを関連付けで起動したいなら、DOSのstartコマンドを使う c:\> start "Hello World" "D:\UWSC49\test.txt"
皆様、レスありがとうございます。
fopenは、あくまで内部的に操作をするという事だったのですね。
私が考えていた動作は
>>897 さんが書いて下さったものでした。
私の質問文が言葉足らずだったようで申し訳ありません。
回答ありがとうございました。
とあるブログからコピペした↓を自分の環境で動かしてみたら while True //ループ開始 ifb CHKIMG("ball.bmp") //もし、ball.bmpと同じ画像があったら x=G_IMG_X //xにball.bmpのX座標を代入 MMV(x, 770) //座標(x,770)にマウスを移動(y座標は調整してください) endif //IFbの条件終了 WEND //whileからここまでの無限ループ KansuCall:モジュール 'UWSC.exeのアドレス 004FCD34 でアドレス00000000 に対する読み込み違反がおきました。 2行目:IFB CHKIMG("ball.bmp") と表示されて動かないんだけど何が原因?
>>900 画像がおかしいんじゃね?
24ビットカラーで保存してる?
>>901 うん
試しに他の画像にしても同じエラーが出る
書き込む前にggってみたけど同じ様なエラーでてる人いないっぽいし
晒せる範囲で環境晒してみたら? 自分はWin7x64環境のV2C(x64)で 設定した板を巡回するスクリプトでCHKIMG()を使っているが 特に問題ないよ 後、問題の切り分けのために 調査対象じゃない画面でCHKIMG()を使ってもエラーになるかとか調べてみるといいよ 要するに自分の環境ではエラーになるという現実を受け入れて どこにその原因があるかを考えるのだ UWSCのバージョンを変えてみるとか 再インストールしてみるとか 頑張れ
>>905 バージョン下げてみたらエラーでなくなった
ありがとう
これで先にすすめるよ
>>856 専門馬鹿?
>そこまで言うなら金出してスクレイピングソフト買うなり製作依頼の仕事出すなりすべきじゃないか?
要求仕様の後出しはやめようね。
読んでわからない人?後出しせず最初に書いてるがな。
ソフト買うのは目的と違うし、自分は毎回買いながら言わないと筋違い。
>大量のデータ捌くのは、データ構造の設計して、
判定用マスタ情報も自動で読ませるのが普通。
じゃなきゃどんな方法使おうと無意味。しんどいに決まっとる。
それを最初から聞いてるのわからないかな?
結論「俺じゃ無理」とだけ書いておけば、的を射た回答だった。
何かうっすいし疲れるね。プログラム出来てもコミュ(ry
ただ、勉強にはなった。今後気をつける。
>>857 遅くなってすいません。
参考にさせて頂きます。ワードを参考に調べてみますね!
ありがとうございました。
メモ帳に以下のようにあります //文字列行数、名前、チーム, //チームは必ず2人1組です 1山田,1 2,田中,2 3,佐藤,3 4,小川,2 5,高橋,3 6,西川,1
宿題は自分でやりなさい
すみません、途中で送信してしまいました。 チーム1の山田さんはチーム2の田中さんのことが好きです。 チーム3の佐藤さんは同じチームの高橋さんが嫌いです。 他にも、チーム替えすべきことが幾つかあります。 相応しいチームに組み替えるCSV処理を教えてください。 なお、サンプルの人達は男子校を想定しています。
腐女子の自動カップリンクスクリプトか?
すみません、気付かないうちに途中で書き込んでしまっていました。 聞きたかった事は、どの組み合わせが一番効率が良くなるか?という事です。 (組み合わせ=ペアです) それではよろしくお願いします。
>>908 何も難しいことはない、速度を気にしなければループで処理するだけ、お前以外の誰でも出来る。
正規表現もお前以外だれでもできるが、各正規表現ライブラリの仕様制限がどこまでかに縛られる。
あと
>>909 のワードはキーワードな。おまえは伸びない。
IFB …A IFB …B IFB…C ENDIF ENFIF ENFIF 上記のようにIFBを入れ子にして上からA,B.Cとする Aの式の条件を満たしてない時にBの式の条件を満たしても Bのスクリプトは動作しないよね?
>>917 つかそんなの適当に計算なりカウントなり適当に動作させれば分かるだろ
ここで聞く事か?
自分の頭で何も考えられないゆとりは帰れよ
そうそう。屑質問は徹底的に叩き潰せ。 少しでも情けをやると付け上がって俺たちを無料デバッガーか UWSC版Googleのようにこき使うからな。
>>918 最近始めたばかりで簡単な式で試験的に動作させるという発想がなかったわ
ありがとう試してくる
>>915 なにがそれでは、だw
これはデータ構造と、数理計画・離散最適化の問題で、やればやるほど難しいし、
そもそも操作自動化スクリプトであるUWSCが目的とする課題ではない。
素のC言語やBASIC言語やJavaやらで勉強したほうがためになるよ?
//同姓同名を考えず、名前のみで一意な個人が特定できるものとする。
//同姓同名がいる場合は名前に対応するシリアルナンバーが必要。
//好き嫌いテーブル:名前、チーム,好き嫌い,対象の人,対象の人のチーム
//一人が複数の好き嫌い対象を持つことも可能
山田,+1,田中
佐藤,-1,高橋
…
//判定テーブル
山田,山田,-999
山田,田中,+1
山田,高橋,-1
…
田中,山田,…
このような総当り判定表を2重ループで自動生成。
各個人ごとにうまく配列に納めてソートすれば、各個人が誰と一番組みたいかまで判る。
更に、ある個人が一番組みたい誰かと、その誰かがその個人とどれだけ組みたいかの
判定ポイントを合算した配列をソートすると良いだろう。
想定通りにうまく判定させるには好き嫌い判定ポイントを絶妙に設定する必要がある。
また片思いや三角関係やストーカー関係まで判定するには更なる工夫が必要。
ちなみにこの分野はこういうのね。
http://www.secom.co.jp/isl/research/cs/report03/ これをBLのカップリングスケジュール問題として応用するわけかw
>>921 の訂正
//好き嫌いテーブル:名前、好き嫌いポイント,対象の人
//一人が複数の好き嫌い対象を持つことも可能
山田,+1,田中
佐藤,-1,高橋
…
だな。
RDBならクエリを連鎖させれば数発で出る。
>>920 おう、そのやり方はコード書く上では必須だから今後も使うといいぜ。
他には
FUKIDASI() とか、PRINT() なんかもデバックにはかなり使えるから試してみるといいよ
頑張れよ!!
>>922 出来ないのに云々の捨て台詞阻止で
どれぐらい無理ゲーなのかを示してやっただけだよ。
>>924 それハマったけど
FUKIDASI("hoge")
PRINT "hoge"
なんだよなぁw
//このスクリプトはリファレンスに乏しいから、 //一々こうやって調べにゃならんのよ。 // FORのテスト PRINT "FOR loop=0 TO 3" FOR loop=0 TO 3; PRINT loop; NEXT// 0,1,2,3 PRINT "end of 'FOR loop=0 TO 3'" PRINT "now loop="+loop+", out of loop." // ループ抜けた後も生存し、値は4 PRINT PRINT "FOR loop=1 TO 1" FOR loop=1 TO 1; PRINT loop; NEXT // 実行されんの? PRINT "end of 'FOR loop=1 TO 1'" PRINT "now loop="+loop+", out of loop." // ? PRINT PRINT "FOR loop=1 TO 0" FOR loop=1 TO 0; PRINT loop; NEXT // エラー?逆方向にループ? PRINT "end of 'FOR loop=1 TO 0'" PRINT "now loop="+loop+", out of loop." // ? PRINT PRINT "test end."
この言語に限らず 何か気になった時に実際に組んでいる途中のスクリプトだと問題点の切り分けがややこしくなりがちなので 最小単位の独立したサンプルを作成して試すってのは往々にして必要だよね
つ オブジェクト指向
だな、自分はforの変数がループ内で変更出来ないのでハマったわ
お、テストにソレ忘れてたと思って書いてみたら 俺の認識を更に改める結果になったw FOR loop=0 TO 5 IF loop=2 THEN loop=3 PRINT loop NEXT UWSCの仕様だと 0, 1, 3, 4, 5 0, 1, 2, 3, 4, 5 0, 1, 3, 3, 4, 5 どれでしょうか? こんな事がHELPに仕様、書かれてないのがUWSC
それはそれとして for文のループ変数を途中で弄るよう奴が書くコードなんて読みたくないな
>>931 HELPにキチガイの間違い集とか要らないんで
jpcertのセキュアコーディングスタンダードなどのコード規約や コーディング作法でならば非推奨でも、 仕様に書いていない、何の規格も規約も無いスクリプトで、 禁止されていない書き方をしたのだから、間違いではないなw
うーん、HELPをど親切にしろとは言わないが 例えば GETKEYSTATE() は瞬間値では無いという説明が無いのは良くないと思うぜ While等のループ脱出に使いたい場合空呼びが必要ってのは地味にハマる
基本もっと親切にっていう人は他のプログラムにさわったことない人なんだよな ヘルプにUWSCとは別の部分のリファレンスがわからないから説明載せろとか(APIとかDLLとか)
>935 While等のループ脱出に空呼びって、どういうこと? ループ中に入れたsleep()にgetkeystate()を押したらダメということ?
>>937 GETKEYSTATE() は過去に指定したキーが押下されたか判定する関数なので
例えば無限ループをESCキーで脱出したい場合は
GETKEYSTATE(VK_ESC)
While True
if GETKEYSTATE(VK_ESC) then exit
//適当な処理
WEnd
ってしていないとダメ
長いスクリプトで起動からループまでの間に VK_ESC が押されていたら 適当な処理 が動作しない
なのでWhile前に ESCキーの押下判定を一旦クリアする必要があるの
長い処理させる時には普通キー用の自作関数作って並列処理(厳密には並列処理していないが)させるだろ
>938 初めて知った。 今まで、ループ前にキー押下げクリアなんてしたことなかった。 ありがとう。
>>938 なるほど直前にバッファークリアが必要なんだね。
組み込み系のプログラミングに似てるな。
参考になったわ。
>>939 長い処理させるときに並列処理で補助するかしないかはスタイルの一つであって
普通かどうかは自明ではないよ。
キー用に限らずあらゆる事を自作関数にして抽象化すること自体は普通だけどね
>>935 ハマったわー。
ググったら例のせてくれてる人がいてすぐ解決したけど
>>942 やっぱりな〜
「GETKEYSTATEのその他の仕様はMSDNと同じです」
などと書くか、
そのページを丸ごとコピペでもして置いてくれればよかったのにね。
ってかそもそも、仮想キーコードからしてそうだよな。 「A」が「VK_A」なのも「VK_A=65」なのも、一切書いてないし。 もはやそれがUWSCらしさだよ。
HTML の話だけど ドラッグ&ドロップで受信する方法は何がいい? HTML5 の ondrop を見てるけどうまく動かん。 IEの空ページにドロップして BeforeNavigate2 を受け取ってキャンセルが一番確実かなと思う。 ondrop とか FileAPI 関係見てると HTML と Javascript だけで行けそうと思ってしまうけどダメなんだな。 確かに megaupload とかはやってるっぽいんだけど・・・
ゲームが起動してる時だけUWSCで画像が認識されなくて、 ゲームの起動をやめれば画像をちゃんと認識してくれます・・・ ゲームを起動しながら画像を認識してくれるようにするにはどうすれば良いですか? ちなみに仮想マシンのwindowsXPです。 ゲーム起動時の画像と、そうでないときの画像をPrtScnで保存し、拡大して見比べましたが 両方一致しました。 けどなぜかゲームを起動しているときだけ画像認識が動いてくれません。 メインpcはちゃんと動きます 仮想のwin7も動きます xpのだけ動かなくなりました。
本気で解決したいならこれ以上書く事無いと思えるまで情報を書け 情報不足 Aの可能性もあるがBの可能性もある。けれどCという場合もあるしDを試すのも良いかもしれん …という回答でいいなら別だが
win7で記録しようとしても「保存すべき有効なデータがありません」と出て 保存できない症状なんですが、FAQにある他の常駐アプリを消しても UACのレベルをあわせ?ても(管理者で実行等)、症状が改善されません。 他に何か考えられることはありますか? ちなみについ先日購入したばかりの新しいPCです。 今まで他のPCでは使えていたのですが、新しいPCに乗り換えてから 記録できない症状が出ました。何かしらのセキュリティに引っかかってるの でしょうか?セキュリティソフトはESET使ってます。
セキュリティソフト全部切ってnotepad等の記録を試しても出来ないのならもう誰も判らん
確か記録に必要なのは RecUws.dll だけど同梱されているから とりあえずUWSCの破損を疑った方が良いので再DLしてみたらどうかな 後、環境との相性の可能性も無くはないので過去バージョンも含めて色々試してみると良いかも
>>949 「設定」−「記録後クリップボードへコピーする」にチェックを入れて
メモ帳にコピペでもだめ?
>>947 ゲームがdirect xで画面かいているか、そうでないか程度は最低限書いた方が良いな。
俺は、それ聞いても分からんけど
>>952 =
>>955 皆さんレスありがとうございます。
クリップボードへコピーでもコピーできてませんでしたので
先程バージョンを下げて試したところ無事記録できるようになりました。
相性の問題なのかわかりませんがひとまずこれで
やっていこうと思います。
ありがとうございましたm(_ _)m
Windows8.1 + IE11 でリンクをドロップしようとしてるんだけど 通常起動したIE11ではドロップを受け付けるのに UWSCで起動したIE11ではドロップを受け付けてくれない。 同じファイルで同時に起動しててもそれぞれ違う動作をする。 タイトルバーにすらドロップできないから移動できない。 動作環境変えて動いたとしてもめんどくさいな。 試しに CreateOLEObj("InternetExplorer.Application") を exec( IEPath + HTMLPath ) GetActiveOLEObj( "InternetExplorer.Application", Title ) に変えてやってみたけどダメだった。 バッチファイルから IE と UWSCを呼び出したら成功。 だけど、start で呼び出さないとコマンドプロンプトが残る。 start使ったからか、カレントディレクトリが変わってしまうので . が使えない。 TIMEOUT はHTMLのタイトルが設定されるまで待つため。 -- test2014_010.bat -- set CURDIR=%CD% "C:\Program Files\Internet Explorer\iexplore.exe" "%CURDIR%\test2014_009.htm" TIMEOUT /T 3 /NOBREAK start "UWSC" /b "C:\Program Files 3\uwsc\UWSC.exe" "%CURDIR%\test2014_010.uws" 同じタイトルのIEが起動してると失敗するから、 IE起動前に同じタイトルのウィンドウを閉じるかリスト化して渡すといいかもしれんがめんどくさいな。 でも確実に動いてほしいから閉じることにするか。
DOSCMDとかDROPFILEは使わんの?
>>958 DOSCMD は戻り値がコマンドが出力した文字列だから意味がない。
やってみたけどやっぱりドロップを受け付けなかった。
DROPFILE はドロップ操作を自動化するものだけど、ドロップされたファイルを処理するものではないし。
そもそもIE起動時に HTML を渡すのはタイトルを指定することで他のウィンドウと区別するためだし。
今やってみたら IE を閉じないと進まなくなったんで START で起動するように変更した。
GetActiveOLEObj の前に GetID() で 見つかるまで待つ(-1)を指定したら、TIMEOUT はなくしても大丈夫だった。
GetID( Title, "IEFrame", -1 )
IE = GetActiveOLEObj( "InternetExplorer.Application", Title )
affinity を指定したとき、UWSC の affinityMask が起動後のアプリに引き継がれたことを考えると、
UWSC本体がドラッグ&ドロップを受け付け・・・・るよな。
なんでこんなことになるのか分からんけどできる方法が見つかったからまあとりあえずおk。
ダメだ。 バッチで起動して GetActiveOLEObj だと、ページが遷移したときに OnQuit が飛んできて BeforeNavigate2 の URL も ”about:blank” になってしまう。 キャンセルフラグをセットしてもキャンセル出来ない。 IEの画面では普通にドラッグされたページが開いているのに。 しかも、そのあと IE を終了すると OnQuit を受信してるし。 ログ start get OnQuit getNavigateURL : about:blank getNavigateURL : no match : about:blank OnQuit あ、IEの保護モードのチェックを外したら普通に動いた。 ややこしい。
ファイルのドロップだと、ondropでフルパスは得られないからBeforeNavigate2イベントなんだろうけど ウェブページのリンクをドロップなら、JavaScript側からURLを読み取れるでしょ
FGETでメモ帳から数値を読み取り1行目の3列目と6列目の数値を計算させようとしました。 数値A = FGET(ID, 1, 3) 数値B = FGET(ID, 1, 6) 計算結果 = 数値A + 数値B を計算したいのですがエラーが出て上手く計算できません。 エラーは"型があっていないorオーバーフローです"と表示されます。 数値A数値Bはともに小数点以下3桁まであります。 良くわからずググった結果、型が合っていないとエラーが出るのは文字列型になっているのかな?と考え AAA = VARTYPE(数値A, VAR_DOUBLE) と試してみましたが違うエラーが出ました。 "OleStr型からDouble型へのバリアント型変換はできません" ・FGETで参照した値は全て文字列扱いなのでしょうか? ・小数点以下3桁までの計算を行う方法があるでしょうか? 知識不足なので、質問内容自体、変な事を言っていたらすみません。
962です。 自己解決しました。解決方法がuwscのヘルプに乗っていたのを見落としていました。 スレ汚しすみませんでした。
質問掲示板で嫌われるタイプ。 ・教えてもらった知識は俺のもの。俺が自力で気付いた知識は俺だけのもの。 ・質問の仕方の不備を指摘されると逆ギレ。 ・自己解決しました、のことを、自決しました、と書いて命を無駄にする奴。 故意ではないだろうが1番目のやつに該当。
>>961 目的がファイルのダウンロードなんだけど、普通は「名前を付けて保存」ダイアログを操作する必要があるから
JavaScript で自動ではできない。
FileAPIはよく分からん。
>>962 です。
>>963 で自己解決したと書きましたが、その内容です。
数値A = FGET(ID, 1, 3)
数値B = FGET(ID, 1, 6)
計算結果 = 数値A + 数値B
では、"型があっていないorオーバーフローです"とエラーが出ましたが
計算結果 = VAL(数値A) + VAL(数値B)
とする事で問題なく計算が行えました。
小数点云々の私の質問は自分の勘違いだったようで、整数でも少数でも計算可能でした。
・FGETで参照した値は全て文字列扱いなのでしょうか?(
>>963 )
の質問は、これはuwscのヘルプの#n21に該当していました。以下引用です
>数値を COPY、POS、CHGMOJ、GETSTR関数等で取得して 数値演算したいのだが文字演算になる #n21
>>文字操作関連の関数は戻り値として文字列を返す為です。
>>VAL関数を使い数値にする必要があります
helpにも載っていた事でしたので、あえて詳しい内容までは書きませんでしたが
>>964 は恐らく自分に対しての指摘だと思いましたので、内容を書かせていただきました。
質問時のマナーを知らず、不快にさせてしまっていたら本当にすみませんでした。
以後気を付けたいと思います。
exeを起動したいのにexec関数で起動しません。どういうこと? EXEC("C:\Program Files (x86)\hoge\xxx.exe") 仕方なくデスクトップのショートカットをクリックという方法で代用してます。 CLKITEM(GETID("Program Manager", "Progman", 1), "abc", CLK_LSTVEW or CLK_DBLCLK) 環境はwin7(64)です。
× EXEC("C:\Program Files (x86)\hoge\xxx.exe") ↓ ○ EXEC("<#DBL>C:\Program Files (x86)\hoge\xxx.exe<#DBL>")
IE11に自動アップデートされてしまった busywaitを公式FAQのに変更しただけじゃ昔通り動かなくなった ctrlwinで最大化する処理省いたら直ったけどなんだったんだか
現在のマウスカーソルの位置情報を取得した後に指定箇所をクリック その後もとの位置にマウスカーソルを戻すにはどうすればいいでしょうか
>>972 現在のマウスカーソルの位置情報を取得
↑の座標にmmvすればいいだけでは
>>969 同じwin7(64)だけど、問題なく起動できる(IE、Chrome)
何のプログラムか分からないけど管理者権限で実行とかじゃないの?
fizz buzzができない 教えて for i = 1 to 100 print i next
ここまで出来たけど、fizz buzzがうまくいかない for i = 1 to 100 if int(i/3)=(i/3) then print "fizz" elseif int(i/5)=(i/5) then print "buzz" elseif int(i/3*5)=(i/3*5) then print "fizz buzz" else print i endif next
fizz buzz問題って教えてもらうものか? 特に縛りがなくてシンプルなコードにするなら MOD 使うといいよ
>>977 modなんて関数ない
教えてくださいじゃないと寝れないです
関数じゃなくて演算子
ひどいコードだな そもそも最初のif文に包含されてるから動くわけないんだが インデントくらいつけろよと
modなんてエクセルにもあったろエクセルのヘルプみろって…
変数を理解して無いクズと見た
>>976 がんばれw
プログラムの基本ならCかJavaの入門書で勉強するのがお薦めだよ
アルゴリズムの基礎も探索やソートを分かりやすく解説した書籍があるし
WEBで評判の良い物を何冊か探して、実際に大きな書店に行って
自分に合いそうなもので学習しなよ
特にアルゴリズムの基礎は今後UWSC(その他プログラム言語)を使う上で
学習しておいて損はない
あとhelpを読むのは基本だよ
>>976 スレが1000に近いのでとりあえず作ってみた
for i = 1 to 100
ans = ""
if !(i MOD 3) then ans = "Fizz"
if !(i MOD 5) then ans = ans + "Buzz"
if ans = "" then ans = i
print ans
next
インデントが消えてしまったorz 全角スペースじゃないとダメなの忘れてました、ごめんね
もともとプログラマの個性や言語仕様に対する理解や閃き的な部分を評価するための問題だからね ぶっちゃけ答えそのものは説いた人の数だけあると言っていい なので「教える」もんじゃないのよ
S="FizzBuzz";FOR i=1 TO 100;PRINT i+":"+COPY(S,(i MOD 3)*9,4)+COPY(S,5+(i MOD 5)*5,4);NEXT 90文字
989 :
957 :2014/01/09(木) 10:17:56.83 ID:Jp4PcdDZ0
どうもうまくいかんからいろいろいじってたけど Javascriptにバグがあるとまったく反応しなくなるんだな。 if 文の判定のかっこを忘れても警告とかないし オブジェクトを間違って使っても警告なし。 UWSC からも Javascript からもソースをいじろうとして反応しなくなったからなんだろうと思ったら そういうことらしい。
UWSCから外部モジュールを使うんじゃなくて 外部モジュールからUWSCを使えさえすれば 全て問題ないのにね
dim a[]=0,"Fizz","Buzz","FizzBuzz";for i=1 to 100;a[0]=i;print a[(i mod 5=0)*2+(i mod 3=0)];next
>>989 エラー表示するかどうかはブラウザの設定次第だよ
次スレ立てますよ
1
1
うめうめ
梅
5年ぶりの1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。