[ 掲示板に戻る ]

過去ログ閲覧モード

CHKIMGでEXEファイル作成エラー / nac
お世話になります。
Pro版uws2exeにてEXEファイル作成の際に下記エラー?警告?が出て
作成できたEXEファイルを実行しても、CHKIMG関数の判定が機能しません

CREATEFORM/CHKIMG関数にて以下の取込みが出来ませんでした
CHKIMG(IMAGE

ソースは下記のとおり単純な処理で、EXE実行でなくスクリプト実行では
正常に機能しています。どのようにすれば機能するようにできるでしょうか?
よろしくお願いいたします。

■環境
OS: Windows 7 SP1 64bit
USWC Pro 5.0.1, 5.1.0, 5.2.0いずれでも発生

■ソース
ptn_dir = GET_CUR_DIR + "\pattern\"
log_dir = GET_CUR_DIR + "\logs\"

call "modules\Logger.uws"
Logger.initialize(log_dir, "automation", true)

Logger.log("自動応答を開始します",Logger.WARNING)

while (true)
GETDIR(ptn_dir,"*.ini")
Logger.log("自動応答を再開します",Logger.INFO)
for i=0 to (length(GETDIR_FILES)-1)
ini = ptn_dir + GETDIR_FILES[i]
Logger.log("iniファイル読込:"+ini,Logger.INFO)
image = ptn_dir + readini("task", "image", ini)
Logger.log("iniファイル読込:image="+image,Logger.DEBUG)
pattern = int(0 + readini("task", "pattern", ini))
Logger.log("iniファイル読込:pattern="+pattern,Logger.DEBUG)
x = int(0 + readini("task", "clickx", ini))
Logger.log("iniファイル読込:clickX="+x,Logger.DEBUG)
y = int(0 + readini("task", "clicky", ini))
Logger.log("iniファイル読込:clickY="+y,Logger.DEBUG)
if chkimg(image, 0, ,,,,,) then
Logger.log("画像を検出:image="+image,Logger.NOTICE)
select (pattern)
case 0
x = x + G_IMG_X
y = y + G_IMG_Y
case 1
selend
Logger.log("クリック:x="+x+" ,y="+y,Logger.INFO)
mmv(x, y)
btn(LEFT,CLICK)
// break
endif
next
Logger.log("15秒スリープ",Logger.DEBUG)
sleep(15)
wend

Logger.end()

No.1945 2015/12/06(Sun) 18:37:28

Re: CHKIMGでEXEファイル作成エラー / えあり
見たまんま、
>if chkimg(image, 0, ,,,,,) then でコンパイルエラーを起こしている

>image = ptn_dir + readini("task", "image", ini) で、正常な動作をしていない

>ptn_dir = GET_CUR_DIR + "\pattern\" か、iniファイルの読み込みディレクトリの動作が
想定しているものと実際に読み込まれているディレクトリが異なっている

と推測されます

UWSCから動作させた場合と、exe化した際のGET_CUR_DIR 等の挙動が微妙に異なっているため、
まずはエラーを起こさない簡単なディレクトリ確認のためのマクロを作っていただいて
原因を特定されてはいかがでしょうか

No.1946 2015/12/06(Sun) 20:43:05

Re: CHKIMGでEXEファイル作成エラー / umiumi
CREATEFORM/CHKIMG関数にて変数を使用した場合には、EXEへの取り込みはされません。
EXEへの取り込みをしたい場合には変数を使わずに直接パスを記述してください。

No.1947 2015/12/07(Mon) 01:46:41

Re: CHKIMGでEXEファイル作成エラー / nac
遅くなりましたが返答ありがとうございました。
uws2exeの「BMPファイルを取り込まない」を有効にしない際、イメージを取り込もうする際のエラーなのですね。
こちらのチェックを有効にすることでエラーは出なくなりました。
あとはデバックしてみます。

No.1960 2015/12/15(Tue) 07:35:22
SENDSTRについて / MITA
id = GETID("XXXXXXXXXX", "CyWindowClass", -1)
SLEEP(1)
SendSTR(id,"AA")

V5.1.2では使用できていたものが、V5.2.0にした所、正しく挙動しなくなりました。
(上記例では"AA"が出力されない)
※フリー、シェアとも
※notepadで試すと正しく挙動します。

対処方法をご教示いただけると助かります。

よろしくおねがいします

No.1955 2015/12/11(Fri) 16:13:36

Re: SENDSTRについて / umiumi
>文字送信(SendStr)がうまく実施できなくなった
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=1814

No.1956 2015/12/12(Sat) 04:47:29

Re: SENDSTRについて / MITA
umiumi様

ご返信ありがとうございます。
既知の問題だったのですね。
過去ログ見ずに質問して申し訳ありませんでした。

V5.2.1で解消されている事、確認できました。
ありがとうございました。

No.1959 2015/12/14(Mon) 14:08:59
UWSC Ver5.2.1 / umiumi
CLKITEM関数の使用にて 一部のXP環境でエラーが出る事があるのを修正
CLKITEM関数の CLK_MENUにて チェックメニュ時にメニューが開いたままになるのを修正
GETSLIDER関数にて オブジェクトが無い時に不定値を返していたのを修正
SENDSTR関数にて フォーカスのある所に送るのが一部アプリにてダメになっていたのを修正
CREATEOLEOBJ関数にて "MSEdge.Application"がエラーになるのを修正
低レベル記録/再生にて 画面スケーリングが100%以外だとマウス位置がズレるのを修正
画面のスケーリングにて 高DPIに対応した(文字ぼけしない)

No.1958 2015/12/14(Mon) 00:43:40
とても便利で助かります / ss
to 作者様
いつも使わせてもらってます。
最近COMオブジェクト制御を覚えてから、とても使い道が広がりました。
言語的にも興味深く楽しいです。
良いソフト作って頂けましてありがとうございます

No.1953 2015/12/10(Thu) 22:28:35

Re: とても便利で助かります / トリビア
SSさんにのっかりますが、私もこのソフトを購入してから色々な道がひらけました。
本当にありがとうございます。今後もバージョンアップなど期待しています。

No.1954 2015/12/11(Fri) 15:35:35
DOSCMD処理のTIMEOUTコマンドの挙動について / ピノ
下記のスクリプトとバッチファイルを作成し、
test.UWSを実行すると、
画面表示有りのDOSCMD処理の場合は
test.batのTIMEOUTコマンドの10秒間をカウントしてくれるのですが
画面表示無しのDOSCMD処理の場合は
test.batのTIMEOUTコマンドが実行されていません。
これは不具合なのでしょうか、仕様なのでしょうか?


■test.UWS

CONST バッチ = "C:\test.bat"

//バッチ終了を待つ、画面表示「有り」
DOSCMD(バッチ,false,true)

//バッチ終了を待つ、画面表示「無し」
DOSCMD(バッチ,false,false)

MSGBOX("終了")



■test.bat

rem 10秒カウントして終了
TIMEOUT /T 10 /NOBREAK

No.1948 2015/12/08(Tue) 11:23:04

Re: DOSCMD処理のTIMEOUTコマンドの挙動について / ピノ
■環境
OS: Windows 7 SP1 64bit
UWSC Ver5.2.0 Free版
です。

No.1949 2015/12/08(Tue) 11:25:53

Re: DOSCMD処理のTIMEOUTコマンドの挙動について / えあり
確認したところ V5.20Pro Win8.1 64bit の環境でも
>DOSCMD(バッチ,false,false)
においてコマンドが動作していない事を確認しました

タイムアウトコマンドだけでなく、コマンドラインそのものが動いていない挙動のようです
( echo a>log.txt で未動作を確認)

umiumiさんの対策を待ちましょう

No.1950 2015/12/08(Tue) 16:25:53

Re: DOSCMD処理のTIMEOUTコマンドの挙動について / umiumi
仕様です。
以下のエラーメッセージが返されます。
「エラー: 入力のリダイレクトはサポートされていません。今すぐプロセスを終了します。」

代替:10秒待ち
ping localhost -n 11 > nul

No.1951 2015/12/09(Wed) 00:32:35

Re: DOSCMD処理のTIMEOUTコマンドの挙動について / ピノ
了解しました。
代替案ありがとうございます。

No.1952 2015/12/09(Wed) 09:14:45
画像ボタンをクリックしたい / きのこ
何度もすみません。

IEで表示されているページの中に

<img width="126" height="48" class="roll" alt="選択" src="/image/btn/btn01.png">
このようなpng形式のボタンがあるのですが、クリックしようと思うのですができません。
(画面の中に、2つ、3つ、あっても一番上のでいい(最終的にはどれでもいい)のですが)

「IESetData」でできると思うのですが、どのようにしたらクリックできるでしょうか?
宜しくお願い致します。

No.1940 2015/12/06(Sun) 00:29:48

Re: 画像ボタンをクリックしたい / Nagatani
IEは特に苦手ですが
IESetData(IE,True,"TAG=IMG","="/image/btn/btn01.png")かな?

No.1941 2015/12/06(Sun) 00:59:11

Re: 画像ボタンをクリックしたい / Nagatani
ごめんなさい!
IESetData(IE,True,"TAG=IMG","/image/btn/btn01.png")
でした!

No.1942 2015/12/06(Sun) 01:18:15

Re: 画像ボタンをクリックしたい / きのこ
Nagatani さま
有り難うございます。

IESetData(IE,True,"TAG=IMG","/image/btn/btn01.png")
IESetData(IE,True,"TAG=IMG","btn01.png")
をやってみたのですがクリックしてくれないのです。ところが、

IESetData(IE,True,"TAG=IMG","/image/btn/btn01.png",3)
とすると、3つ目のボタンをクリックしてくれるのが不思議なのです。

選択するボタンが、3つ以上ある時はそれでいいのですが、0個の時、3つない時は空振ってしまいます。
ですので、選択ボタンが表示されている時だけ、その中のどれでも1つをクリックさせたいのですが、うまくいかないのです。
すみません。

No.1943 2015/12/06(Sun) 11:27:00

Re: 画像ボタンをクリックしたい / きのこ
連続投稿すみません。

ところが、IEGETSRC コマンドで「BODY」を bdy に代入してから、

 IFB (POS("btn01.png", bdy)>0) THEN
 MSGBOX("「btn01.png」がある")
 ELSE
 MSGBOX("「btn01.png」がない")
 ENDIF

とすると、【「btn01.png」がある】 と出てくるのに、

IESetData(IE,True,"TAG=IMG","/image/btn/btn01.png")ではダメで、3つ以上あれば
IESetData(IE,True,"TAG=IMG","/image/btn/btn01.png",3)だと3つ目をクリックしてくれます。

No.1944 2015/12/06(Sun) 11:43:49
uwscスクリプトから自分自身(uwscスクリプト)を呼び出したい / きのこ
表題の通りですが、単純にIEでyahoo.co.jpを呼び出すスクリプトを作って、試してみました。
(元々実行しているスクリプトは自分自身を呼び出したら終了(ie.quitで終了)させたいと思っています)

まず、Callで試してみました。
Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://www.yahoo.co.jp/")
Sleep(5)
Call Yahoo.uws
IE.quit
上記は、最初のuwsが終了せずにどんどんyahoo.ywsが起動してしまいます。

次に、y.bat(中身はyahoo.uwsんのみ)を作成して
Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://www.yahoo.co.jp/")
Sleep(5)
EXEC("y.bat",FALSE)
IE.quit
これも、元々のIEが終了せずにどんどんIEが起動してしまいます。

次に、vbsを作って試してみました。
Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://www.yahoo.co.jp/")
Sleep(5)
y_set="y.vbs"
EXEC("WScript.exe " + y_set,FALSE)
IE.quit
これは、数回起動するとエラーが起きます。

IEを操作するスクリプトで、自分自身は終了して、新たたな自分自身を呼び出すにはどうしたら良いのでしょうか?
宜しくお願い致します。

No.1937 2015/12/05(Sat) 00:35:43

Re: uwscスクリプトから自分自身(uwscスクリプト)を呼び出したい / 森
一応下記スクリプトが質問内容をクリアする回答ですが、
メインからサブを無限ループで呼び出す構造にした方が良いと思います。

Yahoo.uws
---------------------------------
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://www.yahoo.co.jp/")
Sleep(5)
doscmd( "Yahoo.uws" , TRUE)
IE.quit

No.1938 2015/12/05(Sat) 18:08:59

Re: uwscスクリプトから自分自身(uwscスクリプト)を呼び出したい / きのこ
森様

どうも有り難うございます。
そうですよねーーー どう考えても、ご指摘の通りなのですが・・・
有り難うございます。

No.1939 2015/12/05(Sat) 19:01:40
COM_Error:例外が発生しました。と表示され、停止します。 / hhashi578
いつも大変お世話になっております。
Pro版5.2&IE8を使用しております。
先月半ばまで機嫌よく動作していたのですが、メッセージが出て、停止してしまうようになりました。
WindowsUpdateを行ってから動かないようになったのではないかと、いろいろアンインストールを
しましたが、解決できませんでした。

COM_Error:例外が発生しました。
xx行目:UNTIL !IE.BUSY AND IE.READSTATE = 4

対処方法をご教示よろしくお願いいたします。

No.1935 2015/12/03(Thu) 18:07:55

Re: COM_Error:例外が発生しました。と表示され、停止します。 / Nagatani
直接関係しているかはわかりませんが、私も半月前ぐらいからIEが不安定になり
BusyWait()をPro版で作成したものと差し替えたところ正常に動作しました。
確か、Pro版は5.1だったと思いますが何かWeb記録をしてBusyWait()を見直せば
なおるかもしれませんよ!

No.1936 2015/12/03(Thu) 22:30:46
Notepadの画面更新、コピペ待ち / たろこ
お世話になります。

Notepadにコピーした内容を追加していくものを組んでいます。

NoteID=EXEC("notepad",100,100,30)

sleep(0.2)
ss = GETSTR(0)
ifb ss <> "" // クリップボードにある
SENDSTR(NoteID, "<#DBL>" + ss +"<#DBL><#CR>")
Sleep(2)
SENDSTR(0, "") // クリップボードをクリア
Endif

サンプルを探したところ、良いのがありましたので
上記のように動かしております。

ただ、問題が1つあります。

コピーしてくるものはメール全文です。
選択したメール(10件程度)を全てメモ帳に貼り付けます。
文字数で言うと3000文字程度、それ以上かもしれません。

コピペの動作を見ていますが
どうも画面更新が遅く、待ち時間2秒で足りないこともあります。

新しく起動したExcelに貼り付けるというのを最初試していたのですが、
そのExcelから他のExcelに転記するとどうしても全文貼り付けられないという
事象が起きたため、メモ帳起動に変更しました。

メモ帳への書込みが終わったかどうか分かるフラグはありますでしょうか。
または、他に良い方法があれば教えて下さい。

以上、よろしくお願いいたします。

No.1920 2015/12/01(Tue) 09:58:47

Re: Notepadの画面更新、コピペ待ち / stuncloud
メモ帳に書いた結果ファイルに保存するのであれば
fopen、fput、fcloseで直接ファイルに書き込んだほうが手っ取り早いです

No.1925 2015/12/01(Tue) 15:19:07

Re: Notepadの画面更新、コピペ待ち / たろこ
結果ファイルに保存するのではなく、
一時的に使用したいだけなのです。

他に方法があるか考えてみます。

No.1926 2015/12/01(Tue) 18:18:19

Re: Notepadの画面更新、コピペ待ち / stuncloud
> 一時的に使用したいだけなのです。
print という構文があります
一時的に表示するといった用途には最適かと

No.1929 2015/12/02(Wed) 13:35:50

Re: Notepadの画面更新、コピペ待ち / しろまさ
// Excelならこれ。

SendStr(0, "クリップボードから貼付しました。")
Dim o_XL = CreateOLEObj("Excel.Application"), o_WB = o_XL.WorkBooks.Add
o_XL.Visible = TRUE // 可視状態にする。
o_XL.Range("C3").PasteSpecial // セルを指定して貼付。

No.1934 2015/12/03(Thu) 13:15:17
LockHard関数について / mori
お世話になります。

LockHard関数、LockHardEX関数について聞きたいのですが、LockHard関数、LockHardEX関数共に、実行後にマウス、キーボードが動かせてしまいます。といっても、動きがかなり制限されていますが。
もちろん管理者権限で実行しています。
全く動かないようにするのは無理なのでしょうか。
ちなみに

WHILE 1

LOCKHARD(true)
FUKIDASI("LOCK_MOUSE---ALT_KEY")

ifb GETKEYSTATE(VK_ALT) then
BREAK
ENDIF

WEND

このようなコードで検証しています。

よろしくお願いします。

No.1930 2015/12/02(Wed) 14:01:26

Re: LockHard関数について / mori
忘れていましたが、OSはwin7、UWSCは5.2.0です
No.1931 2015/12/02(Wed) 15:08:34

Re: LockHard関数について / とおりすがり
LOCKHARD(true)

WHILE 1

FUKIDASI("LOCK_MOUSE---ALT_KEY")

ifb GETKEYSTATE(VK_ALT) then
BREAK
ENDIF

WEND



こうしたらいけましたよ

No.1932 2015/12/02(Wed) 23:21:36

Re: LockHard関数について / mori
ありがとうございます。
こちらでも問題なく動作確認できました!

良く考えたらおかしいコードを書いていますね、恥ずかしい限りです。

No.1933 2015/12/03(Thu) 09:08:01
全1170件 [ ページ : << 1 ... 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 ... 117 >> ]