[ 掲示板に戻る ]

過去ログ閲覧モード

Whileループで停止 / SHamil
あるソフトの画面上で右クリックして、
test.bmp
という画像があらわれたときに
右クリックしてから左クリック
の処理を行う
ということを画像が現れなくなるまでWhileで繰り返しています。
この一連の操作を外側のループで30回行っていますが、
大体15回目でソフトの方が異常終了してしまいます。
While文の処理を行わない場合は30回行うことができます。
何か解決策をご存知でしたら教えていただけないでしょうか?
また、ほかにお気づきの点がございましたらご指摘いただけるとありがたいです。
よろしくお願いいたします。

For i = 1 to 30
BTN(RIGHT,CLICK,800,300,300)
test=CHKIMG("Test.bmp")

While test = "True"
BTN(RIGHT,CLICK,800,250,300)
BTN(LEFT,CLICK,850,500,300)

BTN(RIGHT,CLICK,800,300,300)
test=CHKIMG("test.bmp")
Wend
Next

No.377 2014/11/06(Thu) 22:27:48

Re: Whileループで停止 / すがり
sleepを適当に入れて見たらどうでしょう。
No.378 2014/11/06(Thu) 23:39:57
saveimgで保存したbmp画像がchkimgでfalseになる / saveimgくん
uwsc開発ありがとうございます。
シェアウェア版購入して良かったです。

題名の通りなのですが、
SAVEIMGで保存した画像をCHKIMGで確認するとfalseになります。
これは仕方がないのでしょうか?

No.361 2014/11/04(Tue) 16:03:56

Re: saveimgで保存したbmp画像がchkimgでfalseになる / umiumi
状況によりけりでしょう。
ゲームなどでは難しいパターンもあるでしょう。

No.372 2014/11/06(Thu) 01:20:00
(No Subject) / test
マウス右ボタンが押されてる間右クリック連打というスクリプトを書きたいのですが
GetKeystateはあってもそれのマウスボタン版の関数がないようですが実現可能ですか?

No.370 2014/11/05(Wed) 14:11:49

Re: / stuncloud
>マウス右ボタンが押されてる間右クリック連打
だと実現が難しそうだったので中央ボタン押しこみ中に右クリック連打に変更しました

while TRUE
 fukidasi("右ボタン連打中")
 while getkeystate(VK_MBUTTON)
  btn(RIGHT, CLICK)
  sleep(0.05)
 wend
 fukidasi("中央ボタン押すと右ボタン連打")
 repeat
  sleep(0.05)
 until getkeystate(VK_MBUTTON)
wend

btn(RIGHT, CLICK) や btn(RIGHT, UP) でgetkeystate(VK_RBUTTON)がfalseになっちゃうので
>マウス右ボタンが押されてる間右クリック連打
は実に悩ましい…実際できるんですかね?手段が思いつきません

No.371 2014/11/05(Wed) 17:37:41
ダブルクリック / kazita
こちらのサイトにあるサンプルなのですが
これを ドロップではなく、ダブルクリックに変えるにはどうしたらよいでしょうか。
理由は別の編集ソフトで試してみたところ、ドロップでは画像が表示されないためです。

folder = "C:\Users\xxxx\Pictures"
paintID = exec("mspaint.exe") // ペイントの起動
n = GETDIR(folder, "*.jpg") // jpgファイル名の取得
for i = 0 to n-1
file = GETDIR_FILES[i]
DROPFILE(paintID, folder, file) // 1つずつドロップ
Balloon((i+1)+"/"+n+": " +file)
sleep(5) // 5秒単位で次へ
next
よろしくお願いいたします。

No.365 2014/11/04(Tue) 19:43:18

Re: ダブルクリック / stuncloud
ダブルクリックということは、画像ファイルはその「別の編集ソフト」に関連付けしてあるということでよいでしょうか?
そうであれば

folder = "C:\Users\xxxx\Pictures"
for file in getdir(folder, "*.jpg")
 doscmd("<#DBL>" + folder + "\" + file + "<#DBL>", TRUE)
 sleep(2)
next

で、開けるかと思います

あるいはdoscmdのところを
exec("<#DBL>C:\Program Files\編集ソフト\EXE名.exe<#DBL> <#DBL>" + folder + "\" + file + "<#DBL>")
として対象ソフトにファイル名を渡すようにするとか

No.368 2014/11/05(Wed) 11:04:05

Re: ダブルクリック / kazita
ありがとうございました。
とてもわかりやすくご提示していただき感謝いたします。

No.369 2014/11/05(Wed) 13:10:00
文字を自動でクリック / 吾妻
昨日初めて「UWSC」の存在を知ったど素人の質問をお許しください。

自動でyahooにアクセスし
「ヤフオク」という文字を自動でクリック
という作業を自動化したいのですが

IE = CreateOleObj("InternetExplorer.Application")
IE.visible = True
IE.Navigate("http://www.yahoo.co.jp/")

でサイトにアクセスできるのはわかったのですが、
「ヤフオク」という文字(画像ではありません。テキストでリンクされていものです)
を自動でクリックさせる方法で詰まっております。
どうかご教授いただけないでしょうか?

No.348 2014/11/02(Sun) 15:07:31

Re: 文字を自動でクリック / センチ
IELINK( IE, "ヤフオク")

でどうでしょうか?

No.351 2014/11/03(Mon) 01:18:01

Re: 文字を自動でクリック / 吾妻
センチ様
非常にシンプルでわかりやすく助かりました。


ひとつ問題が生じました。
スクロールしないと、表示されない場合、
クリック対象となる文字の検索範囲をしていするか
自動でスクロールすることは可能でしょうか?

画像をクリックする場合、CHKIMGなどの場合は、範囲が指定できるようですが、
文字の場合もできるのでしょうか?

No.356 2014/11/03(Mon) 22:48:02

Re: 文字を自動でクリック / umiumi
IELINK関数はスクロール外でも処理できます。
画面更新待ちの処理を入れていないのでは。
IELINKの前に画面更新待ちの処理を入れてください。
repeat
 Sleep(0.2)
until (! ie.busy) and (ie.readyState=4)

No.359 2014/11/04(Tue) 00:56:13

Re: 文字を自動でクリック / 吾妻
umiumi様

本当にありがとうございました。
最高です。
UWSCに出会えてよかったです!

これからは、自分で勉強していきたいと思いますが
地道な勉強となりますので、
なにかとお世話になると思いますが、
その節は、なにとぞよろしくお願いいたします。

No.360 2014/11/04(Tue) 11:41:25
フォームの取得 / 初心者を脱したい
EXCEL2010です。

VBAのAuto_openイベントで開かれるユーザフォームを取得したいのですが
できません。

Auto_OpenイベントはUWSCで無視されるようなので、

EX = CreateObejct("Excel.Application")
EX.Visible = True
EX.WorkBooks.Open("Auto_OpenでUseForm1が開くファイル.xlsm")
EX.run("Auto_Open")

と呼び出して、ユーザフォームが開くところまでは確認しています。

ただ、このユーザフォームがGETID関数で取得できないのです。
キャプションの文字列は合っているはずです。


ユーザフォームのプロパティ等の影響で取得できない場合があるのでしょうか?
もしそうであれば、解決策をご教授願いたいです。

No.346 2014/11/02(Sun) 03:04:47

Re: フォームの取得 / 初心者を脱したい
umiumi様
お願いします(_ _)

No.349 2014/11/02(Sun) 22:43:14

Re: フォームの取得 / umiumi

当方では特に問題を確認できません。
全てのウィンドウを表示して確認してみたらどうですか。
for n=0 to GETALLWIN()-1
 print STATUS(ALL_WIN_ID[n], ST_TITLE) +","+ STATUS(ALL_WIN_ID[n], ST_CLASS)
next

No.358 2014/11/04(Tue) 00:52:33
PUBLIC変数について / センチ
PUBLIC変数について質問があります。


If FALSE then PUBLIC n = 0

このようなスクリプトを実行すると、以下のようなエラーメッセージが表示されます。

正しくない変数名です: PUBLIC N 1行目: IF FALSE THEN PUBLIC N = 0


また、以下のようなスクリプトを実行すると、逆にエラーメッセージが表示されません。
IfB FALSE
PUBLIC n = 1
MsgBox("")
EndIf
n = n + 1
MsgBox(n)


これは仕様でしょうか?

No.350 2014/11/03(Mon) 01:13:45

Re: PUBLIC変数について / umiumi
仕様です。
No.357 2014/11/04(Tue) 00:51:09
UWSファイルの新規作成 / YMK
拡張子uwsのファイルを作ることが多いので、
Windowsの右クリックメニューの新規作成に空のuwsファイルを追加したいんですが、上手くいきません。

Regeditで「HKEY_CLASSES_ROOT\.uws」配下に「ShellNew」キーを追加して、
文字列「NullFile」を作成しました。

XP時代はこれで拡張子uwsの新規作成ファイルが出来たのですが、Win8.1では出来ませんでした

No.354 2014/11/03(Mon) 13:04:57

Re: UWSファイルの新規作成 / stuncloud
サインアウトや再起動を何度かしてるとそのうち出来るようになったりしますね、なんですぐに出来ないのかよくわかんないですけど
No.355 2014/11/03(Mon) 19:48:43
マルチモニタ情報について / しろまさ
コントロール パネル\すべてのコントロール パネル項目\ディスプレイ\画面の解像度  で設定確認。
左A X=-1280 Y=0 W=1280 H=1024
右@ X=0 Y=0 W=1366 H=768
右@のほうに「このディスプレイが現在メイン ディスプレイです」と表示されています。

> モニタ番号: モニタ番号を指定 (メインモニタは 0)
とuwscヘルプには書いてありますが、
私の環境では 0 で取得できるのは、左Aのサブディスプレイの情報となっております。

メインモニタはどのように判断されているのでしょうか?
或いはどうすれば、コンパネ情報のメイン ディスプレイを判断して
正しい情報を取得することができるでしょうか?

Print " X=" + MONITOR(0, MON_X) _
  + " Y=" + MONITOR(0, MON_Y) _
  + " W=" + MONITOR(0, MON_WIDTH) _
  + " H=" + MONITOR(0, MON_HEIGHT) _
  + "<#CR>" _
  + " X=" + MONITOR(1, MON_X) _
  + " Y=" + MONITOR(1, MON_Y) _
  + " W=" + MONITOR(1, MON_WIDTH) _
  + " H=" + MONITOR(1, MON_HEIGHT)

No.340 2014/10/30(Thu) 16:27:14

Re: マルチモニタ情報について / umiumi
MONITOR(モニタ番号, MON_PRIMARY)
にて True が返されるのがメインモニタです。これで確認して見てください。
環境により メインモニタ=0 ではないかも?

No.345 2014/10/31(Fri) 22:47:17

Re: マルチモニタ情報について / しろまさ
ご返答ありがとうございます。
月曜になったら会社のPCにて確認致します。

No.347 2014/11/02(Sun) 14:11:18

Re: マルチモニタ情報について / しろまさ
MONITOR(1, MON_PRIMARY) にてTRUEが返されました。
これで即座にメインモニタ判断・操作が出来そうです。
ありがとうございました。

No.352 2014/11/03(Mon) 11:07:15
SELECT に与えた式の値を保持した変数が欲しい。 / しろまさ
umiumiさんにちょっとした要望です。(可能であれば)
例えば、変数が SELDAT として、こんな使い方がしたいです。

Dim List[] = "a","b","c"
SELECT POPUPMENU(List)
  CASE -1; MSGBOX("未選択でした"); Exit
  DEFAULT; MSGBOX(List[SELDAT] + "が選択されました")
SELEND

No.328 2014/10/27(Mon) 17:09:28

Re: SELECT に与えた式の値を保持した変数が欲しい。 / 森
先に変数で受けておくというのではダメなんでしょうか?

Dim List[] = "a","b","c"
SELDAT = POPUPMENU(List)
SELECT SELDAT
  CASE -1; MSGBOX("未選択でした"); Exit
  DEFAULT; MSGBOX(List[SELDAT] + "が選択されました")
SELEND

No.329 2014/10/27(Mon) 21:30:57

Re: SELECT に与えた式の値を保持した変数が欲しい。 / stuncloud
これは僕もときどき欲しいと思うことがあります
>先に変数で受けておくというのではダメなんでしょうか?
まったくもってその通りなんですが、その手間を惜しみたいことがままあるんですよねー…
(なんかダメっぽいことを言ってる自覚は、あります)

SELECT POPUPMENU(List) AS SELDAT
とかだとわかりやすくていいですかね (asで意味通るかな?)

No.332 2014/10/28(Tue) 17:48:42

Re: SELECT に与えた式の値を保持した変数が欲しい。 / しろまさ
> 先に変数で受けておくというのではダメなんでしょうか?
いえ、それが現時点の使用法なのは前提ですよね。

> これは僕もときどき欲しいと思うことがあります
管理上なるべく短く、なるべく見やすく作りたいですよね。大量のModuleをクロス利用させてるとなおさらです。

CASE で値判断してるから内部的にあるんだろうなーという推測で、Public的にして欲しいという要望です。

No.336 2014/10/29(Wed) 09:34:23

Re: SELECT に与えた式の値を保持した変数が欲しい。 / しゅん
// 言語を作成した経験から推測すると、、、ちょっと面倒じゃないかなー、と思ったり。
// 現状では、こんな感じでしょうか。
// 最初関数名をTeeとかにしてましたが、見えない方が良さそうなのでこうしました。

Dim seldat
Dim List[] = "a","b","c"
SELECT '(POPUPMENU(List), seldat)
  CASE -1; MSGBOX("未選択でした"); Exit
  DEFAULT; MSGBOX(List[SELDAT] + "が選択されました")
SELEND


FUNCTION '(r, var o)
  RESULT = r
  o = r
FEND

No.342 2014/10/30(Thu) 23:50:11

Re: SELECT に与えた式の値を保持した変数が欲しい。 / しろまさ
あ、面倒なんですか?ならいいです^^
言語作成の苦労は解りませんし、一行増やせばいいだけですので。
参考コード、ありがとうございました。

No.344 2014/10/31(Fri) 07:58:11
全941件 [ ページ : << 1 ... 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 ... 95 >> ]