|
while 1 KBD(VK_F9,CLICK,400) IFB !CHKIMGX(ImageName, WindowID, x1, y1, x2, y2, d, td, tc) else MSGBOX("????????????????") break endif Wend
というようなwhile処理を書いています。 画像認証自体は成功しているのですが、 認証してbreakしているにも関わらずF9キーが押されます。
速度を遅くすれば正しい動きをしますが、 400msのループでは余計にキーが押されてる状態です。
早いから止まらずもう一周しちゃうなんて、 プログラムとして致命的じゃないですか?
|
No.845 2020/05/31(Sun) 18:42:54
|
☆ Re: Whileの挙動がおかしい。 / stuncloud |
|
|
|
> 早いから止まらずもう一周しちゃうなんて、 > プログラムとして致命的じゃないですか? そうですね、困りますね
僕はchkimgxを使ったことがないのでそちらを疑うということはできませんから、そこは問題ないものとします ご質問の状況ですとmsgboxのダイアログを閉じた後にF9が押された、ということで間違いはないでしょうか そうでなかった場合はchkimgx成功後にどのようにF9が押されたことを確認したのかを教えて下さい
それと以下のようにコードを修正した場合に現象を回避できるかも試してみてください
KBD(VK_F9,CLICK,400) while 1 IFB !CHKIMGX(ImageName, WindowID, x1, y1, x2, y2, d, td, tc) KBD(VK_F9,CLICK,400) else MSGBOX("????????????????") break endif Wend
僕もwhileの挙動について調べてみようと思います もし問題があった場合はumiumiさんでないと根本の解決ができませんが、コードの書き方でどうにかできるのであればそのノウハウを残しておきたいですし
# かなり前のバージョンですが、ループとtryの組み合わせで致命的な不具合があったのを思い出しますね
|
No.846 2020/05/31(Sun) 22:34:35
|
|
☆ Re: Whileの挙動がおかしい。 / かぢゅ |
|
|
|
端折っているところはあります。 下記全コードになります。
私も勘違いなのかなーと思うんですがね・・・。
------------------------------------ CALL ChkImgX.uws
in = "256.bmp" wid = 0 x1 = 1340 y1 = 360 x2 = 1460 y2 = 400 d = 1 td = 5 tc = -1
startup_chkimgx()
KBD(VK_F9,CLICK,400) while 1 IFB !CHKIMGX(in, wid, x1, y1, x2, y2, d, td, tc) KBD(VK_F9,CLICK,400) else MSGBOX("????????????????") break endif Wend ------------------------------------
1、F9キーを押して画面再描画 2、画像認証を行う 3、対象の画像があればアラートを表示し、処理終了
|
No.849 2020/06/01(Mon) 08:01:59
|
|
☆ Re: Whileの挙動がおかしい。 / しろまさ |
|
|
|
F9は何のために押してるのかの確認です。 KBD(VK_F9,CLICK,400) は強制的に F9 を押す命令ですが、 押した F9 はどのように作用しているのかがコードからは読み取れません。
> F9キー押下→画像認証成功→アラート表示 この文章の解釈は 「F9 を押すことで画像認識を発動させたい」ということでしょうか? もしそうなら KBD(VK_F9,CLICK,400) ではなく
Ifb GetKeystate(VK_F9) IFB !CHKIMGX(ImageName, WindowID, x1, y1, x2, y2, d, td, tc)
なのかな?と思いました。
|
No.852 2020/06/01(Mon) 13:22:08
|
|