[ 掲示板に戻る ]

過去ログ閲覧モード

cmd.exe画面内の文字を取得 / beginner
コマンドプロンプトに表示されている文字を取得する方法はあるのでしょうか?

Exec("cmd.exe")

でプロンプトを開くと、
osのバージョンや著作権表示の後、
system32>
といった表示がされますが、
この表示を取得する方法を知りたいのです。
getstrやgetitemなどの関数は試してみたつもりなのですが、
いずれもうまくいきませんでした。

どうぞよろしくお願いします。

No.1906 2015/11/28(Sat) 20:48:34

Re: cmd.exe画面内の文字を取得 / stuncloud
id = exec("cmd")
// Ctrl+Aで全体選択した後Enterでクリップボードにコピー
sckey(id, VK_CTRL, VK_A, VK_RETURN)
print getstr(0)

こんなのでどうでしょうか

No.1907 2015/11/28(Sat) 21:55:17

Re: cmd.exe画面内の文字を取得 / えあり
>(c) 2013 Microsoft Corporation. All rights reserved.
が必要な情報とは思えないけど

>Microsoft Windows [Version 6.3.9600]
こっちなら「Ver」ってコマンドの戻り値だよ

戻り値=doscmd("ver") でいいんじゃない?

No.1909 2015/11/29(Sun) 12:28:08

Re: cmd.exe画面内の文字を取得 / 森
"system32>" を取得したいということでしょうか?

カレントディレクトリを知りたいということなら、
UWSCの特殊変数 GET_CUR_DIR で取得できますよ。

msgbox(GET_CUR_DIR + ">")

No.1911 2015/11/29(Sun) 17:57:24

Re: cmd.exe画面内の文字を取得 / beginner
みなさんありがとうございます。

ウィンドウズのバージョンや、カレントディレクトリを取得したいのではなく、
cmd.exeに表示される文字そのものを取得する必要がありましたので、
stuncloudさんの方法が最も近く、流用させて頂きました。
流用と申したのは、cmd画面では、Ctrl+Aによる全選択が使えないからでして、
(貼り付けなども、Ctrl+Vではできません、「^V」と表示されてしまうのです)
画面上で右クリック>すべて選択(S)>エンターでコピー
すなわち、

CMDID = GetID("cmd.exe")

MouseOrg(CMDID)

Btn(Right , 0 , Status(CMDID , ST_Width) - 50 , Status(CMDID , ST_Height) - 20)

Kbd(VK_S)
sleep(0.1)
Kbd(VK_Enter)

このように画面上にポインタを持って行く方法をとりました。

完全に具体的にお話ししていいのか判断しかねるので少しぼかすのですが、
フリーソフトの中に、cmd.exeで動かすのが前提のものがありまして、
(GUIがなく、exeファイルをcmd.exe上で入力し、走らせる必要があります、
ReadMeにもそのように記述があります)
これの動作が終わっているかどうかを判定するために、
画面に表示される文字の取得が必要と言うことでした。

動作中は/1000でタイマーが上がっていき、終わると当然
・・・System32>
と表示されますので、
取得した画面上の文字の最後が「>」になったら動作が終わったとみなし、
次へ進むようにプログラムを組みたかったからです。

後学のためにも、他にcmd.exeの画面内の文字を取得する方法があれば是非知りたいですが、
ひとまず満足いく結果が得られそうですので、解決済みとさせていただこうと思います。
みなさんどうもお世話になりました!

No.1912 2015/11/29(Sun) 23:06:33

Re: cmd.exe画面内の文字を取得 / えあり
プログラムが現在動作中かどうか調べるコマンドを利用した方が手っ取り早いかと思います
tasklist /FI "imagename eq 何とかかんとか.exe"


>フリーソフトの中に、cmd.exeで動かすのが前提のものがありまして、

DosCmd("なんとかかんとか.exe", FALSE, True)

これでもちゃんとCMDから動かしたことになりますし、
終わってから次の処理ができるように最初からそういう設定ができますよ

No.1913 2015/11/30(Mon) 01:20:07

Re: cmd.exe画面内の文字を取得 / Liners
stuncloudさんのは、WIN10の新機能だったりします。
>後学のためにも、他にcmd.exeの画面内の文字を取得する方法があれば是非知りたい
その一つにメニューからの選択があります。

id = exec("cmd.exe")
sckey(id,VK_Alt, VK_Space, E, S)
sckey(id,VK_Enter)
msgbox(getstr(0))

No.1914 2015/11/30(Mon) 03:00:16

Re: cmd.exe画面内の文字を取得 / stuncloud
> WIN10の新機能だったりします。
そうでした…うっかりしてました、申し訳ない

No.1915 2015/11/30(Mon) 09:47:04

Re: cmd.exe画面内の文字を取得 / beginner
やはり見に来たかいがありました。

>> stuncloudさん
レスはLinersさんに対してついていますが、私に謝って頂いていると考え、このまま続けます。
当方あいにくまだWindows7Proや8.1なんです、
それでもこの方法でうまくいったことにはかわりありません、
感謝しています、本当にありがとうございます。

>> Linersさん
なるほど、こんなところにメニューがあったのですね・・・・
Altをおすとメニューバーが見えるタイプ(最近多いですよね)は疑ってみて、
一度Altをおしてみてはいたのですが、こんなことができるとは思いませんでした。
今からこれを使って書き換えてみます。この方がスマートですね!
毎度ありがとうございます、いつか必ずあるであろう、次の機会にも是非w

>> えありさん
私はDOS自体にはあまり詳しくないので、色々ググってみないとわからない内容なようですね・・・
これに関しては調べてみます。

DOS上で、
なんとかかんとか.exe
を実行するとき、いくつかの引数を同時に入力する必要があるのですが、
DosCmdでその引数を入れる方法がよくわかりません、ご存じでしょうか?
(こんな風に
"なんとかかんとか.exe" 引数1 オプションコマンド 引数2
引数やオプションコマンド「-A」などを同時に入力する必要があるんです)
それがわかれば、おっしゃる通りで、DosCmdの引数である同期フラグを使って、
機能を実現することができそうだとは思います!

No.1922 2015/12/01(Tue) 11:39:59

Re: cmd.exe画面内の文字を取得 / beginner
連投失礼します。

cmd.exeに入力したい文字列すべてを変数にいれ、
これをクリップボードに送って貼り付ける方法をとっていたのですが、
これをそのままDosCmdの第1引数とすることでうまくいってしまいました。

ところが、
DosCmd(入力したい文字列の変数 , false)
と実際にやってみると、後にTrueを入れていても画面内の文字をコピーすることはできません。
実行中に画面内に完成されるファイル名が表示されているので、
これを取得しなければならないことをすっかり失念しており、
結局先にcmd.exeを表示してidを取得する方法をとるしかないことに気づきました。
この方法ですでにうまくいっていますので、特に急ぎでもなく、、
おそらくこれはUWSCの質問にならないので、スルーして頂いても結構なのですが、
tasklist・・・
というのは、
windowsタスクマネージャーのプロセスに表示されているものをリストにするコマンドとお見受けしましたが、
これを具体的にどのように使うのでしょうか?
どこに打てばいいのか、ifのような条件分岐にどのように使うのか、よくわかりません。

No.1923 2015/12/01(Tue) 12:42:37

Re: cmd.exe画面内の文字を取得 / stuncloud
docsmdの第二、第三引数がともにfalseならコマンドの出力が戻り値になります

結果 = doscmd("ping.exe google.com")
print 結果

// ---printされた結果---
// google.com [216.58.220.238]に ping を送信しています 32 バイトのデータ:
// 216.58.220.238 からの応答: バイト数 =32 時間 =5ms TTL=53
// 216.58.220.238 からの応答: バイト数 =32 時間 =18ms TTL=53
// 216.58.220.238 からの応答: バイト数 =32 時間 =3ms TTL=53
// 216.58.220.238 からの応答: バイト数 =32 時間 =4ms TTL=53
//
// 216.58.220.238 の ping 統計:
// パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
// ラウンド トリップの概算時間 (ミリ秒):
// 最小 = 3ms、最大 = 18ms、平均 = 7ms
// ----------------

No.1924 2015/12/01(Tue) 15:17:20

Re: cmd.exe画面内の文字を取得 / beginner
ありがとうございます、ちゃんと試してみたらまさにその通りでした。
実はちょっとやってみたことはあったのですが、
返される内容(stuncloudさんのいうところの、「結果」)が、
10001.10002.10003.
みたいな、タイマーの表示がされているだけにみえたんで、
敬遠していました。
(デバッガの右側だけてみていました)
メモ帳に貼り付けてみたらその間に内容がちゃんと出ていました。
完全に解決できそうです、本当にありがとうございました!

No.1928 2015/12/02(Wed) 05:34:07
Access violationについて / inherit
Win7でUWSC5.2Freeを使用しています。
実行中に下記の様なダイアログが表示される時があります。
原因として何が考えられますか?
解決方法等ご存知でしたら情報をお願いします。

KansuCall:Access violation at address 006257D4 in module 'uwsc.exe'.Read of address 00000000
D:\xxx\xxx\xxx\xxx.UWS: 477行目:IF(CHKIMG(Const_IMG_Path)) THEN

この行を通すと100%出る現象ではないみたいですが・・・。

No.1908 2015/11/29(Sun) 10:01:56

Re: Access violationについて / inherit
nullってたのが問題っぽい。
No.1927 2015/12/01(Tue) 22:21:40
複数の画像の処理について / tamako
昨日よりUWSCをはじめた初心者です
画像認識の処理について

画面上 画像Aが複数個(最高5個まで)表示されています。
Aをクリックして画像BかCが現れます。
BがあればBをクリック。
BがなければCをクリック。
BかCをクリックするとクリックした画像Aは消えます。
これが画面上の画像Aが消えるまで処理したいのです。

画像A・B・Cの個々は判別できているのですが
1個目のAクリック→BかCをクリックまでは完了しても2個目の処理に取り掛かれません。
またAがあるのに判定してくれない場合もあります。

//メイン//
WHILE TRUE
dim imgX[10], imgY[10] //画像の座標を格納する配列。よくわかっていません拾い物のまま。
hits = CHKIMG( "A.bmp", 2, , , , , -1,IMG_MSK_BGR2) //画像を探してヒットした個数を格納
ifb hits > 0
For i = 0 To hits-1
imgX[i]=ALL_IMG_X[i] // 画像の座標をimgXへ代入
imgY[i]=ALL_IMG_Y[i] // 画像の座標をimgYへ代入
BTN(LEFT, CLICK, imgX[i], imgY[i])
SLEEP(1)
Call サブルーチン.uws//保存してあるファイル「サブルーチン」を呼び出す
SLEEP(1)
NEXT
ENDIF
WEND

//サブルーチン//
IFB CHKIMG( "B.bmp",1 , , , , , ,IMG_MSK_BGR2)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
ELSE
IFB CHKIMG( "C.bmp", 1, , , , , ,IMG_MSK_BGR2)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
ENDIF
ENDIF
SLEEP(3)
call メイン.uws    //メインスクリプトを呼び出して処理を続行する。
exit

あれこれ試行錯誤をしてみたのですがどうにもならず。
ご教授いただけないでしょうか?

No.1895 2015/11/25(Wed) 20:14:14

Re: 複数の画像の処理について / daikirin
endifの位置ってこれでいいんだっけか?
俺も初心者だからよくわからないけど、サブルーチンのif部分がこれじゃ動かないような気がする
更に言うとcall メイン.uwsもいらないと思う

No.1896 2015/11/26(Thu) 04:16:10

Re: 複数の画像の処理について / えあり
よくわかんないけどこれでいいんじゃない?
難しく考えすぎじゃないの?

While ChkImg(画像A)
  BTN(Left, Click, G_IMG_X, G_IMG_Y)

  While true
    Ifb ChkImg(画像B)
      BTN(Left, Click, G_IMG_X, G_IMG_Y)
      Break
    ElseIf ChkImg(画像C)
      BTN(Left, Click, G_IMG_X, G_IMG_Y)
      Break
    EndIf
  WEnd
WEnd

No.1897 2015/11/26(Thu) 13:56:45

Re: 複数の画像の処理について / tamako
daikirinさん
ド素人丸出しですみません。
私もどこか違うと感じていますが
少なくともたまにちゃんと処理をしたりするのでどこが悪いかわかっていません。

えありさん
ありがとうございます!それがしたかったことです。
ブロックに分けて書いていただいたのでよくわかりました。
最初それに近いものを作ってたぶんENDIFとWENDの数がおかしくて動かなかったので
あちこちつなぎ合わせて上記のものになりました。

動いたり動かなかった原因を探して返信遅くなってすみません。
単純に画像AがMSK_BGR_4にしても拾わない微細な違いのある2種類の画像ということが
わかったので画像A1と画像A2をえありさんに教えていただいたものに当てはめて
2回処理することですっきりと動きました。
ありがとうございました。

No.1898 2015/11/27(Fri) 07:37:28

Re: 複数の画像の処理について / tamako
連投で申し訳ないのですが、上記の作業を行う時サイトが時々重くて
固まってしまう時があります。
その場合3分間カーソルが動かないときはブラウザを更新させたいのですが
どうも入れ子をどこにしていいか悩んでいます

id=GETID("<ブラウザタイトル>")
CTRLWIN(id, ACTIVATE)

t=GETTIME()
x=G_MOUSE_X
y=G_MOUSE_Y

WHILE (TRUE)

//3分(180秒)サイクルでチェック
WHILE ((GETTIME()-t)<180)

//カーソル移動チェック
  IFB ((x<>G_MOUSE_X) OR (y<>G_MOUSE_Y)) THEN
t=GETTIME()
x=G_MOUSE_X
y=G_MOUSE_Y
ENDIF
※?@
WEND
※?A
//WEB更新
KBD(VK_F5, CLICK)
※?B
WEND

にえありさんに教えていただいた
※−−−−−−−−−−−−−−−−−−
While ChkImg(画像A)
  BTN(Left, Click, G_IMG_X, G_IMG_Y)

  While true
    Ifb ChkImg(画像B)
      BTN(Left, Click, G_IMG_X, G_IMG_Y)
      Break
    ElseIf ChkImg(画像C)
      BTN(Left, Click, G_IMG_X, G_IMG_Y)
      Break
    EndIf
  WEnd
WEnd
−−−−−−−−−−−−−−−−−−−
を※?@?A?Bどこに入れ込めばいいのか
教えていただけないでしょうか?
(初歩的で申し訳ないのですがいつもそこで悩んでいます)

※の動作中に3分間ビジーがかかってしまった場合
IEの画面を更新して再び※を実行したいのです

No.1899 2015/11/27(Fri) 11:01:37

Re: 複数の画像の処理について / koi
>を※?@?A?Bどこに入れ込めばいいのか
考え方が逆
あなたの書いたロジックの中にえありさんのロジック入れても
無限ループしてる場所があるので
そこでループしたら以後あなたの時間監視ロジックは動きません

No.1901 2015/11/28(Sat) 05:32:58

Re: 複数の画像の処理について / tamako
逆を入れ子にすればいいのか考えてもお手上げで、今1個ずつ試しているので、すみません。完全勉強不足です。
No.1905 2015/11/28(Sat) 19:39:45

Re: 複数の画像の処理について / えあり
よくわかんないけど
難しく考えすぎじゃないの?

No.1910 2015/11/29(Sun) 12:42:04

Re: 複数の画像の処理について / たろこ
固まる=読み込み処理中ってことですか?

起動時の時間等取得しておいて、
画像ループの際に3分超えているか比較(IF)し
超えていたら再読み込みとかしたらどうでしょうかね。
読み込めたら時間を更新。

IE読み込みが終わったかどうかは
IE.Busy=FALSE になっていることと、
IE.readyState = 4になっていることだと思います。

No.1921 2015/12/01(Tue) 11:39:26
Callにおけるファイル名について / PQ
UWSC初心者で、すが、よろしくお願いします。
もしかしたら初歩的な質問かもしれませんがご容赦下さい。
他のUWSCファイル(スクリプト)を呼び出す「Call」について、
読みだしたいファイル名に()「かっこ」が含まれている場合、どう指定すればよろしいですか?
それともそういうファイルは読み込む事が出来ませんか?
例:
Call 次のスクリプト(パターンA).uws
とやると、()が引数であると見てしまい、次のスクリプト.uwsというファイル名を探そうとしてしまいます。
例で言うと実際にあるファイル名は「次のスクリプト(パターンA).uws」となります。
方法があればご教授下さい。お願いします。

※ちなみにファイル名を変えれば良いという解決方法は無しの方向でお願いします。

No.1916 2015/11/30(Mon) 16:35:18

Re: Callにおけるファイル名について / umiumi
ファイル名に括弧は使えません。
現状での仕様です。

No.1918 2015/11/30(Mon) 23:39:44

感謝 / PQ
あ〜…やっぱりそういうファイルは読み込む事が出来ませんか…。
ファイル名の変更か、別の運用方法を考えます。
返信ありがとうございました!

No.1919 2015/12/01(Tue) 01:25:55
縦ずれ / 初心者

多分簡単な話だと思うのですが相談させてください。

デスクトップを右クリック→個人設定→デスクトップアイコンの変更でコンピュータとネットワークをデスクトップに表示するというのを記録して作成したのですが
記録した結果が成功したのを確認してexe化した後ドキュメントからexeをデスクトップに移してexeを起動したり再起動したりすると結果が最初の右クリックで縦にずれてしまいます。
なぜかそのままのアイコンの位置で時間を置いてデスクトップのexeをクリックしたら成功したりします。
なにが原因なんでしょうか?

BTN(RIGHT,CLICK,1110,69,219)
BTN(LEFT,DOWN,1089,353,16)
BTN(LEFT,UP,1090,353,62)
ACW(GETID("個人設定","CabinetWClass"),153,274,960,681,0)
BTN(LEFT,CLICK,332,401,78)
ACW(GETID("デスクトップ アイコンの設定","#32770"),150,150,479,430,0)
BTN(LEFT,CLICK,268,291,125)
BTN(LEFT,CLICK,266,288,62)
BTN(LEFT,CLICK,266,246,10)
BTN(LEFT,CLICK,540,552,10)
BTN(LEFT,DOWN,393,551,47)
BTN(LEFT,UP,392,551,93)
ACW(GETID("個人設定","CabinetWClass"),153,274,960,681,0)
BTN(LEFT,CLICK,1090,282,16)

No.1917 2015/11/30(Mon) 17:54:35
多重ループについて質問です / kaito
http://i.imgur.com/6SeSLvd.png
上の画像みたいにしたいのですが
どうすればいいのでしょうか。

While true //文全体
While true

IF chkimg("A.bmp") then
BTN(Left, Click, G_IMG_X, G_IMG_Y)
Break
ElseIf chikmg("B.bmp")
IF chkimg("zyunbi.bmp") then
BTN(Left, Click, G_IMG_X, G_IMG_Y)
Break
Break
Ifend
wend
wend

Aが見つからない場合Bが見つかったとして、Break×2の所が反応しないのですがなぜでしょう。

No.1902 2015/11/28(Sat) 14:07:01

Re: 多重ループについて質問です / stuncloud
なにがしたいのかさっぱりわかりませんが多重ループ抜けるなら
break n
です
ループ2つを抜けるなら
break 2

あとIFのブロックが閉じてないしIfendなんてものはないしで、そもそもエラーで動かないでしょうこれ

No.1903 2015/11/28(Sat) 16:33:27

Re: 多重ループについて質問です / kaito
2日半Break 2にすれば良い事に築きませんでした。。。
ありがとうございます!

No.1904 2015/11/28(Sat) 17:37:50
条件判定について。 / kaito
連投すいません
A、B、C画像いずれかがなければDをクリックし
A、B、Cのいずれかの画像があればループを終了する
と言う感じで組みたいのですが
WHILE (CHKIMG("A.bmp")=FALSE)
WEND
このままではAの画像がでるまでループです
ループ途中にA画像B画像C画像を検索し
なければDをクリック。
頭爆発しそうです
どうかご教授お願い致します。

No.1891 2015/11/25(Wed) 16:08:11

Re: 条件判定について。 / stuncloud
ifの使い方を覚えましょうね

if chkimg(A) or chkimg(B) or chkimg(C) then
 // いずれかの画像があった場合
else
 // いずれの画像もない場合
endif

ループは break で抜けられます
頭は爆発してもいいので、いろいろ試行錯誤しながらとにかく書いて試すことが大事です

No.1892 2015/11/25(Wed) 17:45:01

Re: 条件判定について。 / kaito
stuncloud様
ご回答ありがとうございます。

While True //suraimuが現れるのを待つループ
 if chkimg("A.bmp") or chkimg("B.bmp") or chkimg("C.bmp")
  BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) //見つかったのでクリックする
  Break //ループを脱出する
 EndIf
WHILE (CHKIMG("D")=FALSE)
//画像がでるまで待つ
SLEEP(0.01)
//0.01秒待つ
WEND
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
//画像が出たらクリック
sleep(2)
Wend

ここまでは出来ましたが
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) //見つかったのでクリックする
ここがクリックしてくれません。
質問ばかりですいませんが
ご教授願います。

No.1893 2015/11/25(Wed) 17:52:46

Re: 条件判定について。 / kaito
解決いたしました。
ありがとうございました

No.1894 2015/11/25(Wed) 18:58:32
指定画面タイトルのときのみ動作、ESCで強制終了 / たろこ
お世話になります。

1.「スケジュール」が出てきたら
「スケジュール(S)」をクリックします

2.(1)をやると「スケジュール追加・設定」が出てくるので
 実行ボタンを押します
 HOUR,MINUTEを入力し、OKを押します。

<やりたいこと>
・ESCを押したら強制終了できるようにしたい
・手順1が終わっていない場合、手順2には進めない
 (現時点では手順1を飛ばして手順2を表示した場合でも、手順2も実行されてしまいます)
・使った時間のログをどこかに書き出したい…
・最初にINPUT等で数値のみ入力させ、HOUR、MINUTEに適用したい

-----------------------------------------
HOUR=13
MINUTE=22
TTTT=0

WHILE !GETKEYSTATE(VK_ESC)

If GETKEYSTATE(VK_ESC) then Exit
WHILE True
sleep(1)
id = GETID("スケジュール", "#32770", -1)
sleep(0.5)
CLKITEM(id, "スケジュール(S)", CLK_BTN)
CLKITEM(id, "OK", CLK_BTN)
TTTT=1
SLEEP(1)
break
WEND

If TTTT=1 then
id = GETID("スケジュール追加・設定", "#32770", -1)
CLKITEM(id, "* 実行", CLK_BTN)
SENDSTR(id, HOUR, 1, True)
sleep(1)
SENDSTR(id, MINUTE, 2, True)
sleep(1)
CLKITEM(id, "OK", CLK_BTN)

MINUTE=MINUTE+1
IF MINUTE=60 then
HOUR=HOUR+1
MINUTE=0
ENDIF
TTTT=0
Endif
WEND

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

No.1868 2015/11/18(Wed) 13:49:14

Re: 指定画面タイトルのときのみ動作、ESCで強制終了 / stuncloud
> ・ESCを押したら強制終了できるようにしたい

// これをスクリプトの最初の方に書いておく
sethotkey(VK_ESC, 0, "ForceStop")

// これをスクリプトの最後に書いておく
procedure ForceStop()
 exitexit
fend

> ・手順1が終わっていない場合、手順2には進めない
>  (現時点では手順1を飛ばして手順2を表示した場合でも、手順2も実行されてしまいます)


手順1を飛ばさなければ良いのではないでしょうか

> ・使った時間のログをどこかに書き出したい…

fopen、fput、fclose

または

// これをスクリプトの最初に書いておく
OPTION LOGPATH="動作ログ.txt"

// print窓を非表示にする
logprint(false)

// 記録したいログの内容をprintする
print "記録したいログ"

> ・最初にINPUT等で数値のみ入力させ、HOUR、MINUTEに適用したい

time = input("時間をhh:mm形式で入力")

HOUR = split(time, ":", TRUE, TRUE)[0]
MINUTE = split(time, ":", TRUE, TRUE)[1]

No.1869 2015/11/18(Wed) 14:48:37

Re: 指定画面タイトルのときのみ動作、ESCで強制終了 / たろこ
stuncloud様

丁寧に回答頂きありがとうございます。

Escのほうは、試してみます!!
ログについてもありがとうございます。

> ・手順1が終わっていない場合、手順2には進めない
>  (現時点では手順1を飛ばして手順2を表示した場合でも、手順2も実行されてしまいます)


手順1を飛ばさなければ良いのではないでしょうか
手順1を飛ばさなければ良いのは分かっているのですが、
自分で組んでみたら飛ばされてしまいました。

WHILE True//無限ループ
sleep(1)
id = GETID("スケジュール", "#32770", -1)
ids=GETID("スケジュール追加・設定", "#32770", -1)
If id>1 and ids<1 then
sleep(0.5)
CLKITEM(id, "スケジュール(S)", CLK_BTN)
CLKITEM(id, "OK", CLK_BTN)
TTTT=1
SLEEP(1)
break
endif
WEND

上記のようにしてみましたが、動かなくなってしまいました。
ウィンドウ名が完全一致のときのみ動作させれば
これらの問題は解決するのですが、調べてもそのような方法は無く…

どのように直せば良いのかアドバイス頂けますでしょうか。

申し訳ありませんが、よろしくお願いいたします。

No.1871 2015/11/19(Thu) 14:00:02

Re: 指定画面タイトルのときのみ動作、ESCで強制終了 / stuncloud
> ids=GETID("スケジュール追加・設定", "#32770", -1)
のせいでしょう、ここはまだ「スケジュール追加・設定」が出てこなくていい段階だと思うんですけど
にもかかわらず出るまで待ち続けてるので止まってしまってるということじゃないですかね

タイトルの完全一致で処理するならこんな感じはどうでしょう

id = getid("スケジュール", "#32770", -1)
select status(id, ST_TITLE)
 case "スケジュール"
  // 「スケジュール」ダイアログでの処理はここでやる
 case "スケジュール追加・設定"
  // 「スケジュール追加・設定」ダイアログでの処理はここでやる
 default
  // 完全一致しない場合はここにくる
  // 今回の件では何もしなくて良い
selend

No.1872 2015/11/19(Thu) 18:45:21

Re: 指定画面タイトルのときのみ動作、ESCで強制終了 / たろこ
stuncloud様

返信おくれて申し訳ありません!

あぁ…そういうことだったのですね。

あ、UWSCもSelect使えたのですね…!
ありがとうございますorz
大変勉強になりました!

試してみたら上手くいきました!!!
本当にありがとうございました。

No.1886 2015/11/25(Wed) 09:34:01
マウス操作の記録と再生についてのご質問 / masa
いつもお世話になります。
マウス操作の記録(R)と再生(P)についてご質問させてください。

?@文字を見やすくするため普段ディスクトップのカスタマイズで文字を大(150%)を
選んでいるのですが、その場合マウス操作の記録の座標が3分の2の大きさになり、
再生するとマウス座標が左上の方にずれてしまいました。文字を小(100%)にすれば
正しい座標で記録されますが、できれば文字を大のまま使えればと思うのですが
可能でしょうか。

?Aマウス操作の記録(R)ですがマウスホイールの操作は記録できるのでしょうか。(画面の上下など)

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

No.1877 2015/11/22(Sun) 18:10:06

Re: マウス操作の記録と再生についてのご質問 / umiumi
>?@文字を見やすくするため普段ディスクトップのカスタマイズで文字を大(150%)を
確認しました。
対処します。

>?Aマウス操作の記録(R)ですがマウスホイールの操作は記録できるのでしょうか。
できません。
仕様です。

No.1880 2015/11/23(Mon) 22:33:52

Re: マウス操作の記録と再生についてのご質問 / masa
?@ありがとうございます。
ちなみに文字は中(125%)でも座標は正しく記録されてました。
?Aわかりました、慣れてませんが画面の上下はキーボードの上下キーかスクロールバーをマウスで操作します。

ご回答ありがとうございました。

No.1881 2015/11/24(Tue) 09:22:35
IE11でのURL取得について / オウミ
いつも拝見させていただいております。
一点質問させてください。

IE11でIE.document.URLを使ってアドレスバーのURLを取得していますが、
正しく取得できたり、できなかったりすることがあります。
(取得できないことのほうが多いです)
取得できなかった時は「about:blank」が返ってきてしまいます。

環境としてはIE11を1つだけ開き、タブも1つのみで、あらかじめ開いておいたサイトのアドレスを取得する感じです。

私の知識不足で、自身では解決ができませんでした。
何か考えられる原因はありますでしょうか?
よろしくお願いします。

No.1873 2015/11/20(Fri) 18:35:53

Re: IE11でのURL取得について / stuncloud
IE.LocationURL ではどうでしょうか

あとは…あらかじめ開いておいた、ということはgetactiveoleobjということですよね
もしかしたら開いてるものとは別のIEになっちゃってるのかもしれませんね
最近のIEって起動・終了を繰り返してたら見た目はいないんですけど実は残ってたりすることがあるっぽい?ので
IEのプロセスが残ってたらいったん全部killしてから試してみたらどうでしょう

No.1874 2015/11/21(Sat) 00:27:49

Re: IE11でのURL取得について / オウミ
stuncloudさん

回答有り難うございます。
実際の動作としてはウィンドウをアクティブにする際にいないはずのabout:blankがアクティブになってしまい操作ができない状態でした。getactiveoleobjの中にタイトル指定をすることでとりあえずの解決をしました。
初歩的なことで申し訳ありませんでした。
ありがとうございました!

No.1879 2015/11/23(Mon) 22:30:09
全1170件 [ ページ : << 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 ... 117 >> ]