UWSC 掲 示 板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオンにしてください
動作不具合での質問の場合には環境(OS,IEのバージョン等)の表記もしてください
タイトルは質問内容を表したものにしてください
ネットゲーム関係の質問はご遠慮ください

タイトル (必須)
 お名前 (必須)
文字色
設定保存削除/編集パス  

SETCLEARとQSORT / 杁耶公輝
SETCLEARした配列をQSORTするとバグが発生します。

//サンプル
DIM A[10] = 1,2,3,4,5,6,7,8,9,10;
DIM B[10] = 0,0,0,0,0,0,0,0,0,-1;

QSORT( B, QSRT_A, A); PRINT "--";

FOR i = 0 TO 9
PRINT A[i]+","+B[i];
NEXT

SETCLEAR( B, 0);
B[9] = -1;

QSORT( B, QSRT_A, A); PRINT "--";

FOR i = 0 TO 9
PRINT A[i]+","+B[i];
NEXT

//結果
--
10,-1
7,0
6,0
9,0
8,0
2,0
1,0
3,0
5,0
4,0
--
4,-1
3,0
1,0
,0
5,0
2,0
7,0
10,0
6,0
8,0

No.4165 2017/06/26(Mon) 06:48:55

Re: SETCLEARとQSORT / しゅん
出力された結果からすると、バグではないと思います。

UWSCの配列は、昔のVB方式で、DIM A[10]とした場合、A[0]〜A[10]の11個が使えます。
(個人的にはこれは好みではないです)
A[10]/B[10]は、初期化されていないため、どちらもNULLだったかEMPTYだったかです。
B配列でソートすると、B[10]は最後にまわされるため、A[10]/B[10]はソート後もそのままです。
SETCLEARするとB[10]に0が入るため、最後ではなくなる可能性があります。
例の場合、4番目に来たようですね。
このとき、A[3]は空なので、そうPRINTされます。

あの、個人的なお願いなのですが、「バグ」という表現は余程確信がある場合のみに使用してもらえますでしょうか。
今回確信があったのでしたらまあしょうがないですが、できれば「不具合のような現象」あたりでお願いします。

No.4167 2017/06/26(Mon) 09:25:59

Re: SETCLEARとQSORT NEW / MM
配列…
私も使い始めてから数年の間、DIM A[10]なら A[0]-A[9]のC言語仕様とばかり勝手に思い込み、そのせいで発生する想定外の挙動にアドホックに対応することで無理やり使っていました…

HELPでは配列という項はなく、変数の項にいきなり
> 多次元配列には宣言が必要: DIM 変数名[数]
> (配列での初期値代入: DIM X[2]=1,2,3  配列数の省略可 DIM X[]=1,2,3 )

とだけ記載されています。
(他言語で配列の概念を周知であることが前提。配列を知らなければ使わなければよいという事。)

文脈の異なるこの「 DIM X[2]=1,2,3 」だけを見て察するべきなのが、
UWSCの常識であり、ユーザーに課せられた努めなのです…

No.4171 2017/06/27(Tue) 20:14:54
記録が出来ない・・の続き / skyblue
1.デスクトップ上にダウンロードし、同じフォルダー内にRecUws.dllがあります。
右クリックで管理者権限で実行にしても、記録のボタンが最初からグレーで押せません。

ウィンドウズ10です。

2.別のPC(ウィンドウズ10)ではUWSCを立ち上げた時から記録ボタンがアクティブで、スムーズに記録できます。

 PCによって相性が有るのでしょうか?
あるいはアプリケーションによる影響でしょうか?

No.4161 2017/06/23(Fri) 14:07:03

Re: 記録が出来ない・・の続き / stuncloud
前回あいまいだった部分をクリアにしましょうか

> 1.デスクトップ上にダウンロードし、同じフォルダー内にRecUws.dllがあります。

これは
1. uwsc5302.zipをデスクトップにダウンロード
2. uwsc5302.zipをデスクトップ上のuwsc5302フォルダに展開
3. uwsc5302フォルダの中にuwsc.exeとRecUws.dllが置いてある
という意味だと思って良いですよね?
※ フォルダの名前は変更されてたりするかもですがWindowsの標準機能でzipを展開するとデフォルトのフォルダ名がファイル名になるのでそのように記述しています

>  PCによって相性が有るのでしょうか?
> あるいはアプリケーションによる影響でしょうか?


正直これだけの情報だと回答しようがないですね
通常は問題なく動くはずである、としか…

> 2.別のPC(ウィンドウズ10)ではUWSCを立ち上げた時から記録ボタンがアクティブで、スムーズに記録できます。

このuwsc.exeとRecUws.dllのセットを正常動作しないほうのWindows10にコピーしてから実行した場合はどうなるでしょうか

No.4162 2017/06/23(Fri) 15:06:12

Re: 記録が出来ない・・の続き / koi
ふと思い立って試しにやってみたら同現象が再現できました
フォルダ名にスペースが入ってませんか?
(当方ではそれで現象が確認できました)

初めて気が付きましたが不具合の気がします

No.4163 2017/06/23(Fri) 16:18:29

Re: 記録が出来ない・・の続き / skyblue
stuncloud さん

ご質問の

1. uwsc5302.zipをデスクトップにダウンロード
2. uwsc5302.zipをデスクトップ上のuwsc5302フォルダに展開
3. uwsc5302フォルダの中にuwsc.exeとRecUws.dllが置いてある
という意味だと思って良いですよね?
・・についてはその通りです。

次に
このuwsc.exeとRecUws.dllのセットを正常動作しないほうのWindows10にコピーしてから実行した場合はどうなるでしょうか
・・については別のPCで成功したuwsc520を不成功のPCにコピーして立ち上げようとしたところ、多重禁止の警告が出て立ち上がりません。
uwsc5302をフォルダーから削除し、確認した上でも多重禁止の警告で止まるため、テストできていません。

koiさん

 uwsc5302のフォルダーを見たところ、スペースは入っていないように思えますが、別の話であればお手数ですが再度ご指導ください。

No.4164 2017/06/23(Fri) 18:57:43

Re: 記録が出来ない・・の続き / koi
改めて再確認したところフォルダ名のスペースは関係ありませんでした

以前動かしてたことがあるはずの環境で今回新たに別フォルダに解凍して
動かしたところ現象が確認できたので書いてしまいましたが
スペース無関係で現象が確認できて
更にはもともと入れていた環境を起動させても同現象が出ていることに気が付きました
記録操作はほとんど使わないのとUWSC起動してもそのままトレイで起動しているため
気が付きませんでした

上記 環境的には Win7 32ビット UWSC 5.2.3(フリー版) での話となります

現状 調査などに時間が取れないため
もし何か新たにわかりましたら書き込みさせていただきます
お騒がせしました

No.4166 2017/06/26(Mon) 09:21:28

Re: 記録が出来ない・・の続き NEW / stuncloud
> ・・については別のPCで成功したuwsc520を不成功のPCにコピーして立ち上げようとしたところ、多重禁止の警告が出て立ち上がりません。
> uwsc5302をフォルダーから削除し、確認した上でも多重禁止の警告で止まるため、テストできていません。

なんだかおかしな話ですね
そのときってUWSCの別プロセスがすでに動作中だったりしたのでしょうか
こちらで試した限りではすでに実行中のUWSCがアクティブになるような動作だったので多重起動禁止に関してはよくわからないです(UWSC.iniで設定できましたっけ?)

こちらでは現象自体が再現できないのでこれ以上はお力になれなさそうです

No.4168 2017/06/27(Tue) 10:32:38

Re: 記録が出来ない・・の続き NEW / skyblue
stuncloud さん

 お世話になっています。

1.デスクトップ上にて UWSC5302をフォルダーごと削除した後に、UWSC520をコピーして貼り付け、起動させようとすると 多重起動禁止で起動できません。
PCを何度起動停止させても同じ状況です。

2.UWSC520を消去した後、UWSC5302を再度ダウンロードして起動する事は出来ました。
ただし、記録ボタンはグレーのままです。

No.4169 2017/06/27(Tue) 13:03:01

Re: 記録が出来ない・・の続き NEW / トリビア
インストーラーでインストールしたUWSCがあって、常駐起動しているだけでは?
No.4170 2017/06/27(Tue) 18:42:11
ウィンドウIDとは・・・・? / Y.Sum
WindowsOSの処理について詳しく理解できていないのですが、
以下のコメントアウトの部分を加えるか、外すかによって、出力されるWindowIDが異なってきます。

理由がわかるかた、ご教示頂けませんでしょうか。

------------------------------------------------------------------------------
前提:ウィンドウIDとは.uws というファイルをテキストエディタで開いた状態で実行
------------------------------------------------------------------------------

search_word = "ウィンドウIDとは"

// MSGBOX(GETID(search_word))   //←左記コマンドの有無によって実行結果が異なる。

ID1 = EXEC("notepad")
CTRLWIN(ID1,ACTIVATE)

n = GETALLWIN()
SENDSTR(ID1,"ウィンドウの数:" + n + "<#CR>")
IFB n > 0
FOR i = 0 TO (n - 1)
IFB (POS(search_word, STATUS(ALL_WIN_ID[i], ST_TITLE))>0) THEN
SENDSTR(ID1,ALL_WIN_ID[i] + ":" + STATUS(ALL_WIN_ID[i], ST_TITLE) + "<#CR>")
MSGBOX(ALL_WIN_ID[i])
MSGBOX(GETID(search_word))
ENDIF
NEXT
ELSE
SENDSTR(ID1,"ウィンドウが見つかりませんでした<#CR>")
ENDIF

SENDSTR(ID1,"おわりです。")

No.4149 2017/06/20(Tue) 17:37:27

Re: ウィンドウIDとは・・・・? / しろまさ
GETID()で取得するIDはUWSCが認識するための連番数字です。

ので、プロセスが違えば、GETID()使用回数で同じウィンドウでも割り当てられる数字は変化します。

プロセスの固有値は STATUS(ID, ST_PROCESS) などで取得できます。

No.4150 2017/06/20(Tue) 18:08:27

Re: ウィンドウIDとは・・・・? / stuncloud
ウィンドウのid番号の割り当てには以下のようなルールがあります(あると思われます)

(1) GETID()を呼んで見つかった場合、idに1が割り当てられます
  その後はGETID()を呼んでウィンドウが見つかる度に2、3、4…と割り当てられます
(2) GETALLWIN()を呼んだ場合は、見つけた順に1からidが割り当てられます

ご質問の状況ですと
> MSGBOX(GETID(search_word))
をコメントアウトした状態ではGETALLWIN()しか実行されないため、見つかった順の番号でidが割り当てられます
コメントアウトせず実行した場合は、そのウィンドウのidは(1)のルールにより1が割り当てられます
その後、GETALLWIN()で再度発見されますがすでにidの番号が1と割り当てられているため、(2)のルールによる番号割り当ては行われません
その為結果が異なる場合があります
(GETALLWIN()でも一番最初に見つかっていた場合はidが1になるのでその場合のみ結果が一致します)

No.4151 2017/06/20(Tue) 18:22:43

Re: ウィンドウIDとは・・・・? / Y.Sum
なるほど・・・UWSCのプロセスの内部で連番にしているということですね。
早速のご回答有難う御座いました。

この質問をしたのには背景が御座いまして、あるUWSファイルにおいて、

CTRLWIN(GETID("ユニークなウィンドウ名"),ACTIVATE)

としているにも関わらず、部分一致も全くしていない、全く別のウィンドウ(仮に"A"とする)が
アクティブになる現象が起きたために、質問させて頂きました。

その"A"ウィンドウは、同UWSファイルでは一度たりともGETID("A")としておらず、
GETALLWIN()も一度も使用しておりません。
※つまりUWSC内部的には一度もウィンドウIDが払いだされていない"はず"のウィンドウです。

ただ、その"A"ウィンドウは、いつも同じ名前のものであるという法則があり、
一つ疑わしい点は、そのウィンドウ"A"の名前には"/(スラッシュ)"が含まれることです。

何か心当たりは御座いませんでしょうか。。。。

No.4158 2017/06/21(Wed) 15:44:25

Re: ウィンドウIDとは・・・・? / stuncloud
可能性としてはその"A"ウィンドウの実際のウィンドウタイトルに"ユニークなウィンドウ名"が完全、または部分一致している…ですかねぇ
(タイトルバー部分に見えてる名前とウィンドウタイトルが異なることがないわけじゃないんですよね、例:Excel)

for id in getallwin()
 print status(id, ST_TITLE)
next

としてウィンドウタイトルを列挙した場合に本来idを取りたいウィンドウと"A"ウィンドウのタイトルが同じだったりした場合は、そういったこともあるえると思います

あと考えられるのは"A"が本来のターゲットのモーダルな子ウィンドウでターゲットをアクティブにしたら"A"が上に出てきちゃう…とか?

No.4159 2017/06/21(Wed) 16:04:06

Re: ウィンドウIDとは・・・・? / Y.Sum
GETALLWIN()で全て出力しました。


> 可能性としてはその"A"ウィンドウの実際のウィンドウタイトルに"ユニークなウィンドウ名"が完全、または部分一致している…ですかねぇ
> (タイトルバー部分に見えてる名前とウィンドウタイトルが異なることがないわけじゃないんですよね、例:Excel)


上記、ドンピシャでした・・・・。当該"A"ウィンドウの名前は表示名そのままでしたが、
そのウィンドウの中に存在するボタンが、ウィンドウIDとして存在していて、
そのボタン名に、"ユニークなウィンドウ名"が部分一致しておりました。。。
見た目は一つのウィンドウでも複数のウィンドウ名を持っていることがあるということが
勉強になりました。

ありがとうございました!

No.4160 2017/06/21(Wed) 16:48:31
EXECで起動しない / T.S
外部メモリーに入っているソフトを起動したいです

これで試してみましたがダメでした

exec("J:\file\soft\111\por\star.jar")

No.4141 2017/06/19(Mon) 19:40:00

Re: EXECで起動しない / T.S
これかな?と思ったのですが起動できませんでした

exec("java -jar <#DBL>J:\file\soft\111\por\star.jar<#DBL>")

No.4142 2017/06/20(Tue) 06:28:31

Re: EXECで起動しない / 森
exec()はEXEファイルが処理対象なので、それ以外はdoscmd()で
No.4143 2017/06/20(Tue) 08:53:08

Re: EXECで起動しない / T.S
森さん、ありがとうございます
exeファイルだけなんですね

それで、この3つで試してみたんですけど、起動できないんですが、
間違いが分かる方おられましたらお願いします

doscmd("J:\file\soft\111\por\star.jar")

doscmd("java -jar <#DBL>J:\file\soft\111\por\star.jar<#DBL>")

doscmd("java -jar <#DBL>J:\file\soft\111\por\star.jar<#DBL>", True)

No.4144 2017/06/20(Tue) 10:04:10

Re: EXECで起動しない / stuncloud
コマンドプロンプトから同様のコマンドを実行し動くか確認してください
それでもだめなら
jarファイルがjavaに関連付けられてるか?
java.exeにパスが通っているか?
を確認してください
パスを通してない場合はjava.exeもフルパス指定すれば動くと思います

No.4145 2017/06/20(Tue) 11:38:31

Re: EXECで起動しない / T.S
stuncloudさん、ありがとうございます

> コマンドプロンプトから同様のコマンドを実行し動くか確認してください

C:\Windows\System32>java -jar "J:\file\soft\111\por\star.jar"

これでEnterを押したところ、一部に「アクセスが拒否されました」と表示されました

起動できませんでした

> jarファイルがjavaに関連付けられてるか?

はい、star.jar のショートカットがあるのですが、それをダブルクリックすると、起動できます。

また、clkitem(folderID,"star",CLK_DBLCLK) で起動することができます。
ですが、この方法ですと、一度ショートカットを表示させることになるので、できるなら EXECのように起動させたいです。

> java.exeにパスが通っているか?

この意味が分かりませんでした
関連付けですか

> パスを通してない場合はjava.exeもフルパス指定すれば動くと思います

この書き方が分からないです


検索しても分かりませんでした
すみません

No.4146 2017/06/20(Tue) 13:05:40

Re: EXECで起動しない / stuncloud
> 一部に「アクセスが拒否されました」と表示されました

コマンドプロンプトから java だけを実行できますでしょうか?実行できればjava.exeのヘルプが表示されます
動作した場合は、cdコマンドでuwsスクリプトのあるフォルダまで移動してからまた java だけを実行してみてください

いずれも大丈夫であった場合、エラー通りjarファイルへのアクセス権を疑うべきでしょう
もし「管理者として実行」したコマンドプロンプトでjarファイルを実行できるようであれば、UWSCも「管理者として実行」する必要があります

javaが実行されない場合はパスを通すだのフルパスで実行だのという話になってきます

パスが通っている、というのは環境変数のPATHにjava.exeがインストールされているフォルダが登録されているかどうか?という意味です
(詳しくは「環境変数 PATH」で調べてみてください)
Java7までは C:\Windows\System32 に java.exe が置かれていたのでどこからでも java.exe が実行できたようですが、Java8からはそうではなくなったようで環境変数PATHに C:\ProgramData\Oracle\Java\javapath を加えないといけなさそうです
もしPATHが通っていないのであればフルパスで実行する必要があり

"C:\ProgramData\Oracle\Java\javapath\java.exe" -jar "J:\file\soft\111\por\star.jar"

のように書いておく必要があります(↑はJava8の場合)

No.4147 2017/06/20(Tue) 14:40:21

Re: EXECで起動しない / T.S
> コマンドプロンプトから java だけを実行できますでしょうか?実行できればjava.exeのヘルプが表示されます

このように表示されました↓

使用方法: java [-options] class [args...]
(クラスを実行する場合)
・・・

> 動作した場合は、cdコマンドでuwsスクリプトのあるフォルダまで移動してからまた java だけを実行してみてください

これが分からないです


そして、

doscmd("<#DBL>C:\ProgramData\Oracle\Java\javapath\java.exe<#DBL> -jar <#DBL>J:\file\soft\111\por\star.jar<#DBL>")

doscmd("<#DBL>C:\Program Files (x86)\Java\jre1.8.0_131\bin\java.exe<#DBL> -jar <#DBL>J:\file\soft\111\por\star.jar<#DBL>")

この2つをやってみましたが起動できませんでした。


stuncloudさんのお話もよく分からないくらいなので、
自分の知識不足だと思います

あきらめます

stuncloudさん、ほんとうにありがとうございました
森さんもありがとうございます

No.4148 2017/06/20(Tue) 15:35:24

Re: EXECで起動しない / しゅん
謎な状況ですね。
一番考え易いのは、
> doscmd("J:\file\soft\111\por\star.jar")
で起動可能、かな。
足りないのは、管理者権限で、UWSCを管理者権限で上げればOKとか。
ショートカットは、管理者権限が付与されているとか。

ショートカット(.lnkファイル)をdoscmdで起動してもよかった気がしますね。
(INPUT()を実行して出るダイアログに、ショートカットをDropするとPATHがわかります)

PRINT DOSCMD("PATH")
の結果も知りたいところですし、
> これかな?と思ったのですが起動できませんでした
の状況も知りたいですね。(エラーが出たのか、何もおこらずスクリプト実行が終了するのか)

No.4157 2017/06/21(Wed) 09:40:34
TOKENの仕様??バグ??勘違いならすみません / RICES
明確に確認できていないのですが、TOKENを連想配列の入れると誤作動?するようです?

 連想配列[TOKEN(文字列,x)]=TOKEN(文字列,x)

とすると正常に動作しないようです。TOKENの切り出しが正常に行われない?

一方、

 DIM A = TOKEN(文字列,x)
 連想配列[A]=TOKEN(文字列,x)

とすると正常に動作するようです。

No.4152 2017/06/20(Tue) 21:28:54

Re: TOKENの仕様??バグ??勘違いならすみません / RICES
すみません、TOKENの引数を逆に書いてしまいましたが、正しく書いても挙動は同じです。
No.4153 2017/06/20(Tue) 22:41:09

Re: TOKENの仕様??バグ??勘違いならすみません / satocha
別に誤動作はないようですが。
UWSCが代入文を処理するとき、最初に右辺値(何を)を計算し、次に左辺値(どこへ)を決定しているだけではないでしょうか。

tokenでなくても、また、連想配列でなくても、呼ぶたびに違う値を返す関数を左辺値の評価が必要な代入文で使ってみれば、右辺値、左辺値の順で計算していることが分かります。

通常の代入文は左辺値がただの変数なので評価順を気にする必要はないのですが。

public round=1
str="a,b,c,d"
hashtbl hash
dim ary[]=0,1,2,3,4,5,6

hash[token(",",str)]=token(",",str)
hash["a"+foo()]=foo()
ary[foo()]=-1*foo()

for key in hash
msgbox("hash["+key+"]="+hash[key])
next

msgbox(join(ary))

function foo()
result=round
round=round+1
fend

No.4154 2017/06/21(Wed) 01:25:08

Re: TOKENの仕様??バグ??勘違いならすみません / しろまさ
確認できました。
下記テストで a1() は 23 1 、a2() は 1 23 となります。
1行で書くと = を挟み、代入側よりも式側のほうから評価されている感じです。

仕様かどうか umiumiさんの回答が必要だと思います。
まあ1行増えるだけなので大した問題ではないですね。

HashTbl 連想配列
Dim x = " ", 文字列 = "1 23 456"
a1(連想配列, x, 文字列) // 23 1
a2(連想配列, x, 文字列) // 1 23

Procedure a1(連想配列[], x, 文字列)
  連想配列[TOKEN(x,文字列)]=TOKEN(x,文字列)
  MsgBox(連想配列[0, HASH_KEY] + " " + 連想配列[0, HASH_VAL])
FEnd

Procedure a2(連想配列[], x, 文字列)
  DIM A = TOKEN(x,文字列)
  連想配列[A]=TOKEN(x,文字列)
  MsgBox(連想配列[0, HASH_KEY] + " " + 連想配列[0, HASH_VAL])
FEnd

No.4155 2017/06/21(Wed) 08:12:03

Re: TOKENの仕様??バグ??勘違いならすみません / RICES
satochaさんしろまささんありがとうございます。
右辺から計算されるといわれてみれば全くその通りですね…
できる限りコードを削ろうとしてこんな羽目になりましたが、とても勉強になりました。
配列に関しては定義から先に算出されると勝手に思い込んでいましたので、そう考えれば全くつじつまが合いますね。

No.4156 2017/06/21(Wed) 09:19:12
debuggerでのlocal変数表示について / syuhari
いつもお世話になっております。

首記の件につきまして、debuggerにてスクリプトを実行させた際、
画面右下にlocal欄が表示されません。
Function内ででブレークを貼って実行すれば表示されるかと思ったのですが、
該当のブレークで止まった際にもローカル変数がdebuggerのlocal欄に表示されませんでした。

local欄を表示させる方法があれば教えて下さい。

Win7 64bit
UWSC Pro Ver.5.3.0.2です

よろしくお願いします。

No.4138 2017/06/18(Sun) 11:27:00

Re: debuggerでのlocal変数表示について / syuhari
すみません。自己解決しました。

debuggerを縦に縮めるとlocal欄が隠れてしまうだけでした。

ある程度縦に伸ばすと表示されました。

お騒がせしました。

No.4139 2017/06/18(Sun) 11:35:06
sendstrでexcelに貼り付けできない / orally
こんにちは
uwscでできることを確認しようと、サンプルを打って試している者です。

N11のサンプル(http://www.uwsc.info/sample.html#N11)なのですが、
新規エクセルファイルに対して、既存csvファイルの内容のコピーができません。
エクセルに値を書き込むのに何か方策があればご教授いただけますと助かります。

print関数を使用し、csvファイルから読み込みはできていることを確認しております。
また、notepadに対しては書き込めることを確認しております。

掲示板過去ログでは、似た内容は
「sendstrで文字が送れない / まるぱ 2016/04/16(Sat)」ぐらいで、今年ではなさそうでした。

UWSC: ver 5.3.0.2
OS: Windows 10 pro
EXCEL: 2010

// コード
// app = exec("EXCEL.exe")
app = exec("C:\Program Files\Microsoft Office\Office14\EXCEL.exe")
// app = exec("notepad.exe") なら書き込めることを確認
Sleep(3)
print app
fid = FOpen("hoge.csv", F_READ) // 実際はフルパスで指定
print fid
for i = 1 to FGET(fid, F_LINECOUNT)
print FGet(fid, i, 1)
SendStr(app, FGet(fid, i, 1), 1, True)
print FGet(fid, i, 2)
sendStr(app, Fget(fid, i, 2), 2, True)
print FGet(fid, i, 3)
sendStr(app, fget(fid, i, 3) , 3, True)
Sleep(3)
next
Fclose(fid)

No.4137 2017/06/18(Sun) 00:01:57
子ウィンドウのボタンが押せない / sage
私は日経新聞CD-ROMを使って特定の期間の特定のページを印刷するwindowsマクロを作っているのですが、子ウィンドウのtextboxに入力したり、特定のボタンを押せずに困っています。

↓このように親ウィンドウのIDは上手く取得でき、アクティブにできます。
id = GETID("日経 全文記事データベース", "ThunderRT6MDIForm",300)
CTRLWIN(id, ACTIVATE)

↓しかし、子ウィンドウのIDは取得できず、アクティブにできません。
id = GETID("記事検索", "ThunderRT6FormDC",300)
CTRLWIN(id, ACTIVATE)

「マクロの記録」を有効にして、子ウィンドウを左クリックしアクティブにしてから、タブキーを何回か押下して、子ウィンドウのボタンを選択してからエンターキーを押下し、記録停止⇒コードを見るとアクティブになっているのは親ウィンドウだし、キーボード操作は記録されていません。

↓強引に下記のコードを入れても親ウィンドウに命令が行き、巧く行きません。
SENDSTR(id, "PG001") //textboxにPG001と送る
KBD(VK_TAB, CLICK, 100) //タブクリック
KBD(VK_RETURN, CLICK, 100) //リターン押下
CLKITEM(id, CLK_BTN , 1) //1番目のクリックボタンを押下

なお、BTN(LEFT,CLICK,742,461,609)などクリックを使って代用しようとすると、CD-ROM起動時に毎回ウィンドウの座標が変わるので変なところがクリックされ巧く行きません。

↓このサイトを参考にし、全てのオブジェクトを取得した結果、
https://stuncloud.wordpress.com/2012/05/22/uwsc-%E6%8C%87%E5%AE%9A%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E4%B8%8A%E3%81%AE%E5%90%84%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB/

↓このような表示が得られました。
「日経 全文記事データベース」が親、「記事検索」と「検索結果」が子ウィンドウになります。
"日経 全文記事データベース", "ThunderRT6MDIForm"
"", "ToolbarWndClass"
"", "ToolbarWindow32"
"", "MDIClient"
"検索結果", "ThunderRT6FormDC"
"", "ThunderRT6TextBox"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"記事検索", "ThunderRT6FormDC"
"", "ThunderRT6TextBox"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"", "ThunderRT6CommandButton"
"メニュー", "ThunderRT6FormDC"
"", "StatusBarWndClass"

No.4133 2017/06/15(Thu) 09:31:06

Re: 子ウィンドウのボタンが押せない / 森
私は普段web系がメインなのでgetidを使うことはほとんどない無いのですが、ヘルプによると第4引数を指定することで子ウインドウが取得できるようですね。
戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
MDI子タイトル: MDIウィンドウ中の子ウィンドウタイトル

なので、以下でどうでしょうか?

// 子ウィンドウのIDを取得
id = GETID("日経 全文記事データベース", , , "記事検索")

ダメならクラスも指定してみてください

No.4134 2017/06/16(Fri) 10:52:51

Re: 子ウィンドウのボタンが押せない / 森
> BTN(LEFT,CLICK,742,461,609)などクリックを使って代用しようとすると、
> CD-ROM起動時に毎回ウィンドウの座標が変わるので変なところがクリックされ巧く行きません。


これに関してはウインドウを決まった位置に移動させることで簡単に対処できます。

id = GETID("日経 全文記事データベース", "ThunderRT6MDIForm",300)
CTRLWIN(id, ACTIVATE)
acw(id , 0 , 0) //----- 必要であれば、第4〜5引数で大きさも固定してください。

No.4135 2017/06/16(Fri) 10:57:20

Re: 子ウィンドウのボタンが押せない / sage
森 さま
本当にありがとうございます!

>// 子ウィンドウのIDを取得
>id = GETID("日経 全文記事データベース", , , "記事検索")

この方法で子ウィンドウをアクティベート出来るようになりました!

>id = GETID("日経 全文記事データベース", "ThunderRT6MDIForm",300)
>CTRLWIN(id, ACTIVATE)
>acw(id , 0 , 0) //----- 必要であれば、第4〜5引数で大きさも固定してください。

親ウィンドウ、子ウィンドウ両方の座標を(0,0)にすることで、どのボタンも巧くクリック出来るようになりました!

本当に助かりました!重ねてお礼申し上げます。m(__)m

No.4136 2017/06/17(Sat) 16:11:16
記録が出来ない / skyblue
本日uwscをデスクトップ上にダウンロードし、同じフォルダー内にRecUws.dllがあります。
右クリックで管理者権限で実行にしても記録のボタン(色が薄いまま)が押せません。

ウィンドウズ10です。

素人の質問で申し訳ありませんが、ご指導ください。

No.4119 2017/06/11(Sun) 14:59:07

Re: 記録が出来ない / satocha
「デスクトップ上にダウンロードし」たあと、きちんと解凍したのでしょうか。
zipファイルをダブルクリックしただけでは、一見通常のフォルダのように見えても、UWSC.exeが圧縮フォルダ内のRecUws.dllを認識できません。
http://www.uwsc.info/faq.html#N5

もし、きちんと解凍したうえで上記の問題が起きているなら、ダウンロードが不完全だった可能性がありますので、もう一度ダウンロードし直してみてください。

No.4124 2017/06/12(Mon) 17:01:14

Re: 記録が出来ない / skyblue
・GruGru.uwsを読み込んで、電卓がぐるぐる回り、電卓計算はできています。
 この状況では解凍できているとは保証できませんか?

・2回ほどダウンロードし解凍していますが結果は同じです。

・ウィンドウズ10で問題が起きる場合が有るのでしょうか?

No.4131 2017/06/13(Tue) 17:53:10

Re: 記録が出来ない / 確認
使用期限が過ぎているのでは? 以前一度インストールしているとか。
No.4132 2017/06/14(Wed) 08:05:19
ソフトのボタンがグレイアウトの場合は分岐する / jasmine
弥生販売の集計をUWSCソフトで行っています。

集計の元値がないと、CKLITEMで押す予定のボタンがグレイアウトしていて押下できず、
プログラムがそこで止まってしまいます。

グレイアウトしていて押せない場合は処理をとばして(分岐して)数行先の処理に進む、という素敵な方法はないでしょうか?

よろしくお願い致します。

No.4123 2017/06/12(Mon) 15:10:38

Re: ソフトのボタンがグレイアウトの場合は分岐する / satocha
getitemの第5引数の真偽で、全部品を取得するかイネーブルのものだけを取るか指定できます。
No.4125 2017/06/12(Mon) 17:18:23

Re: ソフトのボタンがグレイアウトの場合は分岐する / stuncloud
ret = clkitem(id, "ボタン名", CLK_BTN, FALSE)
if ret then
 print "クリックできます"
else
 print "クリックできません"
endif

ボタンがディセーブルで押せない場合はclkitemがFALSEを返します
clkitemの第四引数をFALSEにすることでクリック可能な場合でもクリック処理を行わないので、クリックできるかどうかだけを調べるたい場合はこの方法が便利です
クリックしつつ処理を続行する場合は第四引数をTRUEにするか、省略してください

No.4126 2017/06/12(Mon) 18:11:15

Re: ソフトのボタンがグレイアウトの場合は分岐する / jasmine
ご回答ありがとうございます♪
これからTryしてみます!!
ありがとうございました。

少し時間がかかるかもしれませんが、
うまくいきましたら、またこちらでご報告致します!

No.4129 2017/06/13(Tue) 09:51:25

Re: ソフトのボタンがグレイアウトの場合は分岐する / jasmine
できました!!
stuncloudさんが示していただいた方法で問題クリア!!できました♪
素晴しいです!!感謝です!

satochaさんもありがとうございましたm(__)m

とりあえずご報告まで☆

No.4130 2017/06/13(Tue) 11:53:10


 過去ログ(〜2017/03/22)・検索ツール


以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> | 過去ログ ]