|
電卓のボタンをClkItemでクリックしたいのですが やり方がよく分かりません。 電卓のボタンの名称が正しくないように思いましたので 電卓のボタンの名称を取得しようとしましたが このやり方もよく分かりませんのでご質問します。
(問1)UWSCで電卓のボタンを操作する場合 ClkItem()を使って以下のようにしましたが +や=のボタンがクリックされません。 12と表示された状態で終了してしまいます。 下記のコードのどこに問題があるのでしょうか。
---test1.uws----------------------------- id=exec("C:\Windows\System32\calc.exe") sleep(3) ClkItem(id, "普通の電卓", CLK_MENU) sleep(1) ClkItem(id, "1", CLK_ACC) ClkItem(id, "+", CLK_ACC) ClkItem(id, "2", CLK_ACC) ClkItem(id, "=", CLK_ACC) -----------------------------------------
(問2)ClkItem()に記述するために電卓のボタンの 正確な名称を取得したいのですが どのようにすればよいでしょうか。 以下のようにしてみましたが ボタンの名称が取得できません。 下記のコードのどこに問題があるのでしょうか。
---test2.uws----------------------------- id=exec("C:\Windows\System32\calc.exe") for a = 0 to getitem(id,itm_btn)-1 print a+1+":" + ALL_ITEM_LIST[a] next -----------------------------------------
OS:Windows7 UWSC:フリー版5.3.0.2
よろしくお願いします。
|
No.4199 2017/07/05(Wed) 19:03:51
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / satocha |
|
|
uwsc同梱のサンプル.uwsによれば、Windows7の電卓はsendstrするだけで計算してしまうようですね。 ClkItem(id, "普通の電卓") sleep(0.5) sendstr(id,"1+2=")
win10のストアアプリの場合は演算キーを押しているようですが。
電卓に限って言えばこれで終わりですが、
一般にアプリケーションウインドウの部品にアクセスしたいとき、どうやってその部品にアクセスするか、ですが 私の場合は眠たい詩人さんの開発された「UWSCコードの断片生成器」を使って調べています。便利ですよ。
|
No.4200 2017/07/05(Wed) 20:51:53
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / routa |
|
|
ストアアプリの電卓は起動ウィンドウと画面ウィンドウは違うようです。 サンプル.uwsでもIDを再取得しています。 exec("C:\Windows\System32\calc.exe") id = GETID("電卓", "ApplicationFrameWindow") for a = 0 to getitem(id,itm_btn)-1 print a+1+":" + ALL_ITEM_LIST[a] next
|
No.4201 2017/07/05(Wed) 23:38:10
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / YY |
|
|
routaさん
回答ありがとうごさいます。
Windows7は、ストアアプリの電卓ではなく普通の電卓と思いますが、 下記の教えていただいたコードを実行して確認しました。
exec("C:\Windows\System32\calc.exe") id = GETID("電卓", "ApplicationFrameWindow") for a = 0 to getitem(id,itm_btn)-1 print a+1+":" + ALL_ITEM_LIST[a] next の実行結果ですが、
getitem(id,itm_btn)は1で print文は 17/07/06 14:27 1:スタート だけが出力されていて、 ボタンの名称は1つも取得できていませんでした。
よろしくお願いします。
|
No.4203 2017/07/06(Thu) 21:15:00
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / satocha |
|
|
sendstrではなく、どうしてもボタンを押したいということでしたら、
powershell("ps calc|kill") calcid =exec("calc.exe") clkitem(calcid,"表示\普通の電卓",CLK_MENU) sleep(0.1) clkitem(calcid,"1",CLK_ACC) clkitem(calcid,"加算",CLK_ACC) clkitem(calcid,"2",CLK_ACC) clkitem(calcid,"等号",CLK_ACC)
msg="ボタンの名称は次の通りです" for btn in getitem(calcid,ITM_ACCCLK,-1) msg =msg+"<#CR>"+btn next sendstr(exec("notepad"),msg)
|
No.4204 2017/07/07(Fri) 06:34:42
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / MM |
|
No.4205 2017/07/07(Fri) 09:23:06
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / しろまさ |
|
|
// >これを走らせて取得できないボタン名称は、そもそも名称指定で押せないことになります。 // 押せますよ(反則?) スピードに挑戦してみました^^
SetBtn() MsgBox("1-100 まで加算します") Dim i For i = 1 To 100 BtnS("+" + i) Next BtnS("=")
MsgBox("次は100*100") BtnS("100*100=")
Procedure SetBtn() Public HashTbl h_nm Dim idc = exec("calc.exe"); ClkItem(idc, "表示\普通の電卓", CLK_MENU) Dim i, nm = Split("mc mr ms m+ m- bs ce c ± rt 7 8 9 / % 4 5 6 * /x 1 2 3 - = 0 . +") For i = 0 To Length(nm) - 1; h_nm[nm[i]] = GetCtlHND(idc, "Button", i + 1); Next FEnd Procedure BtnS(num); Dim i; For i = 1 To Length(num); Btn1(Copy(num, i, 1)); Next; FEnd Procedure Btn1(nm); MouseOrg(h_nm[nm], 2); KBD(VK_SPACE); MouseOrg(0); FEnd
|
No.4206 2017/07/07(Fri) 09:58:37
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / 山ちゃん |
|
|
(問1) >下記のコードのどこに問題があるのでしょうか。 (問2)でも触れられていますが、正確なアイテム名が指定されていないためです。 satocha様の回答にも記載されていますね。
//以下は、記録機能(高レベル記録)を利用して作成したコードです。windows7用電卓操作 id = EXEC("calc") //id = GETID("電卓", "CalcFrame", -1) 電卓起動はEXEC使用へ手を加えました SLEEP(1) CLKITEM(id, "普通の電卓", CLK_MENU, False) id = GETID("電卓", "CalcFrame", -1) CLKITEM(id, "1", CLK_ACC) CLKITEM(id, "加算", CLK_ACC) CLKITEM(id, "2", CLK_ACC) CLKITEM(id, "等号", CLK_ACC)
(問2) >下記のコードのどこに問題があるのでしょうか。 GetItemの種別の指定です。
ITM_ACCCLK // アクセシビリティ経由:クリック可能な物 を指定して実行
id = EXEC("calc") for i = 0 to GetItem(id, ITM_ACCCLK)-1 print ALL_ITEM_LIST[i] next
//実行結果 メモリのクリア バックスペース 7 4 1 0 メモリ呼び出し 入力のクリア 8 5 2 メモリ保存 クリア 9 6 3 小数点 メモリ加算 符号切り替え 除算 乗算 減算 加算 メモリ減算 平方根 パーセント 逆数 等号
>正確な名称を取得したいのですが >どのようにすればよいでしょうか。 ここは自分も悩むことがあるので、上手く回答できないですが、 satocha様、MM様の回答されているツール(UWSCコードの断片生成器)を利用してみる 記録機能(高レベル記録)を利用してみる 取得する系の関数で全ての種別を試してみる でしょうか。
>しろまさ様 いつも参考にさせて頂いています。ありがとうございます。
|
No.4213 2017/07/08(Sat) 00:10:06
|
|
☆ Re: UWSCのClkItemの使い方と名称の取得方法 / YY |
|
|
satocha さん 教えていただきましたコードでうまくいきました。 ありがとうございました。
satocha さん、MM さん UWSCコードの断片生成器使って見ました。 +や=が加算や等号になっているのを確認できました。 これらを取得したコードも書かれているので 何で取得したのかが分かり便利ですね。 ありがとうございました。
しろまさ さん 今はまだよく理解できないけど 今後の参考にさせていただきます。 ありがとうございました。
山ちゃん さん itm_btnではなくITM_ACCCLKでしたか。 このあたりがまだあまりよく理解できていません。 UWSCコードの断片生成器を利用してみるようにします。 とても分かりやすい説明ありがとうございました。
|
No.4215 2017/07/08(Sat) 15:14:34
|
|