[ 掲示板に戻る ]

過去ログ閲覧モード

連投すみません、セレクトボックスで / きのこ
連投すみません、同じくセレクトボックスのことなのですが、

SELECT SLCTBOX(SLCT_BTN,0,"xxxx","あ","い","う","え","キャンセル")
CASE SLCT_1
MSGBOX("あ")
CASE SLCT_2
MSGBOX("い")
CASE SLCT_3
MSGBOX("う")
CASE SLCT_4
MSGBOX("え")
CASE SLCT_5
MSGBOX("キャンセル")
DEFAULT
MSGBOX("終了")
SELEND

だとうまくいくのですが、セレクトボタンではなくて、チェックボックスにするために1行目を
SELECT SLCTBOX(SLCT_CHK,0,"xxxx","あ","い","う","え","キャンセル")
のように書き換えた場合、ビット演算して返されるということなのですが、2行目以降はどのように書けば良いのでしょうか?

宜しくお願い致します。

No.2027 2016/01/08(Fri) 11:57:42

Re: 連投すみません、セレクトボックスで / きのこ
自己解決致しました。
皆様、どうもお騒がせいたしました。

No.2028 2016/01/08(Fri) 19:51:59
セレクトボックスのメニュー作成につきまして / きのこ
皆様方、お世話になっております。
SELECT SLCTBOX(SLCT_CMB,0,"xxx","xxx","xxx","xxx"・・・)でセレクトさせる、メニューボックス形式の入力方法があることは分かったのですが、年月日をセレクトボックスから選ぶようにしたと思います。

一つのメニューボックスの中に、UWSCのセレクトボックスを「年」・「月」・「日」の3個を横に並べてプルダウンメニューを配置することは可能でしょうか?
有識者の皆様、宜しくお願い致します。

No.2026 2016/01/08(Fri) 11:16:39
Windows10 バージョン1511(OS ビルド 10586.36)に上げたらCHKIMGが認識しなくなった / hm
Windows10 Pro(64bit)のUpdateで大型?バージョンアップらしき物を行ったら
バージョンアップする前はCHKIMGでちゃんと認識できていたのにバージョンアップしたら認識しなくなりました。

バージョンアップによって画像がズレたり、色が変わったのかと思い、画像を取り直してみたり
範囲を広げたりしてみましたが、どんな単純な画像も認識することが出来なくなりました。
SAVEIMGを使ってキャプチャした画像を使ってみましたがそれでも認識できませんでした。

このマシンでキャプチャーした画像を使って別の(ビルドが古いWin10 Home 32bit)マシンでは
認識することが出来ました。

Ver5.2.1.0 です。

画像が認識できるように何か他にできることはありますでしょうか?

No.2025 2016/01/08(Fri) 03:07:14
THREAD / Dolphin
ご教授頂きたいです。
今まで一つの窓で動作させていたスクリプトを複数窓で動作させたいです。動作させる複数のソフトは全て同じソフトです。
まず
MOUSEORG(GETID(”タイトル”),0)
以下今までのスクリプト

で絶対座標から相対座標にし、中の座標も相対座標用に書き換えました。
調べたところ、THREADという関数を使えば並列処理できるみたいなのですがいまいちこの関数の使い方がわかりません。

No.2015 2016/01/06(Wed) 16:19:57

Re: THREAD / stuncloud
threadは関数ではありません
threadを付けて関数を呼び出すとその関数が別のスレッドで実行されるようになります

// サンプル
thread sample("thread")
sample("main")

procedure sample(name)
 for i = 1 to 10
  print name + " " + i
  sleep(1)
 next
fend


どのような使い方を想定されているのかはわかりませんが、対象のウィンドウ毎にスクリプトを(別プロセスで)実行するという手もあります
それであれば今すでにあるものにそれほど手を加えなくても、複数対象に対して処理を行えます
(一つのスクリプトを複数回実行してもいいし、対象ウィンドウ毎に別名のスクリプトを用意して逐次実行してもいいと思います)

No.2017 2016/01/06(Wed) 17:35:56

Re: THREAD / hizi
stuncloudさん、ご丁寧に教えて頂きありがとうございます。
THREADは関数ではないのですね、失礼しました。
恥ずかしながら私プログラミングについて右も左も分からないようなレベルでして、頂いたサンプルのどこに私のスクリプトを書き込めばいいのか、他にも何をどうしたらいいのか分からないです。(具体的には()や(” ”)、” ”の中身などです。
使い方としては、今まで使っていた単一ウィンドウ用のスクリプトを順番にではなく、複数ウィンドウ同時に実行したいです。

No.2018 2016/01/06(Wed) 18:31:22

Re: THREAD / hizi
すいません、パソコンではなく携帯で書き込んだ為名前が変わっていますが質問者のDolphinです。
No.2019 2016/01/06(Wed) 18:33:28

Re: THREAD / stuncloud
>使い方としては、今まで使っていた単一ウィンドウ用のスクリプトを順番にではなく、複数ウィンドウ同時に実行したいです。
uwsファイルをUWSC.exeに関連付ければ、同じスクリプトを複数実行することも出来ます
対象のウィンドウの数だけスクリプトを複数回実行する方向で検討されたほうが良いと思います
id = exec("対象ソフトのexe名") としてスクリプトから対象ソフトを起動してidを取得するようにすれば、スクリプトを実行した数だけ対象ソフトを操作出来ます

threadについては、スクリプトへの理解が深まってから改めて取り組まれると良いと思います
今はまだその時期ではなさそうですので

No.2022 2016/01/07(Thu) 12:15:15

Re: THREAD / hizi
度々お世話になっております。お返事の方ありがとうございます。
そちらの方法では複数同時にではなく複数順番にしか実行できない、ということでしょうか?

おっしゃる通りですね。
ここから先はまずプラグラミング言語の基礎を学んでから進むべきなようです。

No.2023 2016/01/07(Thu) 20:54:29
選択項目の取得について / abcmouse
環境はWin8.1 64bit、WPFアプリケーションでGETSLCTLST関数が機能しないようです。
コンボボックスなどでの選択されている項目を取得したいのですが、何か良い方法はありますでしょうか?
よろしくお願いいたします。

No.2005 2016/01/04(Mon) 12:29:58

Re: 選択項目の取得について / umiumi
当方の環境では問題を確認できません。(Win8.1、WPFアプリ)
番号(第ニ引数)を指定していない場合は 番号を指定してください。
UWSCは最新版を使用してください。(Ver5.2.1)
ClkItem関数にて選択できるか確認してください。
何か特殊なダイアログでないか確認してください。

No.2010 2016/01/05(Tue) 23:22:09

Re: 選択項目の取得について / abcmouse
umiumiさま、ご返事ありがとうございます。
Ver5.2.1で、番号指定など色々試したんですが、やはり戻値は空白です。(ちなみに、メモ帳でスクリプトを試すと正常に取得できることを確認しました)
ClkItem関数については正常に動けます。
特殊なダイアログは出ていません。

No.2014 2016/01/06(Wed) 13:01:44

Re: 選択項目の取得について / umiumi
当方では問題を確認できません。
これ以上は実際にそのアプリを確認しないと何とも答えられません。

No.2021 2016/01/07(Thu) 00:22:09
chkimgでエラーが出る / ちんくる
whileで無限ループさせ、mouseorgを使ってあるウインドウに対してchkimg、btnさせているのですが、300〜400回目辺りでエラーが発生してしまいます。
1ループ毎にウインドウが自分で再起動するようになっており、一応毎回getid/mouseorgしていますが、それ以外に特別なことはしていません
KansuCall:Access violation at address 0063A630 in module 'UWSC.exe'. Read of address 00000000 17行目: AAA=CHKIMG("...\Desktop\a.bmp")

No.2012 2016/01/06(Wed) 01:30:40

Re: chkimgでエラーが出る / umiumi
環境(OS)と確認できるスクリプトの提示をお願いします。
UWSCは最新版を使用してください。(Ver5.2.1)

たまに出る程度なら Try - Except処理にて無視する方法もあるでしょう。

No.2020 2016/01/07(Thu) 00:21:02
条件分岐 / hizi
パターン1だった場合は画像1がランダムに表示され、パターン2だった場合は画像2がランダムに表示されます。どちらも表示直後は同じ座標をクリックすれば良いので画像認識後の処理は同じものとなっています。なのでREPEATの終了条件はその座標をクリックした場合、としました。
問題は画像1だった場合と画像2だった場合では、同じ座標をクリックした後の処理が違うのですがここから更にどのように分岐させればよろしいでしょうか?
また、このスクリプトにミスなどないでしょうか?
妙な言い回しをしている部分などあるかと思いますが、どうか回答の方よろしくお願い致します。

REPEAT
IFB chkimg(画像1)
BTN(LEFT.CLICK.950.760)
ELSEIF chkimg(画像2)
BTN(LEFT.CLICK.950.760)
ENDIF
UNTIL BTN(LEFT.CLICK.950.760)

No.2007 2016/01/05(Tue) 12:48:08

Re: 条件分岐 / stuncloud
>REPEATの終了条件はその座標をクリックした場合、としました。
BTN関数は何も返さない(説明は省きますがその結果FALSEになってしまう)のでこれではループを抜けません

>更にどのように分岐させればよろしいでしょうか?
一旦結果を変数に入れておいて、それでまた分岐させれば良いでしょう

>このスクリプトにミスなどないでしょうか?
引数の区切りはピリオドではなくカンマです(これだと実行時にエラーになるはずです)

以上を踏まえるとこんな感じ
repeat-untilループは無限ループにして、chkimg成功時にbreakするようにしました

REPEAT
 IFB chkimg(画像1)
  pattern = 1
  BTN(LEFT,CLICK,950,760)
  break
 ELSEIF chkimg(画像2)
  pattern = 2
  BTN(LEFT,CLICK,950,760)
  break
 ENDIF
UNTIL FALSE

select pattern
 case 1
  // パターン1の処理
 case 2
  // パターン2の処理
selend

No.2008 2016/01/05(Tue) 13:53:09

Re: 条件分岐 / hizi
大変分かりやすく説明して頂きありがとうございました。
私にも理解することができました。
もう一つ分からないことがあるのですがREPEATを使って画像1を認識するまで動作1を繰り返す、というマクロを作ったのですが、動作1を繰り返している間にも数回画像2が表示され画像2が表示された場合座標(946,767)をクリックしなければいけません。REPEATの1つ前の行にFOR文を使って試してみたのですがエラー動作せず、もしよろしければご教授頂けませんでしょうか?

No.2009 2016/01/05(Tue) 16:28:02

Re: 条件分岐 / stuncloud
public 画像1処理済み = FALSE

thread 動作1()
repeat
 if chkimg(画像2) and ! 画像1処理済み then
  btn(LEFT,CLICK,946,767)
 endif
until 画像1処理済み

procedure 動作1()
 repeat
  // 動作1
 until chkimg(画像1)
 画像1処理済み = TRUE
fend

No.2013 2016/01/06(Wed) 09:46:42

Re: 条件分岐 / hizi
ありがとうございました!
No.2016 2016/01/06(Wed) 16:51:02
実行までの待機時間の一括変更 / 石井
UWSC初心者です。
スクリプト内の全てのMMV(x,y,[ms])のms、つまり実行までの待機時間を一括で0.7倍に変更したいのですが何か方法はないでしょうか?

No.2004 2016/01/04(Mon) 10:40:46

Re: 実行までの待機時間の一括変更 / stuncloud
msの部分に「基準値 * 倍率」と書いておいて、あとは冒頭で倍率に任意の値を代入したらいいと思います

--------------------------
//倍率 = 1 // 変更なし
倍率 = 0.7 // 0.7倍にする

mmv(0, 0, 1000 * 倍率)
mmv(100, 100, 3000 * 倍率)
mmv(200, 200, 800 * 倍率)
--------------------------

あるいは、元のスクリプトを0.7倍にした値でまるっと書き換えてしまうとか?

--------------------------
target = "target.uws" // 変更対象のファイルを指定

fid = fopen(target, F_READ)
script = fget(fid, F_ALLTEXT)
fclose(fid)

re = createoleobj("VBScript.RegExp")
re.pattern = "mmv\(\s*\d+,\s*\d+,\s*(\d+)\)"
re.global = TRUE
matches = re.Execute(script)

for match in getoleitem(matches)
 newmmv = replace(match.value, match.submatches[0], match.submatches[0] * 0.7)
 script = replace(script, match.value, newmmv)
next

fid = fopen(target, F_WRITE)
fput(fid, script)
fclose(fid)
--------------------------

No.2006 2016/01/04(Mon) 13:51:31

Re: 実行までの待機時間の一括変更 / Liners
関数自体を置換えるという手も…後で調整しやすいですしね。

fp = FOPEN("sample.uws", F_READ or F_WRITE)
Fput(fp, Replace(FGET(fp, F_ALLTEXT), "MMV(", "_MMV(") + "<#cr>Procedure _MMV(x, y, ms)<#cr> MMV(x, y, ms * 0.7)<#cr>Fend", F_ALLTEXT)
FCLOSE(fp)

No.2011 2016/01/06(Wed) 00:29:30
getactiveoleobjを使ってのエクセルの操作 / loki
すでに複数開かれているエクセルの指定のブックのセルから値をコピーし、IE等に貼り付けたいと思っています。
そこでとりあえず値の取得までしようと以下のコードで実行してみたのですが、com_errorが出てしまいます。

EXCEL = GETACTIVEOLEOBJ("Excel.Application","Spread")
EXCEL.visible = True
ATAI = EXCEL.RANGE("A1").value
PRINT ATAI

一行目の時点でエラーが出ているのですが何が原因なんでしょうか?

宜しくお願い致します。

No.1994 2015/12/29(Tue) 23:38:13

Re: getactiveoleobjを使ってのエクセルの操作 / 森
1行目でエラーが発生しているので、間違い箇所は1行目です。
エクセルの場合、GETACTIVEOLEOBJの第2引数はファイル名ですが、
指定を間違っていないでしょうか?
※拡張子は無くても大丈夫なようです。

No.1995 2015/12/30(Wed) 15:15:11

Re: getactiveoleobjを使ってのエクセルの操作 / loki
返信ありがとうございます。

ファイル名なので最初は○○.xlsxで指定していましたが、一部で問題ないみたいなので現在のような形になっています。
また、エラーの状況ですがあるファイルではマクロ開始と同時に1行目にcom_errorがでますが、もうひとつのファイルでは、本来新たにブックは開かずにする操作のはず?ですが新たにブックが開き「○○.xlsxは編集中のためロックされています。使用者は○○です。読み取り専用で開いてください。」といったメッセージが表示されます。

No.1996 2015/12/30(Wed) 15:37:17

Re: getactiveoleobjを使ってのエクセルの操作 / 森
いろんなパターンのエラーが出ているのですね。
エラーが違えば原因も対策も違うので、別々に切り分けて考えていく必要があります。
一つずついきましょう。

まずは、以下のスクリプトを実行してcom_errorが出るパターンを見つけてください。
com_errorが出るファイルをリネーム(ファイル名の変更)してみたり、
com_errorが出ないファイルを、com_errorが出るファイルと同じファイル名にリネームしてみたりすると、
ファイル名に原因があるのか、ファイルの内容に問題があるのか、
スクリプトの書き間違いなのかなど、原因が浮き出てくると思いますよ。

test.uws
-----------------------------------
EXCEL = GETACTIVEOLEOBJ("Excel.Application","ファイル名")
-----------------------------------

それが解決してから、
本来新たにブックは開かないはずなのに新たにブックが開いてしまう問題へ進みましょう。

No.1997 2015/12/30(Wed) 17:17:35

Re: getactiveoleobjを使ってのエクセルの操作 / loki
原因を探るために、ファイル名が日本語だとか、xlsxとxlsbとの違いとかファイルの保存場所とか色々と試していたんですが同じファイルでもやるたびに反応が変わって今一原因がわかりません。
とりあえずわかったこと上げると、
 ・createoleobjでなら問題なく値の取得ができる
 ・createoleobjで開いたものをそのままにし、getactiveoleobjで操作はできる
 ・createoleobjで開いたものをそのままにし、別のファイルを開きgetactiveoleobjで操作しようとしてもcreateoleobjで開いたもので動作してしまう。(このときcom_errorが出ることもある)
 ・エクセルを全て閉じ任意のファイルを開きその名前でgetactiveoleobjを使うと先ほど書いたように新たにブックが開き「編集中のためロックが・・・」となる
 ・getactiveoleobjで第2引数なし(省略できますよね?)で行うと「com_error:操作を利用できません」となる

一応こちらの環境はwin10 64bit,excel 2013,uwsc 5.2.1です

何が原因なのか予想も付かない状況なので起きた事を箇条書きにしました。

No.1998 2015/12/30(Wed) 19:16:31

Re: getactiveoleobjを使ってのエクセルの操作 / routa
私の環境でもCOM_ERRORが出ます。以前は正常に機能していたはずなのですが。
XLOPEN関数の方なら問題ありません。
OS:Windows10, Excel:Office2007

No.1999 2015/12/30(Wed) 22:07:35

Re: getactiveoleobjを使ってのエクセルの操作 / umiumi
確認しました。
対処します。

No.2001 2015/12/31(Thu) 01:11:17

Re: getactiveoleobjを使ってのエクセルの操作 / loki
とりあえずこちらの操作ミスとかではなかったみたいで良かったです。

回答してくれた方々ありがとうございました。

No.2003 2015/12/31(Thu) 12:04:02
アンダースコア / トリビア
ご教示いただければと思い、書き込みさせていただきます。

SCKEYやKBDで「_」を打つ方法はありますでしょうか。

No.1989 2015/12/29(Tue) 16:32:05

Re: アンダースコア / ひろりん
KBD(VK_OEM_102)
もしくは
KBD(226)
でどうでしょうか

No.1990 2015/12/29(Tue) 18:02:04

Re: アンダースコア / リキュール
以下も参考になると思います。
http://homepage3.nifty.com/ic/help/rmfunc/vkey.htm

No.1991 2015/12/29(Tue) 19:03:04

Re: アンダースコア / トリビア
ひろりんさん、リキュールさん
ありがとうございます。ご提示のURLも存じておりました。

結局は、低レベル記録で見つけました。
大変失礼致しました。

No.2000 2015/12/31(Thu) 00:18:17
全1170件 [ ページ : << 1 ... 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 ... 117 >> ]