[ 掲示板に戻る ]

過去ログ閲覧モード

EXCELの保護について / モリ
XLGETDATAでデータを更新する前に保護を解除して、更新後、保護ほ設定するにはどうにすればよろしいでしょうか。
No.2499 2016/06/15(Wed) 18:51:34
画像の一致率を出したいです。 / ゆい
UWSCのCHKIMGを使った画像認識は完全一致でなければ検出されません。

OPENCVの形状マッチングのように一致率を出し、一致率が一定以上高かった場所の座標を返すようなことはできないでしょうか。
ほかの言語を使ってもかまいません。UWSCにそれを組み込む予定です。
できればMOUSEROGを使ったバックグラウンドにも対応できればありがたいです。
どなたかご教授いただけないでしょうか。

No.2489 2016/06/12(Sun) 09:01:58
ウインドウがない場合のGETIDの取得時間 / middle
GETIDにてウインドウIDを取得していますが
指定ウインドウがない場合に時間がかかってしまいます。
タイトルに一致しない場合、あいまい検索をするようで時間がかかるようです。
完全一致のみに限定できないでしょうか?

No.2484 2016/06/11(Sat) 15:09:37

Re: ウインドウがない場合のGETIDの取得時間 / routa
ヘルプで引数の「待ち時間秒」を確認しましょう。
No.2486 2016/06/12(Sun) 01:52:47
ファイルでの起動制御 / しろ
UWSCスクリプト内でスクリプトの2重起動を制御する方法があると聞いたのですが、ご存じありませんか?
No.2428 2016/05/31(Tue) 02:54:03

Re: ファイルでの起動制御 / koi
他にいい方法があるのかもしれませんが私は以下のようにしています

//起動済み 同一 スクリプトを閉じる
FOR I = 0 TO GETALLWIN() - 1
 IF (STATUS(ALL_WIN_ID[I], ST_PATH) = GET_UWSC_DIR + "\uwsc.exe")
  IF (POS(GET_UWSC_NAME, STATUS(ALL_WIN_ID[I], ST_TITLE)) <> 0)
   DOSCMD("taskkill /pid " + STATUS(ALL_WIN_ID[I], ST_PROCESS))
  ENDIF
 ENDIF
NEXT

私の場合 あとから起動したものを有効にしたいので
上記のように(起動済みスクリプトを強制終了)していますが
そこの処理を自分の好みに合わせて変更すればいいかと思います

No.2429 2016/05/31(Tue) 03:57:47

Re: ファイルでの起動制御 / しろ
koisさん

レスありがとうございます。

その方法ではなく、他にあった記憶があります。

ソースにに重複起動を制御する方法がありました。

No.2439 2016/05/31(Tue) 19:37:40

Re: ファイルでの起動制御 / 森
EXE化の際に「多重起動を許さない」というオプション(チェックボックス)がありますが、そのことでは無いでしょうか?
No.2442 2016/06/01(Wed) 00:28:47

Re: ファイルでの起動制御 / しろ
森さん

レスありがとうございます。

それではありません。

No.2452 2016/06/03(Fri) 05:41:33

Re: ファイルでの起動制御 / しゅん
Mutexを使えば良いかと思います。
No.2453 2016/06/03(Fri) 12:00:23

Re: ファイルでの起動制御 / しろまさ
Mutex・・・懐かしいですね。。約10年前のサンプルコードでよければ以下をどうぞ^^

http://siromasa.html.xdomain.jp/uwsc/u_sample/index.html
2007/04/16 [Class] 共有メモリを使用しプロセス間通信 (文字列のみ) ⇒ Class_SharedMemory.uws
2007/05/05 [Class] ローカルプロセス間 の 重複処理を防止する (同期をとる) ⇒ Class_Mutex.uws [Treasure]
2007/07/13 [Class] ネットワークプロセス間 の 重複処理を防止する (同期をとる) ⇒ Class_MutexForUNC.uws [Treasure]

No.2454 2016/06/03(Fri) 13:58:57

Re: ファイルでの起動制御 / 森
単純ですが、これでどうでしょう?
IF GETID(GET_UWSC_NAME,"TUMain_uwsc") > 0 THEN EXITEXIT

No.2455 2016/06/03(Fri) 17:11:01

Re: ファイルでの起動制御 / しろ
みなさん

レスありがとうございます。

残念ながら、違います。

うーんどうしたものかな。

No.2456 2016/06/04(Sat) 03:30:44

Re: ファイルでの起動制御 / 森
目的は多重起動の抑制では無いのですか?
No.2457 2016/06/04(Sat) 08:52:11

Re: ファイルでの起動制御 / POOLA
まず、どちらでしょう?

・「2重起動を制御する方法がある」と聞いたので、その真偽を確かめたい
・2重起動を制御したい

前者なら、言った人に聞くかソースを明らかにすればいいと思います。
後者なら、やりたいことやその理由をもっと具体的に言う必要があると思います。

No.2458 2016/06/05(Sun) 08:36:05

Re: ファイルでの起動制御 / しろ
みなさま>レスありがとうございます。

目的はUWSCスクリプト内で2重起動を制御する方法が昔あったのですが、思い出せずにいます。

とりあえずではありますが、koi様のご紹介いただいた方法で、プロセスを殺すのではなく、起動を制御する方向で考えたいと思います。

No.2482 2016/06/11(Sat) 02:01:54
値の取得方法 / ミスターワタナベ
ALL_ITEM_LISTの10番目の値を取得したいのですが
for分で回すより良い方法はないのでしょうか?

for i = 0 to GetItem(ID, ITM_STATIC, 1)-1

next

print ALL_ITEM_LIST[10]// この値を取得したい。

No.2470 2016/06/09(Thu) 22:09:37

Re: 値の取得方法 / ある
GetItem(ID, ITM_STATIC, 1)
print ALL_ITEM_LIST[10]

でダメでしたっけ??

No.2472 2016/06/10(Fri) 05:44:37

Re: 値の取得方法 / しろまさ
配列は 0 からだから10番目は ALL_ITEM_LIST[9]。
そういう話ではない?

No.2475 2016/06/10(Fri) 13:32:09

Re: 値の取得方法 / ミスターワタナベ
ありがとうございます。
GetItem(ID, ITM_STATIC, 1)
print ALL_ITEM_LIST[10]
で出来ました。
一行目の関数は変数に格納しなくてもいいんですね。

No.2479 2016/06/10(Fri) 18:34:57

Re: 値の取得方法 / ある
GETITEM()
を実行した時点でALL_ITEM_LIST配列に値が突っ込まれる、という認識です。
一行目を実行した時点で格納完了、という感じでしょうか。

No.2481 2016/06/10(Fri) 22:45:18
すでに開いているWebページのテキスト値読み込み / しゅん
すでにIE11で開いているWebページの指定文字列間のテキスト値をUWSCで読み込みたいんですが、
どなたかサンプルコードを教えてもらえないでしょうか?

No.2467 2016/06/09(Thu) 15:59:50

Re: すでに開いているWebページのテキスト値読み込み / しゅん
Webページからのテキスト読み込みが難しそうだったので、ちょっとやり方を変えてメモ帳にWebページのテキストをコピーしてメモ帳から
指定文字列間のテキスト値を読み取る方向に変えてみました。
しかしできずに困ってます。

BETWEENSTR関数はメモ帳では使えないのでしょうか?

No.2468 2016/06/09(Thu) 17:59:56

Re: すでに開いているWebページのテキスト値読み込み / ある
tag=IE.document.getelementsbytagname("div") //←該当タグ。divとかtdとかh3とか
for n=0 to tag.length-1
tex=tag.item(n).innertext
ifb pos("指定文字",tex)>=1 then
print tex
//ここで文字の抜出やらの加工処理
endif
next
//IE生成やbusywaitなどは省略

betweenstrはきっと使い方を間違えてると思うので、どういうコードを書いたか
載せられた方がいいかもです。

No.2471 2016/06/10(Fri) 05:42:40

Re: すでに開いているWebページのテキスト値読み込み / しゅん
あるさんレスありがとうございます。
ご指摘の通り、betweenstrの使い方が間違えてると思うんですけど初心者なので見当つきません。
以下のコードでスプリクトを起動させるとメッセージボックスは空白で
表示されます。エラーはでてません。

・指定文字列間の数字のみ取得したいので、メモ帳の保存は必要なし
・Webページからメモ帳にコピペされたテキストは空白を含む十数行


スプリクトは下記で記載してます。(手動記録を含む)
〜IEのコピペ省略〜
GID = EXEC("notepad")
sleep(1.0)
ACW(GETID("無題 - メモ帳","Notepad"),1148,170,283,752,0)
KBD(VK_CTRL,DOWN,157)
KBD(VK_CTRL,DOWN,500)
KBD(VK_CTRL,DOWN,47)
KBD(VK_CTRL,DOWN,31)
KBD(VK_CTRL,DOWN,15)
KBD(VK_V,DOWN,16)
KBD(VK_CTRL,UP,109)
KBD(VK_V,UP,0)

sleep(1.0)

MSGBOX("メモ帳に表示された文字列を取得します")

sleep(1.0)

STR = BETWEENSTR( GID ,"ポイント:","p")


MSGBOX(STR)

No.2473 2016/06/10(Fri) 09:40:25

Re: すでに開いているWebページのテキスト値読み込み / miles
STR = BETWEENSTR(GETSTR(GID),"ポイント:","p")//メモ帳から
STR = BETWEENSTR(GETSTR(0),"ポイント:","p")//クリップボードから

No.2474 2016/06/10(Fri) 11:02:01

Re: すでに開いているWebページのテキスト値読み込み / ある
解答はmilesさんが書かれているので簡単に補足だけ。
GIDのみだとウインドウidで、これをprintすると1とか2になると思います
GID内の文字列取得がGETSTR(GID)ですね
また単に文字列取得だけしたい場合はテキストに貼り付ける必要はなく
クリップボード経由で行うのが簡単。それがGETSTR(0)となります。

この場合、GID=EXEC(GID)以下全部消去してBETWEENSTRの行のみで完了となり便利です。

No.2477 2016/06/10(Fri) 14:58:42

Re: すでに開いているWebページのテキスト値読み込み / しゅん
milesさん、あるさんレスありがとうございます。
教えて頂きありがとうございました。
無事目的のテキスト値を取得することができました。
クリップボード経由のやり方も教えてくれてとても勉強になりました。
ありがとうございました。

No.2478 2016/06/10(Fri) 18:03:56
Call文のバグでしょうか? / siguma
[test01.uws]
FID = FOpen(".\test02.uws", F_READ)
FID2 = FOpen(".\test03.uws", F_WRITE)
FPut(FID2, FGet(FID, F_ALLTEXT), F_ALLTEXT)
FClose(FID)
FClose(FID2)
Call .\test03.uws

[test02.uws]
MsgBox("Hello World!")

としまして[test01.uws]を実行すると「Hello World!」と表示されます。(期待通り)


次に[test02.uws]を

[test02.uws]
MsgBox("こんにちは世界!")

と書き換えて再び[test01.uws]を実行した場合、「こんにちは世界!」と表示されるのを期待するのですが…

何故か「Hello World!」と表示されてしまいます。

もう一度実行してやっと「こんにちは世界!」と表示されます。


ちなみに最初の段階で[test03.uws]が存在してない状態で実行すると「FILE not found…」とエラーが表示されます
(通常「F_WRITE」引数を付けた場合はファイルが存在しない場合は新規作成するはずなのですが)


Windows 7 32bit
UWSC 最新版5.2.2.0

No.2463 2016/06/09(Thu) 01:27:38

Re: Call文のバグでしょうか? / しゅん
バグではありません。

CALLのヘルプには「Call 文 スクリプト(UWSファイル)を取り込む」とあります。
スクリプト起動時に、そのファイルをその場所に取り込むイメージです。

すなわち、起動時に「Hello World!」で取り込んでから開始し、「こんにちは世界」に書き換えて「Hello World!」を表示することになります。
スクリプト内でスクリプトを生成して実行する、ということは、別プロセスでない限り出来ない、ということです。

No.2464 2016/06/09(Thu) 09:07:50

Re: Call文のバグでしょうか? / しろまさ
簡単に言うと
Call .\test03.uws

DosCmd(".\test03.uws")
に変える。

CallはInclude的に使うと良いですよ。

No.2465 2016/06/09(Thu) 09:56:28

Re: Call文のバグでしょうか? / siguma
なるほど!

Call文がスクリプト実行前に行われる仕様とは気付きませんでした…

以前スケジューラーに登録しておいたスクリプトがうまく動かなくて困った事があったのですが、それもこの事が原因だったみたいです…

要望を言わせてもらえば、ヘルプファイルの所に「…はスクリプト実行前に行われます」と記載してもらえれば良かったかなと…
(私のスキルでは「Call 文 スクリプト(UWSファイル)を取り込む」という一文だけでInclude的仕様と読み取る事は出来ません(泣))

しゅんさん しろまささん
勉強になりました!ありがとうございます!

No.2469 2016/06/09(Thu) 19:40:24

Re: Call文のバグでしょうか? / しろまさ
Call Public Const DEF_DLL Moduleの変数定義域
などは起動直後に実行されますがそれぞれの実行順序は保障されない。

Call DEF_DLL は再実行が可能ですが
Call は、起動時に読込まれたものが使用される。
DEF_DLL は、型の再設定が可能。

経験的にそんな感じだったと思います^^
個人的にCallは、冒頭でのModuleの読込にしか使ってません。

No.2476 2016/06/10(Fri) 13:42:13
アプリとの相性が有るっぽい / たかはる
以前、CHKIMGの動作が不安定だと書き込んだ者です。
 
ゲームって書いたから、皆さんに無視されたっぽいですが。w
 
結局、CHKIMGがちゃんと動作するかどうかは、アプリの作りにも依るって結論に至りました。
同じuwscプログラムなのに、あっちでは動くけど、こっちでは異常動作すると言うのが、ちょろちょろ有りました。
まぁ、アプリがUWSCの事を考えて作ってくれてるとは限らないですし。w
たまーに、アクティブウインドウのクリックが無視されたりもしますし。w
騙し騙し、何とか動くように出来ました。

No.2466 2016/06/09(Thu) 15:01:14
 つきのinputが特定できません / 初心者
初心者ですが、よろしくお願いいたします。

<input type="submit" value="  ログイン  ">

と書かれているUTF8のhtml文書があるのですが、このinputが特定できず、押下できずに困っています。

IESetData(IE,True,"","  ログイン  ")
IESetData(IE,True,"  ログイン  ")
IESetData(IE,True,""," ログイン ")

などと様々な記述してみましたが、いずれも特定できていないようで、動作しません。
何卒よろしくおねがいします。

No.2450 2016/06/02(Thu) 17:10:49

Re:  つきのinputが特定できません / 初心者
自己解決しました。

IE.document.forms[0].submit()

でvalueから特定せずに行けました。

No.2451 2016/06/02(Thu) 17:24:34
MOUSEORG関数でのSHIFTキーの挙動について / ぱろん
皆さま、いつも大変お世話になっております。

■背景・現象
Windowsアプリケーションの検証にて、バックグラウンドで、キーボードでの入力が必要で、UWSCでできないか?検証しております。MOUSEORGのMORG_DIRECTにてバックグラウンドでの処理は動いているのですが、SHIFTキーが意図通りに効かないようです。(具体的には大文字で入力したい)

※普段はサーバ上でタスクスケジューラで実行しようと考えており、バックグラウンドでの処理が不可欠でして。

■前提
・プログラムのバージョン 5.2.2.0
・Hyper-V上にWindows2012R2のサーバを構築し、別のPCからリモートデスクトップ接続し、下記コードを実行する。

//−−−−−−ここから−−−−−−−

sleep(5) //少し待つ

exec("notepad") //メモ帳起動
ID = GETID("無題 - メモ帳") //
MOUSEORG(GETCTLHND(id,"edit"), 2) //バックグラウンド処理

KBD(VK_A) //a
SLEEP(0.5)
KBD(VK_B) //b
SLEEP(0.5)
KBD(VK_C) //c
SLEEP(0.5)

KBD(VK_SHIFT,1); //SHIFTキー ダウン
SLEEP(0.5)
KBD(VK_A) //A
SLEEP(0.5)
KBD(VK_B) //B
SLEEP(0.5)
KBD(VK_C) //C
SLEEP(0.5)
KBD(VK_SHIFT,2) //SHIFTキー アップ

CTRLWIN(ID,MIN) //最小化して確認
SLEEP(0.5)

KBD(VK_SHIFT,1); //SHIFTキー ダウン
SLEEP(0.5)
KBD(VK_A) //A
SLEEP(0.5)
KBD(VK_B) //B
SLEEP(0.5)
KBD(VK_C) //C
SLEEP(0.5)
KBD(VK_SHIFT,2) //SHIFTキー アップ

//−−−−−−ここまで−−−−−−−

========================================
・処理結果の期待値 abcABCABC
・リモートデスクトップ接続の画面が表示されていれば、abcABCABCとなる。
・リモートデスクトップ接続の画面を最小化すると、abcabcabcとなり、SHIFTキーが反映されない。
・セッション切断した状態でもabcabcabcとなる。
・SHIFT以外のキーについては確認できていません

※過去の記事等で、ver4.8eにて、「MOUSEORG(id,MORG_DIRECT)にて Shift,Ctrl,Altが働かない事があるのを修正」というのも確認はしているのですが、何か策はありますでしょうか?

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

No.2438 2016/05/31(Tue) 19:32:34

Re: MOUSEORG関数でのSHIFTキーの挙動について / ある
リモートデスクトップだとこちら側とあちら側の些末な差で反映できないこともあるかもしれません。具体的な例で言うとchkimgで使う画像はこちらでスクショを撮ったものでは認識せず、向こう側で撮ったものでのみ動いた、という事がありました。
今その環境がないので試すこともできないのと、想定されている結果がイメージできないので的外れだったら申し訳ないのですが、暫定的にstrconvやsckeyなどで対処をするということも考えてみるのも良いかもしれません。

No.2441 2016/05/31(Tue) 23:34:01

Re: MOUSEORG関数でのSHIFTキーの挙動について / ぱろん
ある様

ご指摘ありがとうございました。
sckeyは試してみたのですが、うまくいきませんでした。いろいろ試し試し行ってみます。

No.2449 2016/06/02(Thu) 13:10:28
全727件 [ ページ : << 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 73 >> ]