自動化ツールUWSC使いよ集まれ16at SOFTWARE
自動化ツールUWSC使いよ集まれ16 - 暇つぶし2ch533:名無しさん@お腹いっぱい。
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",ほにゃほにゃ)
とやったほうが良いんじゃないか?

729:名無しさん@お腹いっぱい。
16/02/27 01:35:13.96 VvH2GmY20.net
>>682
>>683
ありがとうございます、変更してみます。

730:名無しさん@お腹いっぱい。
16/02/27 02:04:58.57 VvH2GmY20.net
>>683

While Status(k_id, ST_ACTIVE)
Ifb ChkImgchkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16)

と変更したところ画像Aクリックしない 画像Cクリックするになりました。
試しに以下に変更したところ逆の結果になりました
Ifb ChkImgchkimg("ccc.bmp",ほにゃほにゃ) or chkimg("aaa.bmp",ほにゃほにゃ)

後の記述のみ実行されるようです。

自分でもググッて解決策を探してみます。

731:名無しさん@お腹いっぱい。
16/02/27 02:14:04.68 +U0TNGIH0.net
chkimgでorする場合は
最初にOPTION SHORTCIRCITを宣言しとかなダメよ
前者が存在しても後者の判定してまうから

732:名無しさん@お腹いっぱい。
16/02/27 02:14:41.87 +U0TNGIH0.net
というか>>683はそこまで教えてあげないと

733:名無しさん@お腹いっぱい。
16/02/27 02:55:14.02 mDOHEmLU0.net
これが終わったらこれ、みたいな単純な流れ作業は書けるようになったので
すごろくのようにあっちこっちに飛ぶ条件を付けていこうと思うんですが
文字だけだと順番が訳わからなくなりそうなんですがやってれば目が慣れてくるものですか?

734:名無しさん@お腹いっぱい。
16/02/27 03:03:43.45 VvH2GmY20.net
>>686

ありがとうございます。
OPTION SHORTCIRCITを宣言したところ
Ifb ChkImgchkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
での処理ができるようになりました。

>>682
>>683
>>686
みなさんのご教示により
最初に記載した物より、早くなりました。
低スペPCの為、どこまで出来るか分かりませんが
色々調べながらやってみます。

735:名無しさん@お腹いっぱい。
16/02/27 03:31:25.12 DVc62XNO0.net
>>689
もしwin7使ってるならデスクトップコンポジションを切るとchkimgが速くなるよ

736:名無しさん@お腹いっぱい。
16/02/27 13:19:18.71 EORKr9mx0.net
画像Aと画像Cが出た時は画像を左クリック
and?or? ???? ってなってるんだけど

737:名無しさん@お腹いっぱい。
16/02/27 13:21:01.50 Iow3jdwl0.net


738:名無しさん@お腹いっぱい。
16/02/27 13:38:04.37 38mQ0onS0.net
両方を満たすなら当然ANDだけど
少し上の短絡評価の話で混乱しているのかな?

739:名無しさん@お腹いっぱい。
16/02/27 15:10:47.45 IJ0wxpKe0.net
AかCが、なら or だろうけど
AとCが、という質問なんだから and じゃなきゃおかしい。
でも流れを見た感じでは質問の方がおかしかったっぽいね。

740:名無しさん@お腹いっぱい。
16/02/27 16:05:27.86 +U0TNGIH0.net
いや>>681のコードまでちゃんと見ればorだなってわかるだろ
読解力の問題
ANDに取れるような書き方が悪い!とか言っちゃう奴は
読解力のないバカか理屈バカのどっちか

741:名無しさん@お腹いっぱい。
16/02/27 16:28:31.65 sQuDImeT0.net
卵があったら牛乳うんぬんかんぬん

742:名無しさん@お腹いっぱい。
16/02/27 16:53:15.04 f6jdCZ8k0.net
windowsマクロテクニック読みつぶしたから2冊目買ったわ
(´・ω・`)

743:名無しさん@お腹いっぱい。
16/02/27 16:57:01.43 f7poLGup0.net
文字列を数値に変換するのはVAL
数値を文字列にするのはformatでいいのかな?

744:名無しさん@お腹いっぱい。
16/02/27 17:11:37.28 jnFT48H20.net
sleep(20+random(120))
20秒+0~119秒の待ち時間ってこれでいい?20秒の部分は固定だよね?

745:名無しさん@お腹いっぱい。
16/02/27 17:25:32.73 IJ0wxpKe0.net
>>695
>>681を見ても、質問文が間違ってるのかコードが間違ってるのかわからないだろう。

746:名無しさん@お腹いっぱい。
16/02/27 18:45:03.26 +U0TNGIH0.net
>読解力のないバカか理屈バカのどっちか

って言ってるのにまだ言う
どんだけだよ

747:名無しさん@お腹いっぱい。
16/02/27 20:47:36.55 jnFT48H20.net
>>699
これあってる?

748:名無しさん@お腹いっぱい。
16/02/27 21:07:31.07 tsk8CpEJ0.net
>>702
どこに疑問がある?
試せば判ることを何故聞く?

749:名無しさん@お腹いっぱい。
16/02/27 22:31:03.41 1L8PKm630.net
もう一週間以上も悩んで解決出来ないんだけど
CLKITEMでクリックするそのアイテムが無かった時の条件分岐って出来ない?

CLKITEM(GID,"閉じる")とかにすると閉じるが無かった場合、待ち時間指定が無いから
そこで長い間止まってしまう
これを1秒とかで判定して条件分岐するにはどうしたらいいの?

750:名無しさん@お腹いっぱい。
16/02/27 23:00:05.73 Iow3jdwl0.net
>>704
戻値 = CLKITEM( ID, アイテム名, [種別, On/Off, 番号] )
戻値
TRUE:正常、 FALSE:処理不能

ヘルプくらい見ろや

751:名無しさん@お腹いっぱい。
16/02/27 23:30:25.92 gFrWrIbO0.net
>>703
ランダム値は試せばわかるって性質のもんじゃないだろw

752:名無しさん@お腹いっぱい。
16/02/27 23:38:07.11 38mQ0onS0.net
値が範囲内に収まるか気になるなら期待値以外になればNG表示する関数を数千回ループさせてみてるとか
スリープの単位がヘルプの内容と同じか気になるなら前後でミリ秒表示してみるとか
仕様が気になった時は検証可能な単位にどうやって分解するか考えよう

753:名無しさん@お腹いっぱい。
16/02/27 23:38:09.23 sQuDImeT0.net
print 0.1+random(3)みたいに
小さい桁で試すとかいくらでも試しようはあんだろ

754:名無しさん@お腹いっぱい。
16/02/27 23:39:50.44 1L8PKm630.net
>>705
ACC系だとFALSEが返ってこないで、そこで動作が止まっちゃうんだよ
一瞬で判定してくれるならいいんだが

755:名無しさん@お腹いっぱい。
16/02/27 23:54:14.26 jnFT48H20.net
>>707
^3^

756:名無しさん@お腹いっぱい。
16/02/27 23:59:06.69 gFrWrIbO0.net
ランダムだと外見的には何回ループしても、多分仕様通りといえるが100%仕様通りと断言できなくなるだろ
ソース見りゃ一目瞭然だけど、テストの結果だけ見るとそういう事になるじゃん。

757:名無しさん@お腹いっぱい。
16/02/28 00:20:30.70 9QYQdQG/0.net
そりゃその通りだが、少なくとも今回の話題である>>699の言う固定だのは試せば確実に分かることだろうが

758:名無しさん@お腹いっぱい。
16/02/28 00:56:26.92 qefict4b0.net
そこもランダム値と足されちゃうから試してわかるのは100%確実ではないなw
そして今のところYES/NOで答えられる質問にだれも答えられていないという・・・
>>699
いい、はず

759:名無しさん@お腹いっぱい。
16/02/28 01:03:30.83 9QYQdQG/0.net
だから固定値は0.1にすりゃわかるって言ってんだろアホ
少しは頭使えや

760:名無しさん@お腹いっぱい。
16/02/28 02:00:59.24 pR7C6fW20.net
>>706
仕様のないものならそうだけど
期待値があって、それにあってそうかどうかを確認するだけなんだから
100万回でも1000万回でもrandom()の引数に対して充分な回数試せばいいだろ
仕様があってるか否かを確認するわけじゃないんだから

761:名無しさん@お腹いっぱい。
16/02/28 02:08:27.06 qefict4b0.net
1000万と1回目で想定外値がでる可能性が微レ存

762:名無しさん@お腹いっぱい。
16/02/28 02:28:46.68 0r4UbGuu0.net
>>716
しつこいぞ

763:名無しさん@お腹いっぱい。
16/02/28 02:38:57.53 9QYQdQG/0.net
的外れにも程があるな阿呆は

764:名無しさん@お腹いっぱい。
16/02/28 02:40:28.35 qefict4b0.net
いや707は言うとおりだけど708は論理的じゃないしさ

あと一応>>711の名誉のために言っておくと自分はそのヒトとは別人です

765:名無しさん@お腹いっぱい。
16/02/28 03:55:09.54 +XXpVUCC0.net
random関数にバグがあるかも知れないからとか
そもそもコンピュータには本物の乱


766:数の生成は不可能だとか そういう話をしてるんだろうか?



767:名無しさん@お腹いっぱい。
16/02/28 04:18:12.48 8+yUHWxH0.net
自分か運用する上で許容できる範囲内かどうかという話なんだけれどね

768:sage
16/02/28 07:54:55.15 k7lnu1y6g
ここで質問して良い内容でしょうか。
ロードス島戦記オンラインにて、KBD関数が動作しません。
原因、対策等わかりましたら教えてください。

769:名無しさん@お腹いっぱい。
16/02/28 11:33:31.44 pR7C6fW20.net
>>716
自分のにたいしてだと思うから一応答えておくと
それは単なるバグで元の質問とは無関係でしょ

770:名無しさん@お腹いっぱい。
16/02/28 12:59:00.66 f5PR4wTV0.net
元質問の人明らかにrandom関数の仕様を理解してないところから来てるから…
バグとそうでないものの違いを判別できない。
だから何回ループしてもその結果をもって仕様通りに動いていると結論付けられない。

771:名無しさん@お腹いっぱい。
16/02/28 13:04:53.34 9oz8zZQ80.net
実はPCを揺らすと数値が飛ぶバグがあるんだ

772:名無しさん@お腹いっぱい。
16/02/28 14:07:12.58 fiqkpaBc0.net
落下中のPCはランダムを返してくれないとかなりそうだなおい。

773:名無しさん@お腹いっぱい。
16/02/28 14:27:31.94 blrfAobm0.net
実は念を送るとランダムの確率が変動するんだ

774:名無しさん@お腹いっぱい。
16/02/28 15:35:04.40 WeWO61jV9
Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
実際の待ち時間が20+120秒以上にならないという保証は無いよ

普通はそこまで気にする必要が無いってのも言うまでも無い

775:名無しさん@お腹いっぱい。
16/02/28 15:34:52.99 Xg5e+H4y0.net
UWSCは大昔のBASICみたいに、何度走らせてもRANDOM関数は同じ乱数と思ってた。

BASICでは、RANDOMIZEでタイマーを引数にしてたなぁ。

776:名無しさん@お腹いっぱい。
16/02/28 15:38:07.16 n2+v+wZb0.net
Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
実際の待ち時間が20+120秒以上にならないという保証は無いよ

普通はそこまで気にする必要が無いってのも言うまでも無い

777:名無しさん@お腹いっぱい。
16/02/28 19:51:10.87 5dU2/tOb0.net
>>730
> Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
> 実際の待ち時間が20+120秒以上にならないという保証は無いよ
そんな厳しい精度で動かす言語じゃないからね。Windows自体がRTOSじゃないからネイティブアプリでも
保証はないし。

778:名無しさん@お腹いっぱい。
16/02/28 20:34:52.25 J1sXa2fC0.net
ごめん単純に使い方が間違ってないかって質問だったごめんなさい

779:名無しさん@お腹いっぱい。
16/02/29 01:14:12.41 kLHNktmf0.net
式による設定のところで7時から19時までの間に9分間隔で実行て出来ます?

780:名無しさん@お腹いっぱい。
16/02/29 02:57:03.79 Y5wKBi2d0.net
GETTIME()でG_TIME_HHを取得して
7時から19時までの間は実行させて
9分間隔はSLEEP(540)でいけるのではないかと

781:名無しさん@お腹いっぱい。
16/02/29 03:01:49.33 kLHNktmf0.net
>>734
すいません
初心者すぎてよくわからないです

例えばこういう場合だと○月○日の7時からのみになってしまうんですよね
(YMDNN>=7894680) AND (YMDNN<=7894980) AND ((YMDNN MOD 60)=0)

毎日7時からというその方法はどう書けば良いのでしょうか

782:名無しさん@お腹いっぱい。
16/02/29 03:11:25.69 vc3n0bkN0.net
>>735
書いてあることそのままやればいいと思うけどな
GETTIME()を実行するとG_TIME_HHに実行時の時間が格納される
あとは7とは19と比較すればいい

GETTIME()
If (G_TIME_HH>=7) and (G_TIME_HH<19) then
やりたいこと
EndIf

783:名無しさん@お腹いっぱい。
16/02/29 03:20:04.69 kLHNktmf0.net
>>736
やりたい事が複数あって時間間隔も色んなパターンがある場合もそれで出来ますか?

784:名無しさん@お腹いっぱい。
16/02/29 03:40:29.09 vc3n0bkN0.net
>>737
条件式変えてやれば大体の動きはできると思うけど…
とりあえず自分で書いてみないと覚えないぞ

785:名無しさん@お腹いっぱい。
16/02/29 03:44:48.44 kLHNktmf0.net
>>738
ちょっと色々と試してみます
どうもです

786:名無しさん@お腹いっぱい。
16/02/29 05:02:19.00 UwM6ts+X0.net
ヘルプも読まずに拾ったマクロの改造法を聞いてるだけっぽいな

787:名無しさん@お腹いっぱい。
16/02/29 05:23:18.45 kLHNktmf0.net
いやもう初心者なんで全然わからんのですよ

788:名無しさん@お腹いっぱい。
16/02/29 06:20:04.43 W4Lx+MiB0.net
初心者っていちいち書くな わかってる

789:名無しさん@お腹いっぱい。
16/02/29 09:56:53.47 S3AkKIbC0.net
なんでも只で手に入ると思うなよw

プログラムの基礎教養があればネット上の情報だけで理解できるが、
それがなければ情報の取捨選択すらできずやりたいことにたどり着けない
1冊くらいは金出して本を読め

790:名無しさん@お腹いっぱい。
16/02/29 10:13:32.76 7awlWggQw
式による設定 7時から19時までの間に9分間隔で実行
HH>=7 AND HH<19 AND (YMDNN MOD 9)= 0

791:名無しさん@お腹いっぱい。
16/02/29 11:07:56.89 W4Lx+MiB0.net
それよりプログラマ雇えといいたい

792:名無しさん@お腹いっぱい。
16/02/29 11:11:22.54 OC88kjRQ0.net
プログラムの素養もネットで身に着けられるし
プログラムの素養が必要って情報もこうやって手に入ってるし
やりとりしてれば2chでのイラつかせるワードも分ってくるし
地道に調べて試してけばいいと思うよ

793:名無しさん@お腹いっぱい。
16/02/29 12:08:54.45 zgYAM+0i0.net
質問してる程度の知識ならすぐにネットで手に入る
だから「初心者なのでわからん」が通用しない
もう少し自分で調べて、具体的にわからない部分が出たらもう一度質問しに来れば良いよ

794:名無しさん@お腹いっぱい。
16/02/29 12:22:07.58 yBnnbdV70.net
初心者さんはまずフローチャート書くか日本語で処理手順を箇条書きにするようにしたらええのよ
んでヘルプなり解説サイトの熟読
いきあたりばったりでスクリプトに手を入れようとするとわけわかんなくなって当たり前よ(´・ω・`)

795:名無しさん@お腹いっぱい。
16/02/29 12:32:25.62 3ZfsBzX30.net
動作がおかしくなったのでプリントでログを確認していたらpublicが原因と分かりましたがいまいち納得ができないです
SLCTBOXやpublicの動作を確認しても問題ないと思うのですが、どうしてpublicをつかったらダメなんでしょうか?

SELECT SLCTBOX(SLCT_BTN, 0,"画面の大きさ設定","デフォルト画面","50%画面")
CASE SLCT_1
public size = 100
print "size(100)=" + size
CASE SLCT_2
public size = 50
print "size(50)=" + size
SELEND
print "size=" + size

この状態のプリントは
size(100)=50
size=50
2つのpublicをはずすと
size(100)=100
size=100
となります。

796:名無しさん@お腹いっぱい。
16/02/29 12:38:11.72 3ZfsBzX30.net
すいません
プリント結果はSLCT_1を選んだ時です

797:名無しさん@お腹いっぱい。
16/02/29 12:45:54.58 Hitpgwgs0.net
CASEに入ってからPUBLIC使ったら見た目通りの順序じゃなくなるよ
実行時にPUBLICを付けた行は先頭に移動するイメージなのです

そのような使い方をしたければPUBLIC宣言は空宣言か0代入をSELECT前に行って下さい
(つまり移動しても大丈夫な所に置く)

798:名無しさん@お腹いっぱい。
16/02/29 12:47:46.09 i1OgRjUe0.net
publicはプログラム実行時に真っ先にに値を読み込むから最後に書いたpublic size = 50が優先されてるんじゃないの
同じ変数を使用する場合でも宣言は基本的に一回だけ

public size
SELECT SLCTBOX(SLCT_BTN, 0,"画面の大きさ設定","デフォルト画面","50%画面")
CASE SLCT_1
size = 100
print "size(100)=" + size
CASE SLCT_2
size = 50
print "size(50)=" + size
SELEND
print "size=" + size

799:名無しさん@お腹いっぱい。
16/02/29 12:50:36.85 7tqwHv410.net
OPTIONと同じやね
後勝ちになる
つーか、同じ変数を何度もPUBLICで宣言なんてするもんじゃない

800:名無しさん@お腹いっぱい。
16/02/29 12:57:09.80 3ZfsBzX30.net
>>751-753
ありがとうございます納得できました
なるべく簡潔に書こうと思っていたのですが良くない書き方だったみたいですね
グローバル変数は極力使わないようにとよく目にするので気をつけます

801:名無しさん@お腹いっぱい。
16/02/29 17:14:21.74 7awlWggQw
>>744 自己レス
式による設定 7時から19時までの間に9分間隔で実行
毎日7時からカウントスタートする式
HH>=7 AND HH<19 AND ((HH*60+NN-(7*60)) MOD 9)= 0

802:名無しさん@お腹いっぱい。
16/02/29 19:14:05.70 7awlWggQw
>>704
if -1 <> CHKBTN(GID,"閉じる") then CLKITEM(GID,"閉じる")

803:名無しさん@お腹いっぱい。
16/02/29 20:24:39.97 7awlWggQw
>>709
URLリンク(www.uwsc.info)
CLKITEM関数のCLK_ACC指定にてダイアログを出すと閉じるまで制御が戻らない  #N15
  CLK_LEFTCLK を付加してください。
  CLKITEM(id, "xxx", CLK_ACC or CLK_LEFTCLK)

804:名無しさん@お腹いっぱい。
16/03/01 00:51:55.84 Hw/6RB5N0.net
基本的な操作でお恥ずかしいのですが、どうしても自力で解決できなかったので
ヒントだけでもお教えください。
Win 7 Professional 64 bit + IE 11での操作です。

テーブル内にダウンロード用リンクが複数(*および青文字のアルファベット部)あり、
それらを自動でひとつずつダウンロードしようとしています。
URLリンク(s1.gazo.cc)

画面の状態までは持ってこれたのですが、どうしても赤枠で囲った保存(S)を
押すことが出来ません。サンプルコードも試してみたのですが、
理解不足かIE, OSのバージョン違いなのか、上手く動作させられませんでした。
クリックすると緑枠部に一瞬新しいタブが出来ているのでそこが関係あるのか、
或いはCLKITEM部が間違っているとは思うのですが……。

A = 0
Repeat
DLLTEXT = IE.document.links[A].innertext
   IfB DLLTEXT <>

805:名無しさん@お腹いっぱい。
16/03/01 01:30:04.42 Hw/6RB5N0.net
切れてしまったのでコード部だけ貼り直します。すみません。

A = 0
Repeat
DLLTEXT = IE.document.links[A].innertext
   IfB DLLTEXT <> "" Then
     IE.document.links[A].click()
     SLEEP(10)
     CLKITEM(GETID("Internet Explorer","#32770"),"保存(S)", CLK_ACC)
   EndIf
A = A + 1
Until A = 100


DLLTEXT~部は、ソースを確認したところ見えないリンクがあったので、それを回避しようと思い付け加えました。

長々とすみません。よろしくお願いします。

806:名無しさん@お腹いっぱい。
16/03/01 04:46:22.39 mSZ5heBH0.net
IEの "ファイルのダウンロード" にて "保存" ボタンが反応しない  #N23
URLリンク(www.uwsc.info)

807:名無しさん@お腹いっぱい。
16/03/01 07:01:07.94 pMN1suyz0.net
エクセルのマクロでリンクを取り出してファイルに書き出して、ロダに食わせるほうがいんでないのかね

808:名無しさん@お腹いっぱい。
16/03/01 07:34:10.51 uRkQmwxK0.net
>>760-761

ありがとうございます。
#N23は試してみたのですが、上手く出来なかったのでWin7だからかIE11だから無理なのかと
思っていたのですが、何か間違えていたのかもしれません。

エクセルマクロの方は考えてもいませんでした。
あまりに手間取るようなら別の方法を試したほうがいいですね……。

もう少し自分でやってみます。ありがとうございました。

809:名無しさん@お腹いっぱい。
16/03/01 07:53:15.84 mSZ5heBH0.net
であればクリックに必要なタイトル、クラス名を調査用のスクリプトを書いて調査したり
開発環境にあるSPY++をつかって調査したりすると良いよ

問題点は
保存ボタンがあるウインドウ(ポップアップ)のIDが取得できていない
保存ボタンのアイテム名が正しくない
のどちらかだからね

後、リンクのクリックまで手動でやってみて
保存ボタンのクリックだけスクリプトで可能かも評価が必要

失敗するなら

IEの操作(COM)にて、ダイアログが出ると動作が停止する  #N25
URLリンク(www.uwsc.info)

810:名無しさん@お腹いっぱい。
16/03/01 07:57:24.35 mSZ5heBH0.net
あ、ごめん

リンククリック(手動)、保存ボタンクリック(スクリプト)→成功
リンククリック(スクリプト)、保存ボタンクリック(スクリプト)→失敗

なら

IEの操作(COM)にて、ダイアログが出ると動作が停止する  #N25
URLリンク(www.uwsc.info)

の対処も必要かも

811:名無しさん@お腹いっぱい。
16/03/01 08:07:35.16 w83/qWlj0.net
ようわからんが
win7のie11で下を走らせて置いてダウンロードダイアログだしたら普通に押してくれるが

while true
if CLKITEM(GETID("Internet Explorer"),"保存(S)", CLK_ACC) then break
sleep(1)
wend


#32770これいらんのとちゃうんか

812:名無しさん@お腹いっぱい。
16/03/01 22:50:42.13 HDjL1sAH+
>>763-764
親切にありがとうございます。
SPY++はVisualStudio?を持っていないので用意できなかったのですが、
類似のuuSPYを使用して調べたところ
親の"IEFrame"→子"Frame Notification Bar"→孫"DirectUIHWND"というクラス名の
ダイアログだと分かったので、そこから調べて操作できるようになりました。
問題点の洗い出し方も勉強になりました。これでもう少し自分で調べて解決できるように
なれそうです。

>>765
サンプルまで用意して頂きすみません。
実際に動かしてみたのですが、やはりIDが取得できていないのか
押してくれず……。

お二人とも親切にありがとうございました。

813:749
16/03/02 01:27:17.46 41jBzZAb0.net
>>763-764
一応動作させることが出来ました。
結果的には、保存ボタンのウィンドウIDが取得できていなかったようです。
(クラス名IEFrameだと思っていたのですが、ダイアログは別の名前でした)
SPY++はVisualStudio?を持っていないので用意できなかったのですが、
uuSPYという類似ソフトで調べられました。
SPY++的なソフトの存在(というか問題の洗い出し方?)すら知らなかったので勉強になりました。
丁寧にありがとうございました。

>>765
サンプルまで提示して頂き、すみません。
流してみたのですが、やはり反応せず……
ダイアログが出た後もそのまま動いていったので、
動作停止したわけでもなさそうなんですが……
ともかく、ありがとうございました。

814:名無しさん@お腹いっぱい。
16/03/02 20:36:33.34 TfJohTOi0.net
A.bmpがあったとき 
Aからx+30、y+30の場所にB.bmpがあったときのみC.bmpを押す

画像範囲について検索しましたが画面全体から範囲を指定するみたいですし
Aはいろいろな場所に現れます Bは複数現れます
Aから相対座標で検索範囲指定するためにはどうすればいいのですか?

815:名無しさん@お腹いっぱい。
16/03/02 20:39:40.47 yBkd0HNE0.net
>>768
【ヘルプより引用】
座標情報は配列変数 ALL_IMG_X[], ALL_IMG_Y[] に格納(配列はゼロから)

B探してから配列変数をコピー
ループさせながら相対範囲指定でAを探して
あればCをクリックしたら良いんじゃないかな

816:名無しさん@お腹いっぱい。
16/03/02 21:39:50.37 TfJohTOi0.net
ありがとうございます いろいろ試してみます

817:名無しさん@お腹いっぱい。
16/03/03 12:25:37.00 u+vEEjvS0.net
IFB CHKIMG("A")
ax=G_IMG_X;ay=G_IMG_Y
 IFB CHKIMG("B",0,ax+29,ay+29,…)
IFB CHKIMG("C")
BTN(LEFT,CLICK,G_IMG_X+9,G_IMG_Y+9)
ENDIF
ENDIF
ENDIF

格納がよくわかんないし雑だけどこんな感じは

818:名無しさん@お腹いっぱい。
16/03/03 12:50:46.44 Ck6IE5Sq0.net
PCからスマホの内臓ストレージにファイルやフォルダを転送したいです。
アイテムには日本語が含まれているため、DOSCMD+ADBでは文字化けしていたので、
[MultiByteToWideChar][WideByteToMultiChar]を組み合わせましたが、
半角スペースや特定の文字のため、転送ができませんでした。

何か回避策はないでしょうか?

819:名無しさん@お腹いっぱい。
16/03/03 14:01:05.13 0xlIg63T0.net
よく知らんから適当いうけど、コマンドプロンプトのshift_jisをUTF-8にするとかで解決しない?

820:名無しさん@お腹いっぱい。
16/03/03 14:38:58.59 o8n0++8T0.net
UWSCってどう?
ブラウザとか制御しにくい気がするんだけど

821:名無しさん@お腹いっぱい。
16/03/03 16:23:03.08 Ck6IE5Sq0.net
> 759
それも試しました。
CHCPでSHIFT-JISからUTF-8に変換して、書き込みに行ったんですが、
UTF-8化した文字列が受け付けませんでした。

822:名無しさん@お腹いっぱい。
16/03/04 02:14:39.26 EA8iP2810.net
すみません、助けてください
bluestacks uwscをつかって自動化しようとしてるのですが
uwscのクリックを認識?してくれません
マウスでツムツムの操作は普通にできます。
bluestacksの代わりにエクセルを起動させておく(画面に表示)とクリックも認識してくれています。
非アクティブの問題かとおもいアクティブ化もいれてみましたがだめでした
助言お願いいたします

823:名無しさん@お腹いっぱい。
16/03/04 02:49:01.44 sp+52hH20.net
UWSCが使いないアプリもある
bluestacksはそれ
以上

824:名無しさん@お腹いっぱい。
16/03/04 04:06:59.33 32k0gAq70.net
genymotionで散々やったけど無理だったよ
ウィンドウは掴めるけど内部idが掴めない

825:名無しさん@お腹いっぱい。
16/03/04 09:01:58.98 lSRUIbNn0.net
>>776
絶対座標は?
両方ともプロパティ-互換性-管理者として実行を試す
他にもgoogleでいろいろ試す
ダメならダメ

826:名無しさん@お腹いっぱい。
16/03/04 17:10:22.64 qcabtBIu0.net
プログラミングって具体的な目標が無いと向上しないな

827:名無しさん@お腹いっぱい。
16/03/04 19:28:46.89 0avFt52T0.net
MOUSEORG関数でMORG_DIRECTを指定するとCHKIMG関数とBTN関数の座標に
ズレが発生します。
どうせればズレを解消または補正できますか?

828:名無しさん@お腹いっぱい。
16/03/04 20:28:03.15 Cx1nPm1Z0.net
>>781
たぶん、ウィンドウ座標とクライアント座標のズレが原因だから
ウィンドウ座標を基準にすれば一致すると思う。

829:名無しさん@お腹いっぱい。
16/03/04 22:31:12.71 6AjLUgCP0.net
>>782
ウィンドウ位置を(0,0)に合わせて起動してもズレます

830:名無しさん@お腹いっぱい。
16/03/04 22:53:16.26 ojY0v8Jg0.net
>>783
たいていウィンドウには枠があるでしょ
タイトルバーとかウィンドウを広げたり縮めたりする細い線
アレが影響してると思われるから
ウィンドウ位置を00にしても・・・

831:名無しさん@お腹いっぱい。
16/03/04 22:54:21.95 1DETh6nk0.net
これはさすがにネタだろw
uwsc以前のWindowsの基礎知識の問題だぞ

832:名無しさん@お腹いっぱい。
16/03/04 23:02:35.51 Cx1nPm1Z0.net
>>783
MOUSEORG( ID, MORG_CLIENT ) と MOUSEORG( ID ) で比較してみて

あと、CHKIMG で取得する座標は画像の左上になるけど、
検索画像と座標の間にどのようなズレがあるのか書いてね。

833:名無しさん@お腹いっぱい。
16/03/05 04:26:25.45 TP9s+Xc10.net
>>786
MOUSEORG(id)→(260,100)
MOUSEORG(id, MORG_CLIENT)→(260,125)
MOUSEORG(id,MORG_DIRECT)→(100,400)
こんな感じですが、なぜかMORG_DIRECTはUWSC本体の位置を移動すると座標が変わります

ちなみにコードは↓これです。
id = GetID("Android Screen Monitor")
MOUSEORG(id,MORG_DIRECT)
num = 1
name = "BMP\画像" + FORMAT( num, 1 ) + ".bmp"
While TRUE
if !chkimg(name) Then continue
x=G_IMG_X
y=G_IMG_Y
BTN( LEFT, CLICK, x, y , 200)
sleep( 10 )
if num >= 7 Then num = 0
num = num + 1
name = "BMP\画像" + FORMAT( num, 1 ) + ".bmp"
WEnd

834:名無しさん@お腹いっぱい。
16/03/05 04:31:42.39 TP9s+Xc10.net
MOUSEORG(id)とMOUSEORG(id, MORG_CLIENT)の座標逆でした

835:名無しさん@お腹いっぱい。
16/03/05 05:02:22.36 PQgaMRcF0.net
>>787
URLリンク(www.vuzix.jp)
この画像と比較すると、横の枠がない状態なので
タイトルバーの幅


836:の分だけ MORG_CLIENT のありなしで違う状態ですね。 MORG_DIRECT の方は訳が分かりませんね。 原因を調べるには、MORG_DIRECT を指定した状態で SAVEIMG することです。 画面が崩れて見えると思います。 画面が崩れて見えるだけで、クリックが正常に行えるなら、 MOUSEORG をその都度実行して CHKIMG のときは MORG_DIRECT なし BTN のときは MORG_DIRECT あり とかにすればいいと思います。



837:名無しさん@お腹いっぱい。
16/03/05 23:00:40.60 +UaXZBac0.net
WinnyでMP3ファイルを手に入れたのだが、10曲が1つのMP3ファイルになっている。
これを1曲ずつ10個のMP3ファイルに分けたいのだがどうしたらいいのかね?

838:名無しさん@お腹いっぱい。
16/03/05 23:04:45.09 t6t79+190.net
うーん

わかんない!

839:名無しさん@お腹いっぱい。
16/03/06 00:14:59.81 dCUjX7lH0.net
>>790
torスレに回答してくれてる人がいるぞクソ虫

840:名無しさん@お腹いっぱい。
16/03/06 09:47:42.18 TvpTaFVp0.net
>>790
.zipをつけて解答

841:名無しさん@お腹いっぱい。
16/03/06 10:49:16.69 zGk8lpZo0.net
>>790
手動でやればいいんじゃない?

842:名無しさん@お腹いっぱい。
16/03/06 11:37:41.69 RRLqddKE0.net
10個のmp3のアーカイブならともかく、10曲が一つのmp3になってるなら
編集ソフトで切り出すしかないのでは

843:名無しさん@お腹いっぱい。
16/03/06 12:04:50.72 WY+6IsJt0.net
なんでおまえら答えてんの

844:名無しさん@お腹いっぱい。
16/03/07 14:52:09.82 9LHTjHFn0.net
関数の呼び出しで参照引数の初期値代入とか出来ないんでしょうか?
あらかじめ先に初期値代入するしかない?

abc(hoge=111)
print hoge

procedure abc(var hoge)
 hoge = hoge + 100
fend

845:名無しさん@お腹いっぱい。
16/03/07 15:09:06.92 WbyHlW0e0.net
なんじゃそれ

abc(111)

でいいだろ

846:名無しさん@お腹いっぱい。
16/03/07 15:12:10.38 WbyHlW0e0.net
ああ、そんでhogeを続きの処理で使いたいのか
それで動かないんならできないんだろ
大人しく先に代入しとけよ
1行増えるだけじゃん
どうしてもそうしたい理由でもあんの?

847:名無しさん@お腹いっぱい。
16/03/07 15:51:15.35 67LYGWDp0.net
>>797
hoge = 111; abc(hoge); print hoge //1行で済んで行も短い

huga = bcd(112); print huga //でもなんでこうしないの?
print bcd(113)

procedure abc(var hoge)
 hoge = hoge + 100
fend

function bcd(hage)
 result = hage + 150
fend

848:名無しさん@お腹いっぱい。
16/03/07 15:58:21.83 9LHTjHFn0.net
上で挙げてるのはただの例です。
実際は参照引数が多く、引数の一部だけ初期値代入したいのと
print文は無いですね。

849:名無しさん@お腹いっぱい。
16/03/07 16:09:04.11 gjVyQnvH0.net
はげ+150本 = そんなに増えていませんよ

850:名無しさん@お腹いっぱい。
16/03/07 20:04:53.77 tjYcm4Q90.net
それは参照渡しを使うことが間違いなんじゃね?

851:名無しさん@お腹いっぱい。
16/03/07 20:20:19.36 tjYcm4Q90.net
参照引数ってのは値じゃなくてメモリの番地とかそういうものを入れてるんじゃなかったっけ?
だから参照引数に値は代入できない

852:名無しさん@お腹いっぱい。
16/03/07 21:49:34.48 Yt8oL/UZ0.net
そもそも一度も代入も宣言もしていない変数は使えないよ

dim hoge
abc(hoge , 111)
print hoge
sleep(10)

procedure abc(var hoge , hoge0 = hoge)
hoge = hoge0 + 100
fend

これなら動くけど最初のdim文外すと怒られるから意味が無い

853:名無しさん@お腹いっぱい。
16/03/07 22:27:49.67 9LHTjHFn0.net
一つの関数で複数の変数を変更するのだけど、その関数より前には使わない
結果受け取り専用の引数で

a=0;b=0;c=0;…10個くらい   //まあこれが無意味な文に思えてならない
abc(a,b,c,…)

procedure abc(var a, var b, var c,…)
 …
fend

854:名無しさん@お腹いっぱい。
16/03/07 22:43:28.84 YgJHqyxo0.net
>>797を見ると受け取り専用とは見えなかったけど
単にその目的なんだったら>>805の人が書いてるように

Dim a,b,c...
abc(a,b,c...)
でいいんじゃないの?

855:名無しさん@お腹いっぱい。
16/03/08 0


856:9:25:26.60 ID:X39hgh8s0.net



857:名無しさん@お腹いっぱい。
16/03/08 11:36:49.32 mdQ0PQ+40.net
>>808
正にそんな感じ…

参照引数が多いのは外部からのデータ取得を一気にやるせいで
その関数の内部は整理されてるんだけど。

最初は小規模なスクリプトで変数の管理とか適当で、後から書き加えていったから
今はこんなはずじゃなかったorzって状態になってて後悔してる。

858:名無しさん@お腹いっぱい。
16/03/08 14:04:27.07 EYyC3Yny0.net
質問です。
MOUSEORGを使用したバックグラウンド操作で、
マウスオーバーする方法ってありますかね?

マウスオーバーして出てくる画像の認識をしたいんだけどできぬ

859:名無しさん@お腹いっぱい。
16/03/08 15:29:09.82 X39hgh8s0.net
それはバックグラウンドのウィンドウにマウスオーバーイベントを
発生させろと言っているに等しいんだが…
これ自動化ツールよ?
まずあなたが手動で隠れたウィンドウにマウスオーバーしてみなさいよ!
とんちかな?

860:名無しさん@お腹いっぱい。
16/03/08 15:47:28.50 YrarT/t10.net
一休さんのトラの屏風の事だな

次の方どうぞ

861:名無しさん@お腹いっぱい。
16/03/08 15:52:30.08 uEQeFD2u0.net
mmvのこといってるんじゃない?

862:名無しさん@お腹いっぱい。
16/03/08 15:58:04.94 /957NIFT0.net
煽りたいだけで答えられないならちょっと黙ってろよ
俺は黙る

863:名無しさん@お腹いっぱい。
16/03/08 16:05:17.57 CELrwcnT0.net
>>811
どういう理屈だよ
元々UWSCで出来るバックグラウンド操作は手動で出来ないでしょ

864:名無しさん@お腹いっぱい。
16/03/08 16:25:16.15 XRfaJMaM0.net
バックグラウンド操作でもマウスオーバーイベントが発生するかどうかという
その対象ソフト側の問題なんだから、UWSCの質問じゃないぞ。

865:名無しさん@お腹いっぱい。
16/03/08 16:54:18.27 oQSRIGCR0.net
なんかレベル下がったなここ

866:名無しさん@お腹いっぱい。
16/03/08 17:08:25.81 X39hgh8s0.net
>>815
バックグラウンド操作は元々のUWSCのコンセプトPC操作の自動化を
あくまで拡張したものであって、
出来なくて当然のことが出来るようになった機能だよ。
それをあたかも出来て当然のように認識されても困るわな。
まぁこんなソフトが無料で使えるだけでも奇跡的なんだが。
マウスオーバーイベントをマウスオーバーせず強制的に
外から発生させることが可能なAPIが公開されてるならば、
もはやマウスオーバー画像を直接ぶっこ抜くことも出来るんじゃね?
自動操作というよりアプリハッキングだわな。
まぁこれであっさり出来ますよとかコードが出てきて
俺が逆立ちするハメになるかもしれんがw

867:名無しさん@お腹いっぱい。
16/03/08 17:29:48.80 d7jVEpko0.net
Win32ApiのSendMessage(PostMessage)等を使ってイベントを発生させる方法はあるにはあるよ
それをアプリハックと呼ぶかは置いておいて

重要なのは作業中のマウスは普通に存在し続けているって事なので
バックグラウンドだと資源衝突が発生するのでやっぱり安定しないのよ

平たく言うとスクリプトがここにマウスがあるよとした直後に
本当のマウス位置に更新されるのでここにはマウスは無いよとなる

だからよく分からなければ別PC用意して最前面でやる
仮想環境が分かるならそっちの最前面でやれ(内部的なマウス位置が存在するので資源衝突しない)がFAQとな�


868:チてるのよ



869:名無しさん@お腹いっぱい。
16/03/08 17:39:00.04 OiSIw5XY0.net
VBScript で一般的なキー入力のエミュのやり方
URLリンク(msdn.microsoft.com)
"2"のキーをクリック
> WshShell.SendKeys "2"

ドライバ→Windows→アプリってのを
自動化ソフト→アプリって短縮しただけでしょ。
アプリに直接送る方が簡単だけど(それで動くとは言ってない)

UWSCが選ばれる理由は画像認識と操作の記録再生が簡単ってところだよ。
別に自動操縦が特別ってことはない。(特許を取ってるところはある)

870:名無しさん@お腹いっぱい。
16/03/08 17:41:37.94 EYyC3Yny0.net
>>811-817
無知でごめんな
>>818-819
詳しく教えてくれてありがとう
やっぱり仮想環境構築か物理的にもう一台PC用意するのが手っ取り早いってことですね
仮想環境構築してやってみます

871:名無しさん@お腹いっぱい。
16/03/08 17:43:25.86 bSkm1Om50.net
1日調べてわからなかったので質問させてください。
-----------------------------------------------------------------

THREAD スレッド(1)
THREAD スレッド(2)
sleep(200.0)

PROCEDURE スレッド(i)

ID[i] = GETID(GET_FROMPOINT_WIN)
中略
MOUSEORG (ID[i])

CALL 関数.uws

REPEAT
sleep(0.1)
UNTIL CheckColorScope(124,374,

872:名無しさん@お腹いっぱい。
16/03/08 17:44:19.61 bSkm1Om50.net
UNTIL CheckColorScope(124,374,"R",35,10)
BTN(LEFT,CLICK,80,108,100)

FEND


この状態でスレッド2側がスレッド2側の相対座標のCheckColorScopeを行ってくれず
スレッド1側の相対座標をCheckColorScopeしてしまいます。
ボタンクリックやPeekColor単体、関数の中身をバラしてREPEAT~UNTIL間に
組み込むとスレッド2側の相対座標のCheckColorScopeを行います。
関数を組み込んだ状態でスレッド2側の相対座標をCheckColorScopeさせるには
どうしたらいいでしょうか。

873:名無しさん@お腹いっぱい。
16/03/08 18:06:11.90 mdQ0PQ+40.net
ユーザー作成関数を組み込み関数であるかのように書かれても…

874:名無しさん@お腹いっぱい。
16/03/08 18:10:36.84 mdQ0PQ+40.net
あとそれスレッド1とスレッド2とほぼ同時に走るから実質同じものかと

875:名無しさん@お腹いっぱい。
16/03/08 18:16:33.76 X39hgh8s0.net
たしかUWSCのスレッドは、スレッド無いから呼び出したユーザー定義関数を、
そのスレッド内で実行しなかったような気が?
引数だけで算数して結果を返すだけのようなリエントラントな関数ならいいけど、
Windows上のリソースにアクセスするようなのは期待した動きをしなかった気がする。
試しに、自作関数を一時的にスレッドで呼び出すプロシージャ内に展開してやってみて。

876:名無しさん@お腹いっぱい。
16/03/08 18:32:29.53 bSkm1Om50.net
>>824 申し訳ないです。自作関数の中身です。処理は一緒ですが、相対座標だけをずらして
並列で処理させてようとしてうまくいかず、、、
Function CheckColorScope(PosX, PosY, Element, BaseValue, Scope)
Select Element
Case "R"
ElementValue = PeekColor(PosX, PosY,COL_R)
Case "G"
ElementValue = PeekColor(PosX, PosY,COL_G)
Case "B"
ElementValue = PeekColor(PosX, PosY,COL_B)
Default
Result = False;
exit;
SelEnd
Ifb (ElementValue >= BaseValue - Scope) And (ElementValue <= BaseValue + Scope) Then
Result = True;
Else
Result = False;
EndIf
Fend


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