自動化ツールUWSC使いよ集まれ16at SOFTWARE
自動化ツールUWSC使いよ集まれ16 - 暇つぶし2ch371:名無しさん@お腹いっぱい。
16/01/23 22:11:15.75 CuLS3gLO0.net
絶対ソースが他にもあってその部分が原因で認識してない
>>335に書いてあるのが全てなら前後にスリープ入れる意味がないからな

372:330
16/01/23 23:42:32.53 bDtzBo3X0.net
URLリンク(l2.upup.be)
>>344
ペイントで白地に黒点の画像を作って(000.bmp)
ディスクトップの背景を黒
検索範囲を添付画像のマウス辺りに

if chkimg("000.bmp",1,447,238,635,318)
fukidasi("ありましたよ", 300, 400)
else
fukidasi("見当たりません", 300, 400)
endif
sleep(3)//吹き出しの表示時間ですがendifの上がいいのかな?

これでダメでした。

373:名無しさん@お腹いっぱい。
16/01/24 00:05:02.42 3CV3bKZH0.net
>>349
SAVEIMGで認識したい画像を作ってもダメなら、
何か運命的な力によってできないようにされているから諦めろ

374:名無しさん@お腹いっぱい。
16/01/24 00:56:56.54 HahwDAq70.net
デスクトップが黒でも画像に白地があったらそりゃ透過指定でもしないと無理じゃね?

375:名無しさん@お腹いっぱい。
16/01/24 01:28:36.53 kMEV0vdK0.net
>>349
その000.bmpをうpろだにうpしてここにアドレス貼って

376:名無しさん@お腹いっぱい。
16/01/24 01:31:26.12 xy8ZxP2N0.net
初心者のマヌケな勘違いに付き合ってやるお前らは優しいな

377:名無しさん@お腹いっぱい。
16/01/24 01:41:14.00 HahwDAq70.net
>>349の画像にある000.bmpのサムネイルがもうお察し

378:名無しさん@お腹いっぱい。
16/01/24 02:19:52.57 WW6t0Mr80.net
>>333
Windows7Professional上で
使おうとしたのはAutoCAD2015でした

379:名無しさん@お腹いっぱい。
16/01/24 02:40:54.86 Igcg1fXC0.net
透過してもダメならおかしいな
なぜわざわざ白地を付けて透過してるのか分からんが

380:名無しさん@お腹いっぱい。
16/01/24 07:36:01.33 mAXZzVR/0.net
白地をつけずに作れ
デスクトップの黒はRGB値が000かどうか確認したか?黒く見えるだけじゃないのか

381:名無しさん@お腹いっぱい。
16/01/24 07:37:54.90 mAXZzVR/0.net
画像ファイルの保存場所は正しいか?

382:名無しさん@お腹いっぱい。
16/01/24 07:49:46.99 gigVQQsJ0.net
仮想環境上だよな?

383:330
16/01/24 08:10:09.47 O/0pTIZz0.net
初心者は認めます^^;
皆さん申し訳ないです、有難うございます。
ググって色々試して、1度も成功してないので書き込みさせて頂きました。

000.bmp
URLリンク(l2.upup.be)

下記の画像の様に、ペントで黒塗りの四角画像でも試しています
画像を見て解ると思いますが、ディスクトップは#000000です
URLリンク(l2.upup.be)
画像認識する範囲が0,0からでは上手く出来ないと場合があるとの事から
範囲指定無し、有りでも毎回試しています
>>358
全てのファイルはディスクトップで試しています。
違うとエラーが出ます。

384:名無しさん@お腹いっぱい。
16/01/24 09:12:55.94 vffMZR4M0.net
たまにいるけどデスクトップをディスクトップって言う奴なんなの

385:名無しさん@お腹いっぱい。
16/01/24 09:21:04.87 gigVQQsJ0.net
言葉の意味がわかってない奴さ。
意味も分からず文字だけ記憶してるからこういうことになる

386:名無しさん@お腹いっぱい。
16/01/24


387:10:21:15.66 ID:ZlkU8bwS0.net



388:名無しさん@お腹いっぱい。
16/01/24 10:43:00.31 fOnBrER40.net
2つ以上のゲームをuwscで操作させるときはどうしてますか?

389:名無しさん@お腹いっぱい。
16/01/24 11:16:29.03 mAXZzVR/0.net
if文の「then」が抜け出るからじゃね?
uwscの昔のバージョンは?昔はifbとか必要だったし

390:名無しさん@お腹いっぱい。
16/01/24 11:17:24.22 mAXZzVR/0.net
>>360
if文の「then」が抜けてるからじゃね?
uwscの昔のバージョンは?昔はifbとか必要だったし

391:330
16/01/24 14:08:58.80 O/0pTIZz0.net
UWSC Pro Ver5.2.1
を使っていましたが、試しに
UWSC Pro Ver4.9c
にしてみたら認識しました!
感激です!!
皆様の助言のおかげでなんとかなりそうです!
助言を下さった方、ありがとうございました。
m(_ _)m
>>362
>意味も分からず文字だけ記憶してるからこういうことになる
とても勉強になりました、今後気を付けたいと思いました。
ありがとうございます。
>>363
>1つ1つの問題の切り分けを正確にやれ
これも色んな所で応用できそうです。
勉強になりました。
ありがとうございました。

392:名無しさん@お腹いっぱい。
16/01/24 17:49:17.71 8jDz2v8Q0.net
30分30秒毎に実行したい処理があり、並列処理にて組みました。
わざわざ2つもスクリプトも用意せずとも、いけそうな気もするのですがこれが限界です。
もっとシンプルにならないでしょうか。お知恵を拝借させてください。

-Main.uws-
While True
sleep(1830)
CALL A.uws
WEND

-A.uws-
Thread FunctionA()
Procedure FunctionA()
やりたい処理(10分くらいかかる)
FEND

393:名無しさん@お腹いっぱい。
16/01/24 18:17:45.90 3CV3bKZH0.net
>>368
CALLを関数代わりにするのは、スタックオーバーフローの原因になるので止める
CALL A.uws
While True
sleep(1830)
Thread FunctionA()
WEND
2ファイル使いたくないなら、CALLを使わずにMain.uws内にProcedure FunctionA()

394:363
16/01/24 18:57:49.92 8jDz2v8Q0.net
ありがとうございました。
Thread FunctionA()でProcedure FunctionA()を呼び出すようにしたら、1ファイルでもうまく走りました。
そんな使い方ができるとは、勉強になりました。

395:名無しさん@お腹いっぱい。
16/01/25 05:10:15.14 pb4QYEcB0.net
SETHOTKEYで、現在実行中の関数を抜けるようにしたいのですが、可能でしょうか
SETHOTKEYは引数で関数を指定しますよね
そこでEXITをしてもその関数を抜けるだけで意味がないし、EXITEXITだと全体が終了してしまうしで・・・
その時やっている関数だけ終わらせて次の関数へ移る、ってのは無理なんでしょうか

396:名無しさん@お腹いっぱい。
16/01/25 06:22:07.25 6V8NCtbv0.net
mode=数字 とかで対処したらどうなの?

397:名無しさん@お腹いっぱい。
16/01/25 10:52:45.34 fsXZoFnX0.net
SetHotKeyで数値を変えてその数値を見てExitさせるかGetKeyStateでExitをぶち込むか?

398:名無しさん@お腹いっぱい。
16/01/25 11:50:28.06 6G99dwJv0.net
public dim exit_flag = false
function aaa()
exit_flag = false
while true
if exit_flag=true then exit
処理
wend
fend
procedure hotkey()
exit_flag = true
fend

399:名無しさん@お腹いっぱい。
16/01/25 12:31:13.16 pb4QYEcB0.net
>>372-374
ありがとうございます
やっぱりそういう感じしか無理ですかね・・・
SETHOTKEYでフラグの値変えて判定するん�


400:セったら >>373さんの言うようにGETKEYSTATEでEXITしちゃえばいいだけなんですよね・・



401:名無しさん@お腹いっぱい。
16/01/25 18:14:55.64 B+E8sfr+0.net
YOU ! EXIT しちゃいなよ!

402:名無しさん@お腹いっぱい。
16/01/26 01:24:28.70 jn4ZRk/I0.net
前にwhileを一杯並べてbreak2みたいな構図にするなっていうタブー的なこと話してたけど
関数から関数よんで関数関数からなかなか抜け出せなくなるのもやっぱりタブーだったりするの?

403:名無しさん@お腹いっぱい。
16/01/26 02:14:56.87 deFC+MwW0.net
それはスタックオーバーフローを起こしやすい件とは全然関係ないから
自分で管理できているならそれでいいんだよ
グループで構築していてメンテナンスを他人がする場合は
グループ内のコーディングルールが必要なだけさ

404:名無しさん@お腹いっぱい。
16/01/26 06:08:30.62 ApvsqQfK0.net
>>375
GETKEYSTATEは呼ばれたタイミングでしか評価しないから、取りこぼしが発生する。
SETHOTKEYは取りこぼさないけど、フラグ見るまでディレイが生じる。
全く同じではないよ。用途次第でどっちが適しているか考えないと。

405:名無しさん@お腹いっぱい。
16/01/26 06:31:22.72 ApvsqQfK0.net
>>379
すまん。
実験してみたら、コール時点で評価ってわけじゃないんだな。
sleep(19

406:名無しさん@お腹いっぱい。
16/01/26 06:34:49.06 ApvsqQfK0.net
送信ミス。
sleep(10)
if GETKEYSTATE(VK_A) then
PRINT "A"
endif
でスリープ中に押したAが認識されてた。

407:名無しさん@お腹いっぱい。
16/01/26 07:15:35.06 jehVgdMQ0.net
なにこの一人相撲

408:名無しさん@お腹いっぱい。
16/01/26 10:40:36.70 deFC+MwW0.net
FAQなのよー
プログラム開始時点で全てのKEYSTATEはクリアされていて
GETKEYSTATEが呼ばれたら、呼ばれるまでに押下されていたらTRUEを返すって関数
つまりループ前に終了用のキーが押下されていればループしないケースとかあるので
空呼び出ししてクリアする必要があったりする

409:名無しさん@お腹いっぱい。
16/01/27 07:36:27.55 12Zxt+CV0.net
サブ機のWindows10環境で動作確認して上手く行ったからメインも10にしたんだが
Windows10環境だとモニタがオフになったらCHKIMGで画像認識出来なくなる・・・
動作確認が甘かったぜ・・・何か対処方法ありませんか?

410:名無しさん@お腹いっぱい。
16/01/27 09:50:24.39 Gihgo/qC0.net
スリープしない設定にしてモニタの電源を切る

411:名無しさん@お腹いっぱい。
16/01/27 10:00:04.50 12Zxt+CV0.net
いや当然Windows7時代から、そうしてるんだが・・・

412:名無しさん@お腹いっぱい。
16/01/27 10:12:50.14 jZMYF+Ys0.net
10はモニターの電源切ると画面の描画もしなくなるってことか
すごいな

413:名無しさん@お腹いっぱい。
16/01/27 11:00:11.15 12Zxt+CV0.net
>>387
そうみたいだね
モニタにハードスイッチ付いてれば良いんだが・・・
OSの制御でモニタの電源切るしか無いのがイタイ
Windows7の時はこれでも描画してたんだがグラフィック関係ごと電源落としてるのかね

414:名無しさん@お腹いっぱい。
16/01/27 11:19:55.96 4oyilgdN0.net
ハードスイッチがついたモニタを買う
モニタのコンセントを抜く
ハードスイッチがついてないモニタってなんだ?一体型?

415:名無しさん@お腹いっぱい。
16/01/27 11:47:36.48 12Zxt+CV0.net
隣のPCのモニタの開いてる端子に繋いでマルチモニタとして認識させたら行けたわ・・・
(隣のPCモニタの表示は切り替えず元のまま)
無理矢理感MAXだけど仕方ないね
こんなところで仕様変更有るとは想像もしてなくて参った

416:名無しさん@お腹いっぱい。
16/01/27 12:08:40.68 x0sPMmFo0.net
一部のゲームとかソフトとかでGetkeyとか使えなくなってたりしてるの確認してる
ウィンドウ指定するとき右クリック入れてからやるようにしてるからその辺使えないと困る
うぃん10使ってたの1時間未満ですぐに戻した
戻してもいいなら戻したほうがいいのではとも思う



417:だよくある質問でchromeがmouseorgでバックグラウンド画像認識しようとしたらできないって人がいるけど win10だと出来るっていうことは確認した >>188の件



418:名無しさん@お腹いっぱい。
16/01/27 18:55:11.83 baMEr/z1e
//test.uws
DIM A=999999999999999
PRINT A   //999999999999999
PRINT A+1 //1E15

上記のテストで変数が15桁まで対応してるのがわかる

419:名無しさん@お腹いっぱい。
16/01/28 20:52:58.52 ARfwwneo0.net
皆さんこんばんは
スケジュール機能で40以上登録したいのですが、増やすにはどうしたら良いでしょうか?

420:名無しさん@お腹いっぱい。
16/01/28 21:16:25.64 vsEjcj1E0.net
UWSC.INIの
[SCHEDULE]
MaxNumber=**←ここいじれ

421:名無しさん@お腹いっぱい。
16/01/28 21:28:21.68 ARfwwneo0.net
>>394
できたーーーーーーー!!!!
ありがとう!マジ感謝!ちゅちゅちゅちゅちゅ

422:名無しさん@お腹いっぱい。
16/01/29 10:51:30.38 jpG6pbsk0.net
YOU ! EXITしちゃいなよ!

423:名無しさん@お腹いっぱい。
16/01/30 03:55:44.75 M5n6V6080.net
>>390
たとえば俺の Lenovo のノーパソだと
Fn+F2 キーでモニタOFFにできるんだけど
これならBIOSレベルでやってるだろうから大丈夫だったりするんじゃないかな。

424:名無しさん@お腹いっぱい。
16/01/30 04:03:53.47 Kxa/SQA40.net
今日始めたばかりなのでわからない事だらけですがよろしくお願いします
下記の作業をさせたい場合どうすればいいですか?
・画像1がある時に画像1をクリック
・画像2がある時に画像2をクリック
・画像3がある時に画像3をクリック
同じ画像が同時に出てくる事はありません
画像が出てくるのに少し時間がかかるので見つかるまで再検索
下記の文で実行したところ最初の時点で画像は出ていてもクリックをしてくれません
エラーも吐かずずっと再生状態のまま何もしてくれませんでした
一応自分なりに調べてみたのですが解決しなかったので知恵をお貸しください
repeat
sleep(0.2)
until chkimg(

425:名無しさん@お腹いっぱい。
16/01/30 04:05:13.35 Kxa/SQA40.net
すいません、尻切れになってしまいした
試してみた文はこれです
repeat
sleep(0.2)
until chkimg("1.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
repeat
sleep(0.2)
until chkimg("2.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
repeat
sleep(0.2)
until chkimg("3.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

426:名無しさん@お腹いっぱい。
16/01/30 04:16:36.53 Q6ySmrDa0.net
そりゃ画像見つかるまでループで順番に1、2、3ってやったら
画像2か3が出た場合、画像1のチェックを延々やるだけになるに決まってるだろ
ループ1回の間に3つチェックにしないと
IFBで3段階入れ子にするとかしないと

427:名無しさん@お腹いっぱい。
16/01/30 04:19:51.66 Kxa/SQA40.net
言葉が足りませんでした
repeat
sleep(0.2)
until chkimg("1.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
これだけでも無理で何もクリックしてくれず
IFB chkimg(".bmp")=true then
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
endif
これでも無理でした

428:名無しさん@お腹いっぱい。
16/01/30 04:21:57.44 Kxa/SQA40.net
IFB chkimg("1.bmp")=true then
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
endif
でした、連投すいません
画像のファイル名は各種番号のみで24ビットbmp形式
uwscの実行ファイルと同じところに置いています

429:名無しさん@お腹いっぱい。
16/01/30 04:41:16.12 RmoOYQCx0.net
IFB chkimg("1.bmp")がFALSEなら、画像が間違ってるとしか言いようがない

430:名無しさん@お腹いっぱい。
16/01/30 05:15:28.84 Q6ySmrDa0.net
うん、>>398で言ってるやりたいこと以前に画像が検出できてないだけじゃん

431:名無しさん@お腹いっぱい。
16/01/30 06:28:10.77 Fh+9y7iS0.net
>>398は見当違いな事言ってるように見えるが
画像2や画像3以前に画像1の時点でダメなんだろ
画像1のみでやってもミスってんだから

432:名無しさん@お腹いっぱい。
16/01/30 09:07:24.64 2SEEQedG0.net
どこまで行ったのかを確認できるようにログを残すようにしてるんだけど普通何の関数使うんだろ
今はSendStrでやってるんだけど

433:名無しさん@お腹いっぱい。
16/01/30 09:31:52.50 Q6ySmrDa0.net

PRINT使えば普通にログ残るだろ?
わざわざ別の方法でログ取ってるのか?

434:名無しさん@お腹いっぱい。
16/01/30 10:03:26.42 BggHBUaW0.net
uwsc 


435:うそつかない 1.bmp一致しない 画像変えるよろし



436:名無しさん@お腹いっぱい。
16/01/30 10:09:18.79 2SEEQedG0.net
なんだよそれちょっと調べてくるわ

437:名無しさん@お腹いっぱい。
16/01/30 14:56:11.94 RmoOYQCx0.net
最近のchromeの更新でflashの表示のされ方がかわったっぽい気がする
以前に作った画像が認識されず、システムの復元で戻したら認識された

438:名無しさん@お腹いっぱい。
16/01/30 14:58:21.22 t4gyFyGY0.net
ChromeはFlash内蔵しちゃったからな

439:名無しさん@お腹いっぱい。
16/01/30 17:12:41.00 TzbPvxq50.net
昔からIEが上手く操作できなくて悩んでたんだけど
print IE.document.getElementsByTagName("tr")[2].getElementsByTagName("td")[5].getElementsByTagName("div")[1].style.width);

print IE.document.getElementsByTagName("tr").item(2).getElementsByTagName("td").item(5).getElementsByTagName("div").item(1).style.width
って書かないとだめな事をついさっき知った
多分これで今まで挫折したほとんどの操作ができる気がする
これについて勉強したいんだけどどこかに記載ってある?

440:名無しさん@お腹いっぱい。
16/01/30 17:22:29.38 xqf/0swG0.net
最近getElementsByTagNameなんか使ったこと無いわ…
querySelectorばっかり

441:名無しさん@お腹いっぱい。
16/01/30 19:15:44.12 M5n6V6080.net
>>412
XPath で記述して展開させたらシンプル

442:名無しさん@お腹いっぱい。
16/01/30 20:53:56.31 CxNcpNVU0.net
最近はじめたのですがUWSCスクリプト編集に最適なおすすめエディタはなんですか?
とりあえずnotepad++を使ってますが「\」が使えのがイマイチだと思ってます

443:名無しさん@お腹いっぱい。
16/01/30 21:20:46.06 Pytl/RXf0.net
atom

444:名無しさん@お腹いっぱい。
16/01/31 00:29:08.15 osD6olzu0.net
サクラエディタのUWSCキーワードモード

445:名無しさん@お腹いっぱい。
16/01/31 00:30:58.41 TDN+J1+m0.net
標準で関数名に色が付くMeryでいいんじゃね?
つづりで間違って悩んだりもしないだろうし

446:名無しさん@お腹いっぱい。
16/01/31 00:51:01.33 pVIrtpdo0.net
>>416-418
ありがとうございます いろいろ試してみます

447:名無しさん@お腹いっぱい。
16/01/31 06:56:23.26 MAkpvZ6c0.net
>>403-405,402
ありがとうごさいました
画像を差し替えたところ成功しました

448:名無しさん@お腹いっぱい。
16/01/31 08:29:30.29 kKfsHKLi0.net
質問なのですが、UWSCでサーチエンジンと言うソフトを操作しようと思っても
全く動作してくれません。これは自動化するにあたって、UWSCでは操作ができないアプリもあるということなのでしょうか??
ご教授いただけると幸いです。

449:名無しさん@お腹いっぱい。
16/01/31 08:38:31.98 sUTMeQpI0.net
できないアプリもある

450:名無しさん@お腹いっぱい。
16/01/31 09:35:09.11 /i6usHVb0.net
>>422
やはりですか、、、それがわかっただけでも得るものは大きいです

451:名無しさん@お腹いっぱい。
16/01/31 15:04:22.93 W6132sy20.net
戻り値が配列になるものを使う場合ってあらかじめ宣言するときは
配列だって明示的に(?)定義しないのね
エラー
dim a[2]
dim b[3][2]
dim i
a = split("a b c")
for i = 0 to 3
b[i] = split("a b c")
next
dim a
dim b[3]
で動く
functionの配列戻しが上手くいかないでしばらく頭抱えてた

452:名無しさん@お腹いっぱい。
16/01/31 15:20:17.78 cL2tI1rC0.net
Split()の返値はSafeArrayだから定義するならSafeArray()じゃない?

453:名無しさん@お腹いっぱい。
16/01/31 19:30:07.95 SGnnlRSc0.net
>>424
a = split("a b c")
for i = 0 to resize(a)
print a[i]
next
これだけでもうごくみたいだけど・・・どうなの?

454:名無しさん@お腹いっぱい。
16/01/31 20:05:32.38 W6132sy20.net
普段はEXPLICITしてるから
dim a[] = split("a b c")
とかって書いて悩んでた
SafeArrayを定義するときは配列じゃないなんてきいてないよままん
まあ正確には二次元だったのもあって
dim a[3][5]
for i = 0 to n
 a[i][] = 関数(i) //←ここ


455: next の書き方がわかんなかった dim a[3] にすれば通るのねってことで土日が終わった



456:名無しさん@お腹いっぱい。
16/01/31 20:16:13.80 rJZHZ5Hk0.net
そうですか

457:名無しさん@お腹いっぱい。
16/01/31 20:28:40.93 cL2tI1rC0.net
>>427
>戻値 = SPLIT( 文字列, [区切文字列, 空文字処理フラグ, 数値処理フラグ] )
>戻値
> 作成された一次元配列(SAFEARRAY型)
返値がSafeArrayなのにDIM定義の配列で受けるのがおかしいだろって
遠回しに言ったつもりだったんだけど・・・

458:名無しさん@お腹いっぱい。
16/01/31 20:48:30.79 W6132sy20.net
SAFEARRAYとはなんぞやDIMとの違いはって
HELPみてもさっぱり載ってないもんでよくわかんなかったのです
戻値 = SAFEARRAY( [下限, 上限])
↑の定義はどこでするのん?みたいな

459:名無しさん@お腹いっぱい。
16/01/31 21:06:58.46 RkOVI4vxn
気になって見ていたら本当に載ってなくてワロタ

460:名無しさん@お腹いっぱい。
16/01/31 21:04:45.22 mevx1vWE0.net
SAFEARRAYはメモリ内での並び順が保証されている配列で宣言したければ普通の変数としてDIMしたら良いだけの話

461:名無しさん@お腹いっぱい。
16/01/31 22:04:46.46 ymVVdFl90.net
リファレンス見たり、マクロ記録してコピペして作るクソ汚いコードなら簡単なやりたい事作れるようになってきたんだけど、スッキリした綺麗なコーティングとかは何を勉強すれば出来るようになるの?

462:名無しさん@お腹いっぱい。
16/01/31 22:28:54.39 h2MIJWcH0.net
他人の綺麗なコードを見て弄って真似をする

463:名無しさん@お腹いっぱい。
16/02/01 00:06:56.18 ODrpB13q0.net
あとこれ
X = CALCARRAY( split("1 2 3"),CALC_ADD)
が駄目で
a = split("1 2 3")
X = CALCARRAY(a,CALC_ADD)
でないと動かないのもよく分からないです
配列なのかなんなのか
ヘルプ読んでも
<変数>
 変数に型はありません(SAFEARRAY型がないとは言ってない)
って感じでわけわかめ

464:名無しさん@お腹いっぱい。
16/02/01 00:37:00.65 +rnmEAjm0.net
変数の名前で後になって困ることが多い
・適当に名づけて似たような変数名があふれてごっちゃに
・名前を決めかねて、後から読むと意味の読み取れない変数名に
・コードをなおしていくうち、当初の意図とは違うコードになり意味が合わなくなる
・コピペしてきたコードなので意味が合わなくなる
こういうのを最初から見越してきちんと決めていくと良いコードになるのかなあ
でも、変数使うときって、思考の中心は「こういうコードを作ろう」だから、
変数名に気を取られると「こういうコードを作ろう」の中身を忘れちゃったりするんだよな

465:名無しさん@お腹いっぱい。
16/02/01 00:42:55.69 baaBe9/W0.net
せっかく日本語使えるんだから日本語でつけちゃえばいい

466:名無しさん@お腹いっぱい。
16/02/01 01:03:00.84 VsiPttLF0.net
単純にスコープの管理が甘いと思う
広いスコープの変数なら「何を保持しているのか」が中心にした方が良い
UWSCはクラスのインスタンスを作れないから
オブジェクト指向的に変数を管理し難いのが難点だよね
それでも自分はある程度の規模のスクリプトならクラスを造って変数を管理するけれどね

467:429
16/02/01 01:45:10.84 +rnmEAjm0.net
>>438
そういうものがあるのか
関数まとめて別ファイルに入れてこっちで呼び出して……みたいなことやってるからちょうど良さそう
オブジェクト指向と言う名前は聞いたことある、程度の初心者だけど、いい機会だから勉強してみるよ
ありがとう

468:名無しさん@お腹いっぱい。
16/02/01 02:55:35.27 BoGYQ2nB0.net
名前が決まらないのはその目的(責務)が明確になってないのが原因でもある

469:名無しさん@お腹いっぱい。
16/02/01 08:25:33.84 8RvGbPw20.net
未熟な自分では考えてもできなかったのでご教授ください
t=


470:GETTIME() While True ifb CHKIMG("A.bmp") sleep(1.0) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) t=GETTIME() else (中略) ifb CHKIMG("H.bmp") sleep(1.0) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) t=GETTIME() else ifb ((GETTIME()-t)>3) Then BTN(LEFT,CLICK,100,100,0.5) t=GETTIME() endif (中略) endif sleep(0.1) WEND これらを実行する時 ifb CHKIMG("A.bmp") BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) t=GETTIME() に限り「画像Xがある時のみ行う」としたいのです 全てに対してとするならできたのですが1つ目文に対してのみというのができなくて詰まってしまいました



471:名無しさん@お腹いっぱい。
16/02/01 09:04:45.92 g7iI5XSU0.net
if X and A
elseif !A
endif

472:名無しさん@お腹いっぱい。
16/02/01 09:33:11.94 pZZgy3PS0.net
ifb CHKIMG("X.bmp") AND CHKIMG("A.bmp")
こんだけのことやんけ

473:名無しさん@お腹いっぱい。
16/02/01 15:18:36.89 hzvm75kL0.net
option shortcircuit付けてな

474:名無しさん@お腹いっぱい。
16/02/01 16:00:59.79 Th0k4/oZ0.net
本体のホットキーを使わずに一時停止をやりたいんですけど
こんな感じの関数を随所随所で呼び出すしかないんでしょうか?

PROCEDURE ESC_PAUSE
 IF !GETKEYSTATE(VK_ESC) then exit
 SLEEP(0.1)
 REPEAT
  SLEEP(0.1)
 UNTIL GETKEYSTATE(VK_ESC)
 SLEEP(0.1)
FEND

475:名無しさん@お腹いっぱい。
16/02/01 16:12:58.29 hzvm75kL0.net
使わずにっていうのは、本体の一時停止をやりたくないのか
それとも本体に設定されたホットキー以外のキーで一時停止したいのか
どっち?

476:名無しさん@お腹いっぱい。
16/02/01 17:12:39.88 Th0k4/oZ0.net
本体の一時停止ホットキーは、2つ以上のキーで面倒なのと
スクリプト内でやれば、好みの条件に出来るかなと思いまして
たとえば、マウスカーソルの位置とか
PROCEDURE MOUSE_PAUSE
 IF G_MOUSE_X<1000 then exit
 Repeat
  SLEEP(0.1)
 Until G_MOUSE_X<1000
FEND

477:名無しさん@お腹いっぱい。
16/02/01 17:20:38.17 Th0k4/oZ0.net
あと、本体の一時停止ホットキーは
本体から動かしてるスクリプトには有効ですが
ランチャー等から起動した別のスクリプトには無効みたいです

478:名無しさん@お腹いっぱい。
16/02/01 17:38:04.47 PbXPJngC0.net
>>447
停止処理はSETHOTKEYで呼び出し 停止処理からの復帰は停止処理内でGETKEYSTATE
dim i
sethotkey(VK_A,,"proc_Pause")
while true
i= i+1
fukidasi(i)
sleep(0.5)
wend
procedure proc_Pause()
repeat
sleep(0.5)
until GETKEYSTATE(VK_ESC)
fend
aで処理中断 escで中断からの復帰 中断復帰後は中断時の処理から続いてる事も確認できる
sethotkeyでコードの頭に登録すればそれ以降の処理内で一々中断用のコード書かなくてもいいから保守性も高いよ

479:名無しさん@お腹いっぱい。
16/02/01 17:41:43.95 hzvm75kL0.net
UIが無い別プロセスのスクリプトにも有効なのは有効だよ。
ただ、2つ以上のスクリプトが動作してると、キーが消費されちゃうので
連打するとか押しっぱなしにするとかしないと効かない。
あーでも一時停止は連打はダメか。
停止のホットキーは押しっぱなしで全プロセス停止に効く。
本体を一時停止してもいいなら、SETHOTKEYで任意のキーを押した時に
UWSC本体に一時停止のホットキーを送るってのもありかと。
あと停止はループさせるよりMSGBOXとか出す方が便利とは思うが。

480:名無しさん@お腹いっぱい。
16/02/01 21:11:01.64 Th0k4/oZ0.net
レス、ありがとうございます
>>449
おぉー、ホットキーを設定するやり方ですか
仮想キー限定のようですが、これはいい方法ですね
>>450
MSGBOXを使うと、解除がちょっと面倒なんで・・・
あと、UWSC本体を起動せず
下記スクリプトをショートカットから実行した場合
一時停止ホットキーは機能しませんでした
for j=1 to 10000
 fukidasi(j)
 SLEEP(0.5)
next

481:名無しさん@お腹いっぱい。
16/02/02 07:05:55.13 Mf47p9PS0.net
>>451
URLリンク(uproda.2ch-library.com)
俺はこんな感じでやってる
実際に使うときはウィンドウ指定してアクティブ時にキーチェック�


482:オてる



483:名無しさん@お腹いっぱい。
16/02/04 13:22:20.05 bYNIn2Du0.net
Google Speech API と組み合わせて音声入力させるものって作れるかなあ?

484:名無しさん@お腹いっぱい。
16/02/04 14:03:46.64 fyQC3oxA0.net
すみません、UWSCってこのスレで初めて知ったんですが、業務で利用されてる方いらっしゃいますか?

485:名無しさん@お腹いっぱい。
16/02/04 15:21:36.98 ja3vwQ+v0.net
いますよー

486:名無しさん@お腹いっぱい。
16/02/04 17:34:50.27 cVw67MCx0.net
詰まったので質問させて下さい。
現在BluestacksとUWSCを使用して自動マクロを運用しています。
また、離籍時にteamviewerを使用してリモートで操作もしています。
相対座標を使用し、通常は問題なく使えるのですが
teamviewer使用時が問題で、セッション終わり毎にダイアログが発生し、そのせいでループが抜けなくなり手間が増えている状態です。
質問なのですが
id=GETID("Bluestacks App Player","WindowsForms10.Window.")
MOUSEORG(id, MORG_DIRECT)
上記のように指定しても画像検索はできますが座標がおかしくなってまともに動きません。
座標を直接指定しても、画像の場所に直接クリックにしても常に左上の端のみをクリックする状態となっています。
どのように指定をすればいいでしょうか?

487:名無しさん@お腹いっぱい。
16/02/04 18:42:53.73 Ml8C21Ff0.net
mouseorgは通用するアプリとしないものがあると何度いわれたらry

488:名無しさん@お腹いっぱい。
16/02/04 19:06:31.07 zrOVrXZR0.net
>>456
teamviewer昨日導入したわ。タイムリーな。ツムツムかな?
俺はダイアログ消す方で解消したわ。
UWSCのスケジュールの指定ウィンドウが現れた時で、ダイアログを消すスクリプト登録したらいい感じ。

489:名無しさん@お腹いっぱい。
16/02/04 19:21:35.52 cVw67MCx0.net
>>457
ありがとうございます。
自分では通用するのかどうかがわからなかったのと、画像検索はできたので方法があるのかと思い聞いてみました。
申し訳ありませんでした。
>>458
そうだったんですね。
俺は別のゲームです。
プログラミング初心者の為勉強しながらになりますが頑張って組んでみます。
ありがとうございます。

490:名無しさん@お腹いっぱい。
16/02/04 19:25:47.32 I350w/WA0.net
>>456
MORG_DIRECTをMORG_CLIENT変える

491:名無しさん@お腹いっぱい。
16/02/04 21:48:42.30 DIbZWkUk0.net
BTN(LEFT,CLICK,1200,150,150)

BTN(LEFT,CLICK,1000,150,150)
どちらかランダムで一つクリックさせたい場合ってどうやればいいですか?

492:名無しさん@お腹いっぱい。
16/02/04 21:57:51.63 EqtNr8zt0.net
ランダムで分岐させたら良い

493:名無しさん@お腹いっぱい。
16/02/04 22:23:24.65 4BmdWrRw0.net
>>461
BTN(LEFT,CLICK,1000+RANDOM(2)*200,150,150)

494:名無しさん@お腹いっぱい。
16/02/04 23:36:39.04 bosOw8Gy0.net
整数化しないとひどいことになりそう

495:名無しさん@お腹いっぱい。
16/02/04 23:42:01.07 EqtNr8zt0.net
個人的には速度や短さを競うコードコンテスト以外では
結果的にやりたいことになるコードではなく
やりたいことをそのままコードにした方が良いと考えるかな
メンテで正しく動作しなくなる種になるからね

496:名無しさん@お腹いっぱい。
16/02/05 00:29:23.88 Gg6PibGB0.net
>>460
今ってbluestacksをバックグラウンドで動かせるようになったの?

497:名無しさん@お腹いっぱい。
16/02/05 02:27:59.12 AORidpJX0.net
>>463
ありがとうございます

498:名無しさん@お腹いっぱい。
16/02/05 02:37:46.36 /HWKBYw70.net
プログラミングのプの字も知らないけどUWSCで初挑戦中
画像認識でAの画像が出るまでBの操作を繰り返す
Aが出たらその画像をクリックしてCの操作へ
これはrepeat-untilでいいですか?

499:名無しさん@お腹いっぱい。
16/02/05 04:19:16.20 i6SfBH8K0.net
いいよ(´・ω・`)
とにかく自分で書いて試してみるのが上達の近道


500:だよ あとUWSCの本があるからブックオフで見かけたら買うといいよ



501:名無しさん@お腹いっぱい。
16/02/05 06:07:19.13 /HWKBYw70.net
ありがとうございます
色々調べ回って393のような形で処理に成功しました
これを順不同にするにはどうしたらいいでしょうか
a,b,cの画像を出てきた順にクリックしたいとして
repeat
sleep(0.2)
until chkimg("a.bmp")=true or chking("b.bmp")=true or chking("c.bmp")
btn(left,click,g_img_x,g_img_y)
これを3つ羅列するとできると思うんですが
長ったらしくなるのでこれをスマートに収めるにはfor~nextで挟めば大丈夫でしょうか

502:名無しさん@お腹いっぱい。
16/02/05 09:15:41.63 YVt32lCs0.net
ツムツムはMORG_DIRECT使えますか?

503:名無しさん@お腹いっぱい。
16/02/05 09:18:42.14 AKW1xg3y0.net
>>460
ありがとうございます。
試してみましたが、バックグラウンドで動くわけではないのですね。
リモートする際はchromeのリモートデスクトップ使用でダイアログに邪魔される事もなくなりましたのでこのまま使用していきます。

504:名無しさん@お腹いっぱい。
16/02/05 12:28:03.94 /waBKm5O0.net
>>470
それ一つで動作するが
OPTION SHORTCIRCUITを設定しない標準状態だと
g_img_x,g_img_yの中にchking("c.bmp")の結果しか入らないので
これを設定する

505:名無しさん@お腹いっぱい。
16/02/05 18:09:16.28 YVt32lCs0.net
使えませんでした

506:名無しさん@お腹いっぱい。
16/02/06 13:49:52.63 E2a0obR10.net
>>470
散々既出だけど、画像があればクリックしてTRUEを返すCLKIMG関数を自作する。
while true
  clkimg(

507:名無しさん@お腹いっぱい。
16/02/06 13:57:39.57 E2a0obR10.net
なんかカキコが壊れた。
clickImage uwsc でググると過去スレに自作例が出てくるな。
while true
  ifb clickImage("1.bmp") then
    //1のクリックに成功した時の処理
  endif
  ifb clickImage("2.bmp") then
    //2のクリックに成功した時の処理
  endif
  ifb clickImage("3.bmp") then
    //3のクリックに成功した時の処理
  endif
wend
ごく基本的な構造化なのでまだ早いとかやめてね…

508:名無しさん@お腹いっぱい。
16/02/06 14:00:17.77 E2a0obR10.net
クリック後に個別の処理が不要なら clickImage("1.bmp"); clickImage("2.bmp"); clickImage("3.bmp") で済んじゃう

509:名無しさん@お腹いっぱい。
16/02/06 21:35:39.00 4Jvgc2PX0.net
かなり初歩的な質問なのですが調べてもあまり分からなかったので質問させて頂きます。
UWSCでログファイルが更新され続ける拡張子がtxtなどのファイルを監視し、目的のログが現れた場合
キーを送信 ってできますでしょうか?
やり方を教えて頂きたいです。

510:名無しさん@お腹いっぱい。
16/02/06 22:15:37.28 k3CjFpd40.net
・日本語をきちんと使えるようにする
・UWSCを勉強する
たったこれだけで実現できるようになるよ
あとは君の努力次第だから頑張ってね

511:名無しさん@お腹いっぱい。
16/02/06 22:35:58.37 0QAMOn/70.net
シェアウェア版って結構高いねそれでも業務に使える?一台に一ライセンス必要みたいだけど

512:名無しさん@お腹いっぱい。
16/02/06 22:47:44.53 sPS5RQrH0.net
>>480
何度もバカなの?

513:名無しさん@お腹いっぱい。
16/02/06 22:57:49.59 2YduAXx90.net
>>478
質問がごちゃごちゃし過ぎで、丸投げしたいようにしか見えない
どのように監視できないのか
どのようにログの検索ができないのか
どのようにキー送信ができないのか

514:名無しさん@お腹いっぱい。
16/02/07 00:40:38.55 puxzTe8g0.net
>>456
これに便乗なんだけど
MORG_DIRECTで動作するAndroidのエミュレータってありますか?

515:名無しさん@お腹いっぱい。
16/02/07 06:08:59.16 I92VPPhw0.net
uwscって自由すぎて逆に戸惑うことが多くね?
TOTAL = MYCALC(300,400)
//計算結果を出力
PRINT TOTAL
FUNCTION MYCALC(VAL1, VAL2)
ADD = VAL1 + VAL2
RESULT = ADD
FEND
-------------------------------------------------
PRINT MYCALC(300,400)
FUNCTION MYCALC(VAL1, VAL2)
ADD = VAL1 + VAL2
RESULT = ADD
FEND
PRINT文にFUNCUTION関数直接書いても出力されるんだな

516:名無しさん@お腹いっぱい。
16/02/07 06:13:42.80 mZHgAHcI0.net
関数の引数に関数を入れるのは普通
出来ない言語の方が珍しい

517:名無しさん@お腹いっぱい。
16/02/07 06:14:43.21 oQyphb55


518:0.net



519:名無しさん@お腹いっぱい。
16/02/07 07:45:41.55 JTReqb1J0.net
気づけてよかったね

520:名無しさん@お腹いっぱい。
16/02/07 07:48:35.49 TPGZWfB40.net
今までで割引キャンペーンとかってやったことある?
やってくれれば買うんだけどな

521:名無しさん@お腹いっぱい。
16/02/07 12:25:34.39 DbLS0yGv0.net
関数の引数に関数を入れる、が関数ポインタとかラムダ式、リスナクラスの話に聞こえてちょっとビックリしたw

522:名無しさん@お腹いっぱい。
16/02/07 12:30:27.93 UmG8NUOx0.net
あっしには何を言ってるのかさっぱり

523:名無しさん@お腹いっぱい。
16/02/07 15:28:50.99 cJXx45gX0.net
>>487
気付かせてくれてありがとう

524:名無しさん@お腹いっぱい。
16/02/07 19:18:51.61 I92VPPhw0.net
>>485
そうなんだ、知らなかった
教本みたいなサイトって丁寧に関数書くから
他人のコード見た時に「なんだこれ!」ってなってびっくりしたわ
ついでに聞きたいんだけどさ
---------------------------------------------------------------
クリック("ボタン")//
FUNCTION クリック(name)
IFB CHKIMG(name + ".bmp",0)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
KBD(VK_a,CLICK)
ENDIF
RESULT
FEND
-------------------------------------------------------------
こうやってCHKIMGの画像ファイル名を関数の引数?を使って好きに変えれるようにしたんだけど
同じようにKBD(VK_a,CLICK)
のVK_aの部分も変えられるように出来ないかね?

525:名無しさん@お腹いっぱい。
16/02/07 19:28:24.73 mZHgAHcI0.net
VK_Aとかは定数だから変数に入れたり計算させても大丈夫だよ
例えば VK_A + 1 と VK_B は同じだったりとかね

526:名無しさん@お腹いっぱい。
16/02/07 19:34:53.46 I92VPPhw0.net
へー、面白いな
今やってみたら出来たよ
ありがとう

527:名無しさん@お腹いっぱい。
16/02/07 19:48:58.52 C1KScm550.net
コードが難読化するからコーディング規約で禁止してるところも多いけどまぁ便利だよね

528:名無しさん@お腹いっぱい。
16/02/07 20:25:57.04 Op3LiiL10.net
そもそも関数という形はそういう書き方をするためのものだろう。
受け取るだけの変数を毎回経由するなら戻り値なんて機能は不要だし。

529:名無しさん@お腹いっぱい。
16/02/08 17:06:48.25 T9ZC/Zyz0.net
質問したい
A処理
└B処理
 └C処理
という感じの処理があって、これをFUNCTION ABC()にまとめた
ABC(Aへの引数) と書くとCまで行くようになっている
だけどA処理を飛ばしてB処理の部分を利用したいこともある
AB飛ばしてC処理をしたい時もある
そういう場合にABC(0,Bへの引数,0)やABC(0,0,Cへの引数)と書けば処理ができるように作ってみたんだけど
これ以外に簡便なやり方って無いかな?
URLリンク(i.imgur.com)
------------------------------
FUNCTION ABC(Aへの引数,Bへの引数,Cへの引数,戻り値)
RESULT = False
|IFB !Aへの引数=0
| (A) 処理
|ELSE
| |IFB !Aへの引数=0
| | (B) Aの値を継承して処理
| |ELSE
| | (B') Bへの引数を使って処理
| | |IFB !Aへの引数=0
| | | (C) Bの値を継承して処理
| | |RESULT = True
| | |ELSEIF Aへの引数=0 and !Bへの引数=0
| | | (C') B'の値を継承して処理
| | |RESULT = True
| | |ELSEIF Aへの引数=0 and Bへの引数=0
| | | (C'') Cへの引数を使って処理
| | |RESULT = True
| | |ELSE
| | |RESULT = False
| | |ENDIF
| |ENDIF
|ENDIF
FEND
------------------------------

530:名無しさん@お腹いっぱい。
16/02/08 17:56:33.03 uvOD7Pon0.net
引数以外の継承したい変数をPUBLICにするとか参照渡しにして
ABC各処理を別関数に
関数A
関数B
関数C
ABC全部処理する関数ABC
BとCだけ呼ぶ関数BC
みたいに呼べばいいんでないの

531:名無しさん@お腹いっぱい。
16/02/08 17:58:10.02 657cwzrg0.net
・継承という用語はプログラミングにおいて特別な意味を持つので別の表現を使うべし。
・サンプルプログラムの条件分岐に既に無意味な部分がありどうしたいのかが読み取れない。
 今の状態だと


532:7,11-12行目は絶対に実行されない。 ・引数第4項が戻り値であるにもかかわらずvar宣言がない、関数内でも使われていない。 実行され得ない部分を削って最適化するとこんな感じ。やっぱり意図がわからない。 FUNCTION doABC(Aへの引数, Bへの引数, Cへの引数)   RESULT = False   IFB !Aへの引数=0     doA(Aへの引数)   ELSE     doB(Bへの引数)     IFB !Bへの引数=0       doC(Bへの引数)     ELSE       doC(Cへの引数)     ENDIF     RESULT = True   ENDIF FEND



533:名無しさん@お腹いっぱい。
16/02/08 17:58:53.91 657cwzrg0.net
要件ベースでまとめると、
(1) Aへの引数のみ指定すると、doA(Aへの引数), doB(Aへの引数), doC(Aへの引数) の順で実行
(2) Bへの引数のみ指定すると、doB(Bへの引数) のみ実行
(3) Cへの引数のみ指定すると、doC(Cへの引数) のみ実行
解1
関数 doA(paramA), doB(paramB), doC(paramC) を定義し、
関数 doABC(paramABC) 内で上記関数を使用する。
(1)はdoABC(Aへの引数) , (2)はdoB(Bへの引数) , (3)はdoC(Cへの引数) を実行する。
解2
各ケースをあくまで一つの関数にまとめ、引数の指定の仕方のみで制御したい場合。
PROCEDURE doABC(Aへの引数, Bへの引数, Cへの引数)
  RESULT = False
  IFB !Aへの引数=0
    doA(Aへの引数); doB(Aへの引数); doC(Aへの引数)
  ELSE
    IFB !Bへの引数=0
      doB(Bへの引数)
    ELSEIF !Cへの引数=0
      doC(Cへの引数)
    ENDIF
  ENDIF
FEND
メリットは特に無い。

534:名無しさん@お腹いっぱい。
16/02/08 18:43:19.51 T9ZC/Zyz0.net
>>498-500
ありがとう
>>500
ごめんなさい、勘違いしてた
関数の中に関数入れて呼び出すとエラーになる気がしてたけど違ったみたい
素直に解1の方法でやります

535:名無しさん@お腹いっぱい。
16/02/08 19:45:49.25 y9zJENvU0.net
hashtbl lists
lists["あ"] = "a10 a20 a30"
lists["い"] = "b100 b200"
lists["う"] = "c1 c2 c3 c4"
//上記の場合3*2*4=24通りの全組み合わせを出力するprintCombination
//あ=a10, い=b100, う=c1
//・・・
//あ=a30, い=b200, う=c4
printCombination(lists)
procedure printCombination(lists[])
 product = 1
 for key in lists
  product = product * length(split(lists[key]))
 next
 
 for i = 0 to product - 1
  q = i
  hashtbl outHash
  
  for key in lists
   values = split(lists[key])
   r = q mod length(values)
   q = int(q / length(values))
   
   outHash[key] = key + "=" + values[r]
  next
  
  print join(outHash, ", ")
 next
fend

536:名無しさん@お腹いっぱい。
16/02/08 19:54:28.61 y9zJENvU0.net
質問です
printCombinationという関数を書いてみたんですが、
もっとスマートな方法ないでしょうか?
やりたいことはコメントに書いてあるとおりです
すべての組み合わせを出力したい(もちろん別の組み合わせでも動くような感じで)

537:名無しさん@お腹いっぱい。
16/02/08 20:28:28.46 KECwy5hV0.net
これじゃいかんのか?
DIM ary1[2] = "a10","a20","a30"
DIM ary2[1] = "b100","b200"
DIM ary3[3] = "c1","c2","c3","c4"
for a1 in ary1
for a2 in ary2
  for a3 in ary3
   print a1 + a2 + a3
  next
 next
next
どうしてもハッシュ使いたいなら上の三行で配列宣言したあとにハッシュリストからsplit使って配列にぶっこめばええんちゃうん

538:名無しさん@お腹いっぱい。
16/02/08 22:06:55.05 7q7uQHpo0.net
帰宅中に松屋で飯食いながら考えた。
hashtbl lists
lists[

539:名無しさん@お腹いっぱい。
16/02/08 22:09:05.76 7q7uQHpo0.net
帰宅中に松屋で飯食いながら考えた。
hashtbl lists
lists["あ"] = "a10 a20 a30"; lists["い"] = "b100 b200"; lists["う"] = "c1 c2 c3 c4"
const SPLT_V = " "; const SPLT_R = "<#CR>"; const SPLT_C = ", "
print structCombinationCSV(lists, 1)
function structCombinationCSV(lists[], cu


540:rLv)   key = lists[curLv-1, HASH_KEY]   curRows = split(lists[curLv-1, HASH_VAL], SPLT_V)   combinationCSV = ""   ifb curLv >= length(lists) then     for curIdx=0 to length(curRows)-1       combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_R     next   else     childRows = split(structCombinationCSV(lists, curLv+1), SPLT_R)     for curIdx=0 to length(curRows)-1       for childIdx=0 to length(childRows)-1         combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_C + childRows[childIdx] + SPLT_R       next     next   endif   result = combinationCSV fend っしゃぁ!



541:名無しさん@お腹いっぱい。
16/02/08 22:29:31.74 kO8wU/DR0.net
500 Internal Server Error

542:名無しさん@お腹いっぱい。
16/02/09 00:41:55.44 l/ELWwG70.net
複雑すぎワロタ

543:名無しさん@お腹いっぱい。
16/02/09 10:19:05.55 dxLnf7NN0.net
松屋で飯食いながら仕事ができるタイプか

544:名無しさん@お腹いっぱい。
16/02/09 12:33:29.38 qpHYw0y/0.net
すげえレベル高いな

545:名無しさん@お腹いっぱい。
16/02/09 12:40:47.60 kzjhglVU0.net
えっ!?あのお客さん…ウチで飯食いながらコーディングしてる!?

546:名無しさん@お腹いっぱい。
16/02/09 12:47:42.64 XfpXz+/C0.net
>>504
それだと関数化するとき困るんじゃね?
ary2までしかないときは動かないし
ary4まであってもちゃんと動かない

547:名無しさん@お腹いっぱい。
16/02/09 17:31:23.26 FV1/KP6n0.net
>>506 は入れ子になってるくり返しで使われる再帰処理だね。
再帰を終わらす終了条件が最初あって、次にやりたい事ってふうに見ると分かる。

548:名無しさん@お腹いっぱい。
16/02/09 18:04:46.21 +8zDwgB90.net
そっか項目数だけじゃなく要素数も変わるのか なら関数化するならこんな感じかな
//配列組み合わせ生成関数 戻り値は配列を返す
FUNCTION fnc_ArryComb(strarry[])
DIM tmpstr[0],tmp //文字列
DIM i,j,k,l,m=0,tmpcount = 1,maxcount = 1,preCount = 1 //整数
CONST cnt_SPLSTR = ","
for i = 0 to LENGTH(strarry) - 1
  maxcount =maxcount * LENGTH(SPLIT(strarry[i],cnt_SPLSTR))
next
resize(tmpstr,maxcount-1) //結果格納用の変数を引数に合わせてリサイズ
m=0;i=0 //未使用再利用変数の初期化
repeat //順列組み合わせの作成
  tmpcount = 1
  for l = m to LENGTH(strarry) - 1
    tmpcount = tmpcount * LENGTH(SPLIT(strarry[l],cnt_SPLSTR))
  next
  for l = 1 to maxcount / tmpcount
    for tmp in SPLIT(strarry[i],",")
      for j = 0 to tmpcount / LENGTH(SPLIT(strarry[i],cnt_SPLSTR)) - 1
        tmpstr[k] = tmpstr[k] + " " + tmp
        k=k+1
      next
    next
  next
  m=m+1;k=0;i=i+1 //カウンターの整理
until i >= LENGTH(strarry)
result = slice(tmpstr,0,maxcount-1)
fend
//関数ここまで

549:名無しさん@お腹いっぱい。
16/02/09 18:06:08.69 +8zDwgB90.net
関数Callのサンプルはこんなかんじ
//関数の呼び出し部
hashtbl lists
DIM strarry[0]
DIM i
//ここで入力する項目数を増やしたりlistsの要素数を増やしたり減らしたりする
lists["あ"] = "a10,a20,a30"; lists["い"] = "b100,b200"; lists["う"] = "c1,c2,c3";lists["ぼんば"] = "d1,d2,d3"
resize(strarry,length(lists)-1) //ハッシュの要素数で配列をリサイズ
for i= 0 to length(lists) - 1
  strarry[i]=lists[i,HASH_VAL]
next
fukidasi(join(fnc_ArryComb(strarry),"<#CR>"))
msgbox("終わり")
//呼び出し部ここまで

550:名無しさん@お腹いっぱい。
16/02/09 19:17:28.30 GXdSKXvs0.net
自作関数って引数を設定した場合、引数の数を合わせないと「引数の数が合いません」ってエラー出るけれど
""を使えば引数を省略できるのか
chkimgみたいなデフォルト関数は引数省略できるからどうやるのかなーってずっと悩んでたわ
UWSC: 引数を省略できる関数をつくる
URLリンク(blogs.yahoo.co.jp)

551:名無しさん@お腹いっぱい。
16/02/09 19:24:17.43 4bdWm2Pw0.net
引数の省略はデフォルト値を関数宣言時に代入しているか否かだ



552:関数の呼び出し時に変数を使用しているが場合によってはデフォルト値にしたい時はEMPTY(定数)を代入する



553:名無しさん@お腹いっぱい。
16/02/09 19:29:44.25 +8zDwgB90.net
""てかデフォルト値であればtrueでも1でもなんか指定してあげればいいだけね
ただまぁプロ版使ってるけどこんな関数用意して
procedure procsmp(t=true,m=1,n="オイヨイヨ")
t=false
fend
こんな感じで呼ぶと
procsmp(,,"へい")
デバッガでは通るのにスクリプトファイルをUWSCで実行するとsyntaxエラー出たりと
環境で動作変わるからあんま使わない方が良いと思ってる

554:名無しさん@お腹いっぱい。
16/02/09 19:34:33.12 GXdSKXvs0.net
なんでもいいのか

555:名無しさん@お腹いっぱい。
16/02/09 19:59:33.20 p4ai4XIh0.net
>>514-515
この方法もいいね。予め全体サイズを把握してからトップダウンで計画的に構築する感じだね。

556:名無しさん@お腹いっぱい。
16/02/09 20:25:23.95 +8zDwgB90.net
2chは改行制限のおかげでどうやって可読性上げつつコンパクト化するか必死で考えるから質問に答えるだけで色々勉強になるのよね
今回はslice関数をうまいこと使えたので良かった カウンター使い過ぎだけど

557:名無しさん@お腹いっぱい。
16/02/10 07:52:47.08 Z7PL/WtA0.net
例示された処理方法よりも長いし遅くなってないか?

558:名無しさん@お腹いっぱい。
16/02/10 08:45:28.77 +W75uBK+0.net
つか質問者のコードが素手にかなりスマートなのに
もっとスマートって要求だから釣りなんだろうなw

559:名無しさん@お腹いっぱい。
16/02/10 09:04:15.50 MxWBE2100.net
2進数表記で 111 なら処理三つ 011なら処理二つ みたいなの

560:名無しさん@お腹いっぱい。
16/02/10 10:37:39.26 R/okCavp0.net
URLリンク(www.nminoru.jp)

561:名無しさん@お腹いっぱい。
16/02/10 11:26:49.90 wTSkFc930.net
phpならarray_shift使ってかなり短くできたがUWSCで組めない

562:名無しさん@お腹いっぱい。
16/02/10 12:19:18.86 mXr4GQ/h0.net
悩みようがないだろ
コード書いてみろ
添削してやんよ

563:名無しさん@お腹いっぱい。
16/02/10 12:25:07.38 wTSkFc930.net
添削というか、移植してくれ。sliceとか使うのかな
$lists["あ"] = "a10 a20 a30";
$lists["い"] = "b100 b200";
$lists["う"] = "c1 c2 c3 c4";
print implode("<br>\n",(combi($lists)));
function combi($lists){
 $l_cur = array_shift($lists);
 $l_cur_arr = explode(" ",$l_cur);
 if(count($lists)>0){
  while($l_cur_1 = array_shift($l_cur_arr)){
   foreach(combi($lists) as $extra){
    $res[] = $l_cur_1." ".$extra;
   }
  }
 }else{
  return explode(" ",$l_cur);
 }
 return $res;
}

564:名無しさん@お腹いっぱい。
16/02/10 12:45:52.49 R/okCavp0.net
そっちかよw

565:名無しさん@お腹いっぱい。
16/02/10 12:54:34.10 wTSkFc930.net
すまぬ499をベースにやろうとしてみたけど
5行目で「listsが定義されていません」エラーになる理由がもうわからない
UWSCの配列もよく分からない
hashtbl lists
lists["あ"] = "a10 a20 a30";
lists["い"] = "b100 b200";
lists["う"] = "c1 c2 c3 c4"
print combi(lists)
function combi(lists)
 res = ""
 l_cur = lists[0]
 SHIFTARRAY(lists,-1);
 l_cur_arr = split(l_cur," ");
 if length(lists)>0 then
  while length(l_cur_arr)>0
   l_cur_1 = l_cur_arr[0]
   SHIFTARRAY(l_cur_arr,-1)
   for extra in combi(lists)
    res = res + l_cur_1+" "+extra+"<#CR>"
   next
  wend
 else
  result = l_cur_arr
 endif
 result = res
fend

566:名無しさん@お腹いっぱい。
16/02/10 14:26:42.18 Lx2sic3p0.net
>>530
関数定義の方の変数が配列として定義されてないから

567:名無しさん@お腹いっぱい。
16/02/10 17:16:00.23 cNgK9kX70.net
連想配列を、多次元で使うのは無理ですか?
可能であれば、方法を教えてください

568:名無しさん@お腹いっぱい。
16/02/10 19:45:44.31 CFiYTXoe0.net
URLリンク(www.dotup.org)


569:/www.dotup.org733222.txt.html 少し長いのでうpろだに上げましたm(_ _"m) 質問です。 おそらくこの~~~~部分に稀に出てくる画像があるのですが、 処理をどう書いたら稀に出てくる画像を検出して押してループ出来ますかね? そして出ないときはスルーしてループしてくれると良いのですが.... 中々調べてもパッとしたものが出てこないので困ってます...



570:名無しさん@お腹いっぱい。
16/02/10 22:49:09.18 UdxSvPdk0.net
>>533
質問の趣旨が今一つかめないけどCASE1~8の処理をループさせながら定期的に特定の画像をチェックしたいってことでいいのかな
それならとりあえず全ケース文の先頭にその稀に出現する画像をチェックする処理入れればいいのでは
ただこれだけそっくりな処理をケース分けするなら状態遷移用のパラメータ持たせた配列用意して回した方がすっきりするね

571:名無しさん@お腹いっぱい。
16/02/10 22:55:35.86 UdxSvPdk0.net
>>533
とりあえずこんな感じ? 細かい部分は適当なので後は自分でいじって
dim tmpstr
dim def_StateParam[8]
dim VWS = 1
def_StateParam[1] = "CASE1,400,200,0,30,1.5,画像9.bmp,1,1,0"
def_StateParam[2] = "CASE2,400,200,0,30,1.5,画像2.bmp,2,1,0"
def_StateParam[3] = "CASE3,400,200,0,30,1.5,画像3.bmp,3,1,0"
def_StateParam[4] = "CASE4,400,200,0,30,1.5,画像4.bmp,4,1,0.1"
def_StateParam[5] = "CASE5,400,200,0,30,1.5,画像4.bmp,5,1,0"
def_StateParam[6] = "CASE6,400,200,0,30,1.5,画像4.bmp,6,1,0"
def_StateParam[7] = "CASE7,400,200,0,30,1.5,画像4.bmp,7,1,0"
def_StateParam[8] = "CASE8,400,200,0,30,1.5,画像5.bmp,8,1,0"
while true
  tmpstr = split(def_StateParam[VWS],",")
  fukidasi(tmpstr[0],val(tmpstr[1]),val(tmpstr[2]),val(tmpstr[3]),val(tmpstr[4]),,,)
  SLEEP(val(tmpstr[5]))
  fukidasi()
  //ここに稀に出現する画像をチェックする処理を書く
  IF VWS = 4 THEN
    WHILE (CHKIMG(tmpstr[6])=FALSE)
    SLEEP(val(tmpstr[9]))
  WEND
  ENDIF
  IFb Chkimg(tmpstr[6]) Then
    MMV(G_IMG_X, G_IMG_Y)
    BTN(LEFT,CLICK)
    VSW = val(tmpstr[7])
  ELSE
    VSW = val(tmpstr[8])
  ENDIF
wend

572:名無しさん@お腹いっぱい。
16/02/10 23:00:18.61 UdxSvPdk0.net
まちがった こっちで
dim tmpstr, def_StateParam[8], VWS = 1
def_StateParam[1] = "CASE1,400,200,0,30,1.5,画像9.bmp,1,1,0"
def_StateParam[2] = "CASE2,400,200,0,30,1.5,画像2.bmp,2,1,0"
def_StateParam[3] = "CASE3,400,200,0,30,1.5,画像3.bmp,3,1,0"
def_StateParam[4] = "CASE4,400,200,0,30,1.5,画像4.bmp,4,1,0.1"
def_StateParam[5] = "CASE5,400,200,0,30,1.5,画像4.bmp,5,1,0"
def_StateParam[6] = "CASE6,400,200,0,30,1.5,画像4.bmp,6,1,0"
def_StateParam[7] = "CASE7,400,200,0,30,1.5,画像4.bmp,7,1,0"
def_StateParam[8] = "CASE8,400,200,0,30,1.5,画像5.bmp,8,1,0"
while true
  tmpstr = split(def_StateParam[VWS],",")
  fukidasi(tmpstr[0],val(tmpstr[1]),val(tmpstr[2]),val(tmpstr[3]),val(tmpstr[4]),,,)
  SLEEP(val(tmpstr[5]))
  fukidasi()
  //ここに稀に出現する画像をチェックする処理を書く
  IF VWS = 4 THEN
    WHILE (CHKIMG(tmpstr[6])=FALSE)
    SLEEP(val(tmpstr[9]))
    WEND
  ELSE
    IFb Chkimg(tmpstr[6]) Then
      MMV(G_IMG_X, G_IMG_Y)
      BTN(LEFT,CLICK)
      VSW = val(tmpstr[7])
    ELSE
      VSW = val(tmpstr[8])
    ENDIF
  ENDIF
wend

573:名無しさん@お腹いっぱい。
16/02/11 01:00:59.88 2xnip+Tc0.net
せめて構造体が使えればねぇ

574:名無しさん@お腹いっぱい。
16/02/11 01:02:56.58 PFox1uTL0.net
もしかしてselect処理毎に稀の画像チェックしたいけどselendの前に書いちゃって
毎回通らなくてうまくいかないよ!っていうことだったりするのかな?

575:名無しさん@お腹いっぱい。
16/02/11 01:21:45.52 0c+JQyo+0.net
classで構造体っぽい物は作れるけど複数のインスタンス持てるわけでもないしあんま意味ないのがな

576:名無しさん@お腹いっぱい。
16/02/11 02:19:21.45 ZBhxJU1k0.net
PowerShell ではクラスを扱えるけど、クラスを作れなかったと思う。
UWSC も、クラスのデータを他言語から受け取って接着剤みたいに使えばいいんじゃね?

577:526
16/02/11 03:35:07.99 b+3w0CHx0.net
UWSC使い始めてまだ2日目で色々酷くてすみません( ;∀;)
やりたいこととして無限ループを行い、ゲーム内の画像を検出してクリックして放置が
できるようにしたかったのですが、先述の通り稀に押さないと進めない物が出てきまして、それのせいでCASE1に飛ばされてしまい
マクロが止まるという事態が起きてました。

578:名無しさん@お腹いっぱい。
16/02/11 03:39:32.11 b+3w0CHx0.net
>>534
527さんの解釈で合ってます!
色々検索したり、知恵袋使って質問していたのですがその仕組みが作れませんでした...
>>536
529さんのが自分からすると高度すぎてよく分からない状態です( ;∀;)

579:名無しさん@お腹いっぱい。
16/02/11 04:06:02.47 BAwW+2D


580:70.net



581:名無しさん@お腹いっぱい。
16/02/11 04:17:43.34 TCAo9itq0.net
始めて2日の>>541>>536見せても意味理解できないんじゃないかなあ
プログラム初心者とは書いてないけれど、どうなんだろう
始めて2週間の俺が低レベルなプログラムを書いてみる
WHILE !GETKEYSTATE(VK_ESC)
REPEAT
IFB CHKIMG("画像9.bmp")
BTN(LEFT,CLICK)
ELSE
BREAK
ENDIF
IFB CHKIMG("画像2.bmp")
BTN(LEFT,CLICK)
ELSE
BREAK
ENDIF



UNTIL FALSE
WEND
ん? これでよくね?
見つからない場合にBREAKすれば最初に戻るんだろ?

582:名無しさん@お腹いっぱい。
16/02/11 12:23:32.74 z++B2lkF0.net
>>544
状態遷移を省いちゃダメでしょ

583:521
16/02/11 13:16:17.89 okUdFipF0.net
>>502のやついまさらで「あ・い・う」も略しちゃってるけどやっと一応できた
配列の順次追加・戻り値・shiftに苦労したが勉強になって楽しかった
空の配列宣言が分からなくて if ref[0]<>""とか不恰好なのが入ってる
dim res[] = ""に代わる中身0の配列宣言分かりましたら教えてください
行数も構造もあまり499と代わらなくなっちゃったかな
dim lists[] = "a10 a20 a30","b100 b200","c1 c2 c3 c4"
print join(combi(lists),"<#CR>")
function combi(lists[])
 dim res[] = ""
 l_cur = lists[0];
 lists_s = slice(lists,1,length(lists)-1)
 l_cur_arr = split(l_cur," ")
 if length(lists_s)>0 then
  while length(l_cur_arr)>0
   l_cur_1 = l_cur_arr[0]
   l_cur_arr = slice(l_cur_arr,1,length(l_cur_arr)-1)
   for extra in combi(lists_s)
    if res[0]<>"" then Resize(res,length(res))
    res[length(res)-1] = l_cur_1+" "+extra+""
   next
  wend
  result = slice(res,0,length(res)-1)
 else
  result = l_cur_arr
 endif
fend

584:名無しさん@お腹いっぱい。
16/02/11 13:26:13.37 IFP6rTWM0.net
emptyとかvartypeとかそういう話でなく?

585:名無しさん@お腹いっぱい。
16/02/11 13:32:44.65 okUdFipF0.net
>>547
ごめんよく分からない。多分違うかな
dim res[] = ""の部分の時点でlength 1 になっちゃうから
length 0 の状態で宣言できるとそこは解決だと思うのだが

586:名無しさん@お腹いっぱい。
16/02/11 14:11:26.72 PFox1uTL0.net
>>542
単純に書くならこうなる
while 1
if chkimg("稀?")
elseif chkimg("9?")
elseif chkimg("2?")
elseif chkimg("3?")
endif
sleep(3)//?
wend
VSWでの全体の管理が必要なのかも怪しい
VSWに捕らわれすぎてやりたいことが出来なくなってる可能性もある
まぁそれぞれの画像の条件(出方・消え方)がいまいちわからないから・・・

587:名無しさん@お腹いっぱい。
16/02/11 19:58:05.91 RBcXi3Gt0.net
教えて下さい。
このソフトを使ってExcelシートに入力されている値を別の計算ソフトへ
自動で入力するというようなことはできますか?

588:名無しさん@お腹いっぱい。
16/02/11 20:29:19.42 WYFXkEVH0.net
URLリンク(www.dotup.org)

589:名無しさん@お腹いっぱい。
16/02/11 21:05:25.66 z8n8XQ1d0.net
>>524
msgbox(bitcount(7)) //3
msgbox(bitcount(3)) //2
function bitcount(n)
 if n<>0 then result=result+n mod 2+bitcount(int(n/2))
fend

590:名無しさん@お腹いっぱい。
16/02/12 00:04:53.83 k6qMW81B0.net
素人でこの言語最近知ったんだが、これ最強の言語じゃね?なんであまり知られてないの?

591:名無しさん@お腹いっぱい。
16/02/12 00:12:52.00 9BztTFw/0.net
いや、言語っていうか・・・

592:名無しさん@お腹いっぱい。
16/02/12 00:45:52.84 ywMkiNaR0.net
>>553
素人判断はやめましょう

593:名無しさん@お腹いっぱい。
16/02/12 00:51:12.45 GKVk0beF0.net
ゲームを自動化すると楽しく学べるね(´・ω・`)

594:名無しさん@お腹いっぱい。
16/02/12 00:54:49.48 8lgU0Jr00.net
やっちゃいけない領域な気がするけどね!

595:名無しさん@お腹いっぱい。
16/02/12 01:26:26.97 g/t37I2b0.net
言語というよりも録画再生機能が好き

596:名無しさん@お腹いっぱい。
16/02/12 08:54:55.690943 k6qMW81B0.net
いや、本当に素人でもブラウザとソフトウェアの自動連携を作れるってのはすごいと思うんやけど。なんで知られてないん?

597:名無しさん@お腹いっぱい。
16/02/12 08:56:56.102247 4JLZMnR80.net
お前の類友が無知だからかな

598:名無しさん@お腹いっぱい。
16/02/12 10:04:21.88 i4qbzSJ40.net
時間どうなってんのそれ

599:名無しさん@お腹いっぱい。
16/02/12 13:27:19.60 cKYrB2r90.net
>>549
元コード見るとすべてのステージで異なる画像を判別に使用してるわけじゃないから無理じゃね
画像4チェックのときだけケース分けするにしてもそれなら一括でステージ管理したほうがよさげ

600:名無しさん@お腹いっぱい。
16/02/12 15:17:28.05 8lgU0Jr00.net
>>562
不明な点が多すぎて基本的なやつになった

601:名無しさん@お腹いっぱい。
16/02/12 16:30:11.66 cKYrB2r90.net
>>546
UWSCで空配列は宣言できないからslice関数を使って普通の変数に入れる
初期値指定みたいに文字列使いたい場合はsplit関数も組み合わせる
DIM x = slice(SPLIT("a,b,c,d",","))
print x[2]
x=slice(SPLIT("e,f,g,h,i,j",","))
print x[2]
DIM y = slice(SPLIT("w,x,y,z",","))
DIM z = slice(y)
print z[2]
これ使えばよくある空配列の宣言に近いことはできる

602:名無しさん@お腹いっぱい。
16/02/12 16:42:46.02 cKYrB2r90.net
>>546
もちろんslice関数での変数x初期化前にlength(x)すると0は返ってくるけど
単純にxの文字列長が返ってきてるだけで要素数では無い点には注意が必要
戻値的には同じだから十分使えるけどね

603:名無しさん@お腹いっぱい。
16/02/12 17:09:37.34 UbZzXFO50.net
>>564
おー、ありがとう
>>564を直接どう使えばいいか分からなかったけど
(「変数x初期化前にlength(x)すると0は返ってくる」てのがどういう状態の時か分からず)
>>546の宣言部分を DIM res = slice(SPLIT("",",")) と
空文字列のsliceから取得したらlength 0で宣言できた
あとはphpと同じようにshiftarrayの戻り値としてあふれた値取得できたり
式ひとつで配列に値を追加できるとかなりシンプルに出来るんだが
そこはUWSCの仕様ってことであきらめるしかなさそうかな~

604:名無しさん@お腹いっぱい。
16/02/12 17:20:03.48 cKYrB2r90.net
>>566
言い方悪かった
>変数x初期化前にlength(x)すると0は返ってくる
DIM x //初期値を与えない
print length(x) //xの文字列長0が返る
x = slice(SPLIT("a,b,c",","))
length(x) //x[]の要素数の3が返る
って意味だったんだけど確かに宣言時に slice(SPLIT("",",")) で初期値設定しておいたほうが
後からコード見たとき変数の用途が解りやすくていいね
使わせてもらいます

605:名無しさん@お腹いっぱい。
16/02/12 17:32:07.53 bdQKZ6P80.net
長さ0のsafearrayはこれで作れる
safearray(0,-1)

606:名無しさん@お腹いっぱい。
16/02/12 17:37:10.80 ckS+rd0L0.net
phpはデフォで色々な関数が用意されてるだけなんだから
array_shiftと同じ関数を自作すりゃいい

607:名無しさん@お腹いっぱい。
16/02/12 17:42:19.65 UbZzXFO50.net
>>567
なるほど> DIM x
しかしそれだとその後のResizeで「配列ではありません」エラーになっちゃうな
いずれにしても宣言わかってよかったですありがとう
1行での配列の追加もその線で出来ないかと
res = slice(split(join(res,","),",")) とトリッキーにやってみたが上手く行かず
もし出来たらまた貼らせていただくかも
>>568
おー、ほんとだスッキリ
>>56


608:9 元の配列操作しつつ戻り値も得るって出来るのかな?



609:名無しさん@お腹いっぱい。
16/02/12 19:27:59.43 k6qMW81B0.net
ブラウザ操作する場合、uwscとエクセルvbaはどちらがいいの?同じ?
それなら、ページが多いエクセルの方が良くね。

610:名無しさん@お腹いっぱい。
16/02/12 19:32:42.63 dphmFixd0.net
COM操作で解決する範囲の自動化なら同じなので自分が使いやすい方でやれば良いのです

611:名無しさん@お腹いっぱい。
16/02/12 19:53:59.16 i4qbzSJ40.net
alert窓 を閉じるのは VBA では基本的に出来ないと思う。
でも、出ることが分かってる「ファイルを保存する」ダイアログは
SendKeys でコントロールできるらしい。

612:名無しさん@お腹いっぱい。
16/02/13 01:10:16.19 smbIwZzf0.net
UWSCでクワインとなるソースコードを教えてください
なるべく最短で、出力はmsgboxでお願いします

613:名無しさん@お腹いっぱい。
16/02/13 01:15:32.21 hFFChm3k0.net
誰かがそれを出してもwikiとかに追記に行くなよ

614:名無しさん@お腹いっぱい。
16/02/13 09:26:54.53 7eVjLkIC0.net
MOUSEORG(id,0)
if chkimgx(img_name, id) then btn(left, click, G_IMGX_X, G_IMGX_Y)
これだと画像より少し左上にずれてクリックする
修正して使ってきたがこれってしかたないのか?

615:名無しさん@お腹いっぱい。
16/02/13 14:16:58.30 9elgN/hL0.net
statusでウィンドウの幅と高さとクライアント幅とクライアント高さ
この辺が違ってたらその可能性もある

616:名無しさん@お腹いっぱい。
16/02/13 18:52:01.69 abY5DV330.net
>>576
使用した画像の一番左上を原点とするからだよ
だから何も指示しないと左上に行く

617:名無しさん@お腹いっぱい。
16/02/13 19:32:42.79 AtiKTq4d0.net
569の言う左上って画像の中心より左上って意味なのか?
画像の左上角より左上なのかと思った

618:名無しさん@お腹いっぱい。
16/02/13 19:56:20.37 2icoSvut0.net
chkimgってサーチ範囲の座標記述すると見た目が悪くなるのが嫌いなんだけど
俺が作ってるのはサーチ範囲は変わらないから全部同じ数字入れるのがだるい
かといって書かないと遅くなるらしいし
良い方法ないかな
新しく関数作って固定させるぐらいしか思いつかん
chkimgA()
function chkimgA(PARAM_IMG)
ifb chkimg( "PARAM_IMG" + ".bmp", 1, x1, y1, x2, y2)
result = true
else
result = false
endif
fend

619:名無しさん@お腹いっぱい。
16/02/13 20:07:46.86 hFFChm3k0.net
基本的には関数化しかない
例外を記述する時に楽するためにデフォルト引数使うと良いかもね

620:名無しさん@お腹いっぱい。
16/02/13 20:08:01.19 JoYsMZYi0.net
定数作れよ

621:名無しさん@お腹いっぱい。
16/02/13 20:15:10.67 2icoSvut0.net
>>581
やっぱそうか
デフォルト引数ってのは
function chkimgA(PARAM_IMG="")
みたいに書けばいいってこと?
>>582
定数作れってのはCONST使えって言うこと?

622:名無しさん@お腹いっぱい。
16/02/13 20:26:32.08 hFFChm3k0.net
全部聞いていたら何も造れないぞ
少しは考えろ
//デフォルトの範囲(面倒だからXのみ)
CONST checkImageRange_X = 100
checkImage("test1") //デフォルト引数な呼び出し
checkImage("test2", 200) //例外的な呼び出し
procedure checkImage(imageName, x = checkImageRange_X)
 Print imageName + "=" + x
Fend

623:名無しさん@お腹いっぱい。
16/02/13 20:37:26.58 2icoSvut0.net
ごめん、全部聞いたつもりじゃなくて言葉の意味、意図がわからないから聞いただけなんだ

624:名無しさん@お腹いっぱい。
16/02/13 21:11:34.08 2icoSvut0.net
デフォルト引数とかCONSTについての知識があまりないからググって考えたんだけど
>>584は例外を引数で指定するためのやり方、ということだよね?
自作関数そのものの機能としては>>580で問題ないよね?
俺は例外の場合は普通にCHKIMG関数を使おうと思っていたんだけど、



625:>584のやり方で例外のために記述を加えたほうがいいのはどうして?



626:名無しさん@お腹いっぱい。
16/02/13 21:19:16.44 JoYsMZYi0.net
>例外の場合は普通にCHKIMG関数を使おうと思っていたんだけど
だったら関数作んなくていいって
定数作れ

627:名無しさん@お腹いっぱい。
16/02/13 21:30:44.76 hFFChm3k0.net
デフォルトな条件なら呼び出し側がシンプルに成る
前後の処理を共通化できるってのが基本的なメリット
同じ処理を複数の箇所に記述すると変更する必要が生じた時に
対応が漏れる恐れがある
少し上にあった条件を配列に入れてループで回すコードみたいに
回りくどくても変更に対応しやすいコードの方が便利かもねって話

628:名無しさん@お腹いっぱい。
16/02/13 21:39:33.04 2icoSvut0.net
>>587
ごめん、その定数作れの意味がわからない
>>588
関連の話として、例外を指定できる方法を教えてくれたということかな?
どうもありがとう

629:名無しさん@お腹いっぱい。
16/02/13 21:43:21.10 AtiKTq4d0.net
>>580
なんで関数内にif文書いてるの?
function chkimgA(~)
 result = chkimg(~
fend
これだけでいいじゃん

630:名無しさん@お腹いっぱい。
16/02/13 23:11:25.36 eCDlWNP70.net
初心者の質問です。
fukidasi(

631:名無しさん@お腹いっぱい。
16/02/13 23:15:10.41 eCDlWNP70.net
あれ、切れちゃった
初心者の質問です。
 fukidasi("ゲームウィンドウ上でSキー") //Sキー入力待ちの告知
 While !(GETKEYSTATE(VK_S)) //Sキー入力まで無限ループ
 sleep(0.1)
 Wend
 fukidasi() //入力待ち告知の吹き出しを消す
 winid = getid(GET_ACTIVE_WIN)
この某hpのサンプルコード使ってbluestacksのID取得をして
MOUSORG(winid,0,0)では動くのですがそれ以外の数値だと動きません
(id,2,2)でバックで動かしたいのですがどうすれば直りますか?

632:名無しさん@お腹いっぱい。
16/02/14 00:41:28.44 V4/m1Afh0.net
仮想環境を操作するのはUWSCでは無理

633:名無しさん@お腹いっぱい。
16/02/14 08:59:07.59 4bRrPD2X0.net
>>593
なるほど バックで動かすのはあきらめます
ありがとうございました

634:名無しさん@お腹いっぱい。
16/02/14 09:05:22.19 c3uHBcDI0.net
自分が裏だと描画を控えるアプリに対して
描画させる事は基本的に前面にするしかない

635:名無しさん@お腹いっぱい。
16/02/14 09:28:54.14 Oo27r2AD0.net
以前書いた奴
ID = GETID("BlueStacks App Player","WindowsForms10.Window.")
// MOUSEORG( ID, MORG_CLIENT or MORG_DIRECT, MORG_BACK ) // MORG_DIRECT だとAndroidが反応してしまう。
// MOUSEORG( ID, MORG_CLIENT ) // MORG_CLIENT だと ChkImgX と標準関数とで原点位置が食い違う。
MOUSEORG( ID )
>>593-594 の流れはおかしい。
仮想環境でも画像で操縦は可能だし
>>592 は「MOUSORG(winid,0,0)」では動くと書いてるのに。
>>595
BlueStacks は裏でも描画する
XP時代は隠れた部分は描画されなかったけど

636:名無しさん@お腹いっぱい。
16/02/14 11:08:44.73 4bRrPD2X0.net
>>596
よく考えたらそうですね・・・
その後の処理はifb CHKIMG→BTNでクリックさせる→スリープ1秒 を何パターンも作ってるだけの簡単な
ゲーム操作をさせるマクロなんですが色々ぐぐっても原因わからずでした

637:名無しさん@お腹いっぱい。
16/02/15 01:57:12.49 0dWxJSmB0.net
画像検索の特殊変数G_IMG_X,G_IMG_Yってのは
ローカル変数扱いなんでしょうか?
画像検索でヒットしたG_IMG_X,G_IMG_Yの値を
別の関数で使いたい場合は、引数で渡すか
グローバル変数を使うかしかないんでしょうか?

638:名無しさん@お腹いっぱい。
16/02/15 07:11:02.66 X50nyRyC0.net
>>598
グローバルだったとしても、そういうのは引数で渡す癖をつけたほうがいいよ。
グローバル変数に入れなおすのもNG。

639:名無しさん@お腹いっぱい。
16/02/15 12:48:14.51 fuyjfYD1


640:0.net



641:名無しさん@お腹いっぱい。
16/02/15 14:28:14.98 lRH39zN60.net
>>600
個人的にはそれが必要な情報なら引数にする事を厭わないかな
でもクラス(モジュール)を使って必要な情報を整理して保持できるならそっちを優先する
グローバル変数は最後の手段だけどクラスのメンバ変数は使用を躊躇する必要ないしね

642:名無しさん@お腹いっぱい。
16/02/15 15:17:21.06 mpgO3egX0.net
引数を配列で渡すとか、関数を分割するとか

643:名無しさん@お腹いっぱい。
16/02/15 17:00:42.69 ml/Gl3ot0.net
ワシにはなんのこったかさっぱり
UWSCはプログラミング未経験者が使うツールだと思ってた

644:名無しさん@お腹いっぱい。
16/02/15 18:51:08.74 iW+KTqvB0.net
>>603
その話題について知りたいなら素直に知りたいって書いたほうが得だよ
逆にどうでもいいなら黙ってようよ

645:名無しさん@お腹いっぱい。
16/02/15 18:55:50.05 iV3+q7Ob0.net
うざいからお前出てって

646:名無しさん@お腹いっぱい。
16/02/15 20:36:48.80 ml/Gl3ot0.net
わかったよもう来ないよ
そのかわり質問スレに誘導してくれ

647:名無しさん@お腹いっぱい。
16/02/15 20:47:06.23 TntgXZj60.net
>>606
うざいと言われてるのは>>604の方だと思うがな

648:名無しさん@お腹いっぱい。
16/02/15 20:54:00.51 VKY0mmNh0.net
もっと短いクワイン書けないでしょうか?自分の実力ではこれが限界です
UWSC上級の人よろしくお願いします
a=chr(34);b=

649:名無しさん@お腹いっぱい。
16/02/15 21:00:29.60 VKY0mmNh0.net
なんか切れたんでこっちに貼りました
URLリンク(gist.github.com)

650:名無しさん@お腹いっぱい。
16/02/15 21:24:10.17 ekeGmjS90.net
特定の武器を一回だけ使って元の武器に戻す
特定の武器に持ち替えて使用する
↑ここまではUWSCでできるんだけど
直前に持っていた武器に戻す
↑識別方法がなくて諦めた

651:名無しさん@お腹いっぱい。
16/02/15 21:45:50.39 k4y1Ql7g0.net
日記か

652:名無しさん@お腹いっぱい。
16/02/15 22:00:26.19 0XdlPD550.net
最近恥ずかしげもなくゲームマクロの質問ばかりだな

653:名無しさん@お腹いっぱい。
16/02/15 22:05:32.67 GSjAFn9q0.net
>>610
お前が何を見て直前に持っていた武器だと認識するのかを
そのままコードに書けばできるだろ
お前も認識できないなら知らん

654:名無しさん@お腹いっぱい。
16/02/15 22:21:08.17 ZQ5I0KNy0.net
>>603
特定の画像出現をポーリングで待機しながらタイムアウトとか考えるのは組み込みに近いから
言語自体はシンプルだけどコード書くのはそこそこ経験必要よ

655:名無しさん@お腹いっぱい。
16/02/15 22:37:12.48 ScNC+Izw0.net
ゲームで使うのはいけないけど
楽しく学べるから一番上達が早いのよね
(´・ω・`)

656:名無しさん@お腹いっぱい。
16/02/15 22:42:37.20 6/AzYlfK0.net
>ゲームで使うのはいけないけど
どういうこと?

657:名無しさん@お腹いっぱい。
16/02/15 23:01:56.67 TntgXZj60.net
ゲームマクロ使用がいけないことであるっていう常識が無い奴がいるのは戦慄を覚えるね

658:名無しさん@お腹いっぱい。
16/02/15 23:08:31.27 6/AzYlfK0.net
ソフトが良くてゲームがいけない意味が分からん
最近もパズドラ攻略機械組んでる動画みてただすげえって思ったけど
もともとゲーム内にプログラム要素あるのもあるし

659:imi
16/02/15 23:11:18.16 Et+z3L6S0.net
君規約とか一切読まないタイプ?

660:名無しさん@お腹いっぱい。
16/02/15 23:12:37.28 ZQ5I0KNy0.net
オフゲなら好きに汁オンゲなら垢バンされても泣かない
ここはマクロの善悪を語る場ではないので

661:名無しさん@お腹いっぱい。
16/02/15 23:12:46.12 lRH39zN60.net
利用規約違反になるので本来公言するもんじゃないのよ
だからゲームのためのノウハウ教えてと言われると供与できない
建前でゲームじゃないフリしてろ

662:名無しさん@お腹いっぱい。
16/02/15 23:15:05.33


663: ID:6/AzYlfK0.net



664:名無しさん@お腹いっぱい。
16/02/15 23:18:49.53 lRH39zN60.net
許されているジャンルならそのスレでマクロの話をすれば良い

665:名無しさん@お腹いっぱい。
16/02/15 23:23:35.26 6/AzYlfK0.net
あー課金したりネットワークで他人と競う系のゲームか
自分そういうのぜんぜんやらないからな
「ゲーム」って一まとめで言うのは御幣あるじゃないか
ゲーム名明記してない限り規約に違反してるかどうかは分からんわけでしょ
>>623
その論理だとすべてのマクロの話Windowsスレとか別スレでしろって話になっちゃうんじゃ

666:名無しさん@お腹いっぱい。
16/02/15 23:30:04.89 lRH39zN60.net
利用規約にマクロが禁止されているツールならそうなるかもね
だから規約違反しているか判断できないゲームの話はするのは勝手けど
供与は出来ないからボカせというのが私の主張

667:名無しさん@お腹いっぱい。
16/02/15 23:31:45.80 0XdlPD550.net
いやー規約違反云々もあるが
調べもしない子供が多いからここでゲームの質問は暗黙の了解でNGだったんだが
最近は普通に受け入れられるようになったんだなーと思った

668:名無しさん@お腹いっぱい。
16/02/16 00:26:03.06 Qfud2JiX0.net
ゲームの規約はUWSCの規約じゃないからそれ自体はどうでもいいんだけどね。
「何をやりたいか」を有効な言葉に変換できずに、ゲームの動作そのまま質問しちゃうような人だと
自分で何もせず結局全部丸投げしてくる人ばかりだから叩かれたというだけ。

669:名無しさん@お腹いっぱい。
16/02/16 00:44:27.17 i6aChOQJ0.net
ゲーム関連で荒れなかった試しがないからな

670:名無しさん@お腹いっぱい。
16/02/16 02:56:23.77 QoFwoTib0.net
A⇔Bって決まってるなら
AからBは出来るんだから(Bを探した?)
その逆をやればいい(Aを探す?)
もし途中からAと同種のやつがもりもり増えていくとかだとめんどいけど
まぁAが増える可能性もあるということはBも増える可能性があるわけで・・・

671:名無しさん@お腹いっぱい。
16/02/17 04:35:41.66 kb0x6ds+0.net
ゲームのプレイ行為そのものが報酬であるとデザインされたオフゲと違って、
ネトゲはゲームのプレイ行為を手段として主に自己顕示による自己実現気分を
味わうヤクであり、ソシャゲはそのヤクの販売ルート拡大とマネタイズに
成功した事業なのである。
仮想自己実現を売り物にするネトゲ・ソシャゲ業者にとって、
ゲームのプレイ行為そのものが報酬となる程に、
ゲームそのものを工夫して面白くするのは過剰品質であり粗利が減るので、
あえて、いわゆるクリックゲーと呼ばれる、ゲームというより単重労働を
ユーザーに課すのが通例であり、これを自動化されては産業革命が起きてしまい
商売が成り立たないので規約で禁止する率はほぼ100%。
よってゲームの自動化需要で圧倒的多数はソシャゲであり、ほぼ無確認でも間違いない。
そしてゲーム開始時にソシャゲ業者から口を酸っぱくして明示的に禁止されていることに
気づかず、臆面もなく赤の他人にホイホイ業者との契約違反方法を聞いて恥じない愚者は
知能的にプログラミングを教える段階にない。

672:名無しさん@お腹いっぱい。
16/02/17 04:53:53.69 hPLvEUTu0.net
このスレでゲームの話題が禁止されてるのは
オンライン/オフラインに限らず全てなので
別にゲームの規約違反とは関係ないと思うよ。
たぶん、ゲームの質問するやつって常に新規で初歩的な質問なんで
それ以外の話ができないとかそんなんだろ。

673:名無しさん@お腹いっぱい。
16/02/17 04:57:14.01 hPLvEUTu0.net
ソシャゲではこういうことはないけど、一般的なオンラインゲームでは
ゲーム側でUWSCが


674:動かないようにされてるから、そういうのは関係あるかも > 42 :名無しさん@お腹いっぱい。:2012/04/27(金) 08:17:32.89 ID:n7YHJBnV0 >  作成したマクロをオンラインゲームで実行しようとすると動作しませんでした >  ググってUWSCをUNKOに変更してもダメでした・・・ >  ゲーム側でマクロ対策されてたら出来ないのでしょうか? > > 43 :名無しさん@お腹いっぱい。:2012/04/27(金) 10:16:31.41 ID:hwEpQpsX0 >  >>43 >  マクロ対策されてたら出来ないから >  仮想PCでゲーム走らせてやるんだよ



675:名無しさん@お腹いっぱい。
16/02/17 04:57:20.17 pIoDNX4q0.net
そんなゲーム業者の都合なんてどうでもいいことだろう。
重要なのは、このスレの住人が答えたくなるような質問ができるかどうかだ。

676:名無しさん@お腹いっぱい。
16/02/17 05:06:46.52 hPLvEUTu0.net
ゲームの仮想化では必需品だった VMware Player も開発中止になっちゃって今後どうしたらいいのやら。
マイクロソフトの Hyper-V を VMware Player のように使うことは可能だけど
マイクロソフト製品は画面表示に通信系の技術を使ってて
帯域を減らすために画像圧縮を使ってるせいで
常に画面はノイズが入った状態で
UWSC の画像認識では動かない・・・。
Hyper-V で音を出すためには Windows Server または Ultimate が必要だ。
7月までなら無償アップグレードが可能だから、
とりあえず Hyper-V 環境の Winddows を一つくらい
無償アップグレードしといたほうがいいかも。
音を出す程度のことでそんなことが必要なくらい、Hyper-V は不便なんだぞー。
そして、ほかの仮想化ソフトは全然使い物にならないんだぞー
※ Mac の Parallelsだけは例外
KVM とかは Linux では安定して動くらしいけど
Windows は満足に動かせないらしい。
設定もめんどくさいし。

677:名無しさん@お腹いっぱい。
16/02/17 05:25:15.26 GIOAQLSV0.net
煽りとかじゃないんだけどゲーム以外だと何に使ってるの?

678:名無しさん@お腹いっぱい。
16/02/17 06:32:41.54 beI7tmqh0.net
>>635
業務

679:名無しさん@お腹いっぱい。
16/02/17 08:13:26.19 /1ajP00K0.net
ゲームの話になると仮想環境とかUWSC対策の回避方法の話ばかりになる
ゲーム操作一般スレ作っておいて誘導したほうがお互いのためにもいいよ

680:名無しさん@お腹いっぱい。
16/02/17 08:15:00.12 rcyqh9600.net
動画見てるときにでてくる広告クリック

681:名無しさん@お腹いっぱい。
16/02/17 08:21:56.99 91rSfnp00.net
Windows起動時に窓を残したまま立ち上がる常駐アプリ(LINEとか)のウィンドウクローズ
マイドキュメントの定時バックアップ、手動でWindows終了した時のバックアップの自動化
株取引アプリの起動時、アプリ側で保存されない設定の自動セット
チャートアプリで毎回同じ流れの操作をダブルクリックで実行

682:名無しさん@お腹いっぱい。
16/02/17 10:58:48.44 dGarNdwa0.net
バックグラウンドで動いてて欲しいけどよく止まるソフトの異常検知と再起動
ビューアで見ている画像にフォルダ名をつけてマイドキュメントにコピー

683:名無しさん@お腹いっぱい。
16/02/17 11:10:03.79 7mLT8oDH0.net
SPEAK関数使ったマクロでカーナビ音声認識機能のデバッグ
海外向けナビは音声認識機能がデフォルトなので全ての機能に音声認識が割り当てられてるから人の手でやると超大変

684:名無しさん@お腹いっぱい。
16/02/17 19:23:28.68 CDYU1lyI0.net
>>638
スケベ

685:名無しさん@お腹いっぱい。
16/02/17 23:05:55.63 Z2OJH21P0.net
a~z+1~9の中からランダムに入力したい場合ってどうやればいいですか?

686:名無しさん@お腹いっぱい。
16/02/17 23:38:43.99 7mLT8oDH0.net
>>643
ざっくり設計
1.該当のAscii文字コードが入った配列を作成
2.配列の添


687:数をランダムで生成 3.chr関数を使って文字に変換 Ascii文字コードでA と aは別物なので必要に応じて修正拡張 //関数呼び出しサンプル 戻り値はstr print fnc_RandomStr() //0-9,a-zをランダムで生成する関数 function fnc_RandomStr() dim ts[35],i for i= 0 to 9 ts[i] = Asc("0")+i next for i= 10 to 35 ts[i] = Asc("W")+i next result = chr(ts[random(36)]) fend



688:名無しさん@お腹いっぱい。
16/02/17 23:44:26.11 Y0AJ5NIx0.net
kbd(random(VK_Z - VK_0) + VK_0)
とかでいいんでない?

689:名無しさん@お腹いっぱい。
16/02/17 23:53:36.29 7mLT8oDH0.net
それだとVK_0からVK_Z-1までの文字コード出すだけだから
58(:)-64(@)の記号まで含まれちゃうし多分Zは出てこないね

690:名無しさん@お腹いっぱい。
16/02/17 23:54:40.60 5diPod+M0.net
丸投げに応じるなよ・・・

691:名無しさん@お腹いっぱい。
16/02/17 23:56:59.22 7mLT8oDH0.net
ランダムでの文字列生成はたまにコード書いておかないと大事な事抜け落ちるからな

692:名無しさん@お腹いっぱい。
16/02/18 00:03:21.41 eoG2gd950.net
>>648
わかる、一回の実行で使い回す頻度を考えて準備と取得は分けたりもするよね
グローバル変数を汚染をしないためにもクラス使った方が良いパターンだと思う
>>647
自分も丸投げは検索キーワードを教える位までかな
でも対処は個人の自由かと
(勿論ツッコミを入れるのも自由だと思うので非難はしていない)

693:名無しさん@お腹いっぱい。
16/02/18 00:17:37.78 OlbQAj/J0.net
>>649
そうそう 引数に渡すクラス内の配列サイズ取得してrandomの範囲決めて関数自体は汎用化させた方がスマートだったね
randomの取得範囲が以下か未満かもたまに怪しくなるしランダム文字列生成ではいつもコードレビューが厳しくなる

694:名無しさん@お腹いっぱい。
16/02/18 00:43:39.97 RFqQoptg0.net
>>649
>>2
●質問したい方へ
「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」
「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる
「○○作って下さい」→ 依頼スレじゃありません。
過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。
自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。
備考:PRI NT文を利用してデバッグする。管理者権限で起動してみる。AEROを切る。fcuc.uwsを走らせてみる。

丸投げに対応する奴は荒らしと同類
この手のスレでは鉄則だろ

695:名無しさん@お腹いっぱい。
16/02/18 00:49:06.01 YGG8mhQL0.net
コードを晒す目的でオススメのWebサイトありますか

696:名無しさん@お腹いっぱい。
16/02/18 00:52:04.81 OlbQAj/J0.net
この話題止めね?
コード書いた本人が自分のためにコード書いてんだからコピペ張るよりコード張ろうぜ

697:名無しさん@お腹いっぱい。
16/02/18 01:11:07.18 MFRYafp00.net
そもそも>>643を見ただけでは丸投げかどうかわからないと思うが

698:名無しさん@お腹いっぱい。
16/02/18 02:06:21.02 dUe+VgX70.net
丸投げでも面白い問題ならパズルのように解きたくなるものもある
解かれないってことは問題がうんこ

699:名無しさん@お腹いっぱい。
16/02/18 08:09:18.41 PV/kQd7A0.net
より短いクワインができました
URLリンク(gist.github.com)

700:名無しさん@お腹いっぱい。
16/02/18 08:33:26.58 HYi07iZS0.net
ヘルプにある仮想キーコードの説明って、プログラマ経験者前提過ぎなんだよね。
↓こういうのテンプレに入れようぜ
URLリンク(www.comrade.co.jp)


701:tp/km2/manual/Properties/VKeyCode.htm



702:名無しさん@お腹いっぱい。
16/02/18 08:38:09.64 HYi07iZS0.net
あとこれな
SendStrによる文字列送信
URLリンク(siromasa.html.xdomain.jp)

703:名無しさん@お腹いっぱい。
16/02/18 08:39:32.11 eoG2gd950.net
ヘルプファイルの
「スクリプト」「その他項目」「予約後、関数一覧」
の「定義済み仮想キー」にあるのよ

704:名無しさん@お腹いっぱい。
16/02/18 19:09:42.48 HYi07iZS0.net
いや、仮想キーが定数であることも、具体的な値も書いてないでしょ。
Aに1加算したらBになるって、
何のプログラミング経験もなくあのヘルプだけ見て判る人は相当才能あるよw

705:名無しさん@お腹いっぱい。
16/02/18 22:34:44.95 8Ev3PTaE0.net
そらそういう使い方をして欲しくないからでしょ

706:名無しさん@お腹いっぱい。
16/02/18 23:06:12.24 6tMhXUrt0.net
確かに予約語なんていつ内部値が切り替わるかわからんし
それこそ今後メインストリームがUnicode一辺倒になってUWSCが内部処理含めてUnicode対応なんて事が起きたら
現状VK_の内部値がAsciiコードである前提で書かれてるソースなんて不具合でまくる予感しかしないもんな
初心者なりに変にテクニックに依らず素直なコード書けるってのも十分に才能ではあるわけだし

707:名無しさん@お腹いっぱい。
16/02/19 07:52:42.34 TWzjjF0u0.net
s=split("s=split( msgbox(s[0]+chr(34)+join(s)+chr(34)+s[2]) );eval(s[1])");eval(s[1])

708:名無しさん@お腹いっぱい。
16/02/19 11:27:58.73 IPiQDr2h0.net
Googleの画像認識/分類API、Cloud Vision APIが誰でも使える公開ベータへ
URLリンク(jp.techcrunch.com)
こういうのってuwscでもなんとかして使えるようにしたりできるのかな
やっぱり他の言語学ばなきゃダメか

709:名無しさん@お腹いっぱい。
16/02/19 12:05:56.90 2x32U0G20.net
それの使い方って、単に画像データをPOSTするだけでいいんじゃないの?

710:名無しさん@お腹いっぱい。
16/02/22 01:02:46.99 P6qbXDjw0.net
DIM hoge[2][2] = 0,1,2, 3,4,5, 6,7,8
たとえば、こんな感じで二次元配列を定義しまして
hoge[0][2] + hoge[1][2] + hoge[2][2] を求めたいんですけど
CALCARRAYで出すには、どう書けばいいんでしょうか?
試しに、MSGBOX( CALCARRAY(hoge[][2],CALC_ADD,0,2) )
としてみましたが、「21」と表示されました
どうも、hoge[2][0] + hoge[2][1] + hoge[2][2]を計算してるようです
CALCARRAYでは、無理ですか?

711:名無しさん@お腹いっぱい。
16/02/22 01:51:26.70 wzprd0m10.net
デバッグすればわかるけれど hoge[][2] では内部的に hoge[2] として扱われている
CALCARRAYを使って合計や平均を求めたいなら
行列から指定列を抽出した配列を返す必要がある
DIM hoge[][2] = 0,1,2, 3,4,5, 6,7,8
print CALCARRAY(GetColumnArray(hoge, 2), CALC_ADD)
Function GetColumnArray(array[][], column)
 rowLength = Length(array) - 1
 columnLength = Length(array[0]) - 1
 result = SAFEARRAY(0, rowLength)
 If 0 < rowLength And 0 < column And column <= columnLength Then
  For i = 0 To Length(array) - 1
   result[i] = array[i][column]
  Next
 EndIf
Fend

712:名無しさん@お腹いっぱい。
16/02/22 02:02:09.37 wzprd0m10.net
補足すると合計や平均等の単機能なら関数内で直接計算させた方が当然ながら速いからね
合計も欲しいし平均も欲しい等のケースなら一旦指定列の配列を変数に入れるためにこんな感じの関数を使った方が効率が良くなる

713:名無しさん@お腹いっぱい。
16/02/22 06:06:44.36 P6qbXDjw0.net
>>667
ありがとうございました

714:名無しさん@お腹いっぱい。
16/02/23 20:44:15.98 gO96bxCq0.net
上にもあったけどやっぱ配列系関数は説明が難しいなー
なんか通常の宣言と混ざる傾向にある
このヘルプ少し配列について改善できないかね
><変数>
> 変数に型はありません

715:名無しさん@お腹いっぱい。
16/02/23 21:03:47.15 iXx0mMI80.net
そこの補足で十分だと思うけれどなぁ
ローカル変数には宣言は要りません(Option指定で変更可:DIM 変数名)
多次元配列には宣言が必要: DIM 変数名[数]
(配列での初期値代入: DIM X[2]=1,2,3  配列数の省略可 DIM X[]=1,2,3 )
個人的には再利用するスコープが短いローカル変数は意図的に宣言しないようにしている
(宣言する=グローバル変数かモジュール変数か配列)

716:名無しさん@お腹いっぱい。
16/02/25 09:24:51.24 x6EjoBIB0.net
× 過去ログには有益情報の宝庫
○ 過去ログには有益情報がたくさんある
○ 過去ログは有益情報の宝庫

717:名無しさん@お腹いっぱい。
16/02/25 16:03:26.26 fkkSYKXG0.net
質問です
ループでフォルダ監視し待機、ファイルが送られたら動作実行しまた待機
これのプログラム終了時に1回だけ別の動作を実行させる方法無いでしょうか?
出来ればダイアログなしで
別のバッチファイルでも実行しUWSCの常駐終了後実行とか出来ればいいんですが
方法が分かりません、宜しくお願いします

718:名無しさん@お腹いっぱい。
16/02/25 16:08:19.62 ukh1Qs010.net
>>673
なにを悩んでるのかよくわからない
こんな感じじゃないの
while true
 if ファイルが北 then
  ファイルが来た時の処理
 endif
 if 終了アクション then
  最後の処理
  終了処理
 endif
wend

719:666
16/02/25 16:55:06.89 fkkSYKXG0.net
>>674
終了アクションは閉じる以外無いんですが
どうやって検知すれば良いのでしょうか?

720:名無しさん@お腹いっぱい。
16/02/25 17:09:05.93 ukh1Qs010.net
>>675
プロセスの終了で強制終了してるとかってこと?
使用状況によるけど、そういうスクリプトなら
終了用の空ファイルを送る、そのためのスクリプト組むとか

721:名無しさん@お腹いっぱい。
16/02/25 17:19:09.87 sdAeFe3E0.net
PRINT GET_CUR_DIR
DOSCMD("cd /d C:\Windows\System32")
PRINT GET_CUR_DIR

なんでカレントディレクトリが変わらないのだろう?

722:名無しさん@お腹いっぱい。
16/02/25 17:32:30.68 /glPAZis0.net
DOSCMD(チャイルドプロセス)のカレントディレクトリしか移動していないから
スクリプトでファイル操作する時はフルパス操作した方がいいよ

723:名無しさん@お腹いっぱい。
16/02/25 17:35:42.52 fkkSYKXG0.net
>>676
自己解決しました有難うございました
画面上にダイアログ無しでタスクバーからの終了です
方法は/nl でもう一個起動GETID

724:名無しさん@お腹いっぱい。
16/02/25 20:34:49.03 sdAeFe3E0.net
>>678
あぁ なるほど・・・
ggったらDOSCMDで出来るみたいに書いてあったけどダメなんだね
カレントディレクトリの変更はAPIか何か使わないとダメなのか
PRINT GET_CUR_DIR
DEF_DLL SetCurrentDirectoryA(string) : long: kernel32
IF !SetCurrentDirectoryA("C:\Windows\System32") THEN PRINT "error"
PRINT GET_CUR_DIR
こんな感じで問題ないかな?
助かりました。ありがとう♪

725:名無しさん@お腹いっぱい。
16/02/27 01:15:28.83 VvH2GmY20.net
画像A 画像B 画像C がランダムに現れて画像Aと画像Cが出た時は画像を左クリックする。
ググりながら下記内容にしたのですが、もっと処理速度と言うかクリックするまでの時間を早くするためには
どのようにすればいいでしょうか。
今回はじめてしたので間違いだらけな内容かもしれません。
k_id = GetID("k - Mozilla Firefox")
If k_id = -1 Then


726:ExitExit CtrlWin(k_id, ACTIVATE) px = Status(k_id, ST_X) + 42 py = Status(k_id, ST_Y) + 42 sx = 350 + px sy = 570 + py Sleep(1) While Status(k_id, ST_ACTIVE) Ifb ChkImg("AAA.bmp", 0, px, py, sx, sy) Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16) Endif Ifb ChkImg("CCC.bmp", 0, px, py, sx, sy) Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16) Endif Wend



727:名無しさん@お腹いっぱい。
16/02/27 01:20:46.23 OyTefc3Z0.net
Sleep(1)をSleep(0.1)にしたら?

728:名無しさん@お腹いっぱい。
16/02/27 01:29:14.52 f7poLGup0.net
chkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
とやったほうが良いんじゃないか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch