[ 掲示板に戻る ]

過去ログ閲覧モード

スクリプトファイルのサイズ上限について / wg
いつもお世話になっております。

別途プログラムを用意してスクリプトコードを生成しています。
今回、250MBにもなるUWSファイルを作成し、シェアウェア版で実行したところ、動作開始前に「SyntaxError(FReload):Out of memory」のエラーダイアログが出てUWSCが終了しました。
パフォーマンスカウンターで確認したところ、UWSCのメモリ割り当てが1.7GB位になると
エラーとなるようです。

おそらくスクリプトファイルが大きすぎるために、読み込み時のメモリ確保でエラーになっているものと思われますが、回避する方法はないでしょうか?

宜しくお願いいたします。

No.1843 2015/11/10(Tue) 20:22:17

Re: スクリプトファイルのサイズ上限について / umiumi
250MBのスクリプト。完全に想定外のサイズです。
スクリプトの構造が分かりませんが、データーを埋めているだけならば外部ファイルにする。
でなければ構造的に明らかに無駄があるのではという気がします。
基本的にスクリプトの構造を考え直してもらうしかありません。

No.1846 2015/11/11(Wed) 01:34:29

Re: スクリプトファイルのサイズ上限について / しゅん
umiumiさんも書かれていますが、構造がわからないため回避方法の提案のしようがありません。
ただ、結局のところスクリプトを小さくするしかありません。

案1)大丈夫な大きさに分割する
 巨大なスクリプトを、実行可能な大きさに分割する。
 DOSCMDやEXECで、それらを順次実行するスクリプトを用意する。

案2)データが巨大なら外部ファイルにする
 READINIやFOPENが助けになる気が。

案3)データが巨大だが外部ファイルにしたくないなら圧縮する
 画像データ等、偏りのあるデータなら圧縮・展開用スクリプトを追加してもペイする可能性があります。

案4)スクリプトを理解して最適化する
 自動生成のスクリプトとのことなので、無駄が多いかと思います
 どんな感じかを書けば、親切な人がアドバイスをくれる、、、かも。

そんなところでしょうか。

No.1847 2015/11/11(Wed) 10:20:20
変数を、別のuwsに引き継ぎたい / きのこ
test1.uwsから、「call test2.uws」で、test2.uwsを呼び出しています。

その時に、test1.uwsで代入した変数を、test2.uwsに引き継いで利用したいのですが、そのようなことは可能なのでしょうか?

ご教示のほど宜しくお願い致します。

No.1829 2015/11/06(Fri) 01:59:54

Re: 変数を、別のuwsに引き継ぎたい / Nagatani
Public 変数 で宣言して下さい。
No.1830 2015/11/06(Fri) 06:40:37

Re: 変数を、別のuwsに引き継ぎたい / しゅん
callは、インクルード、すなわち、そこにスクリプトを差し込むようなものですから、
test2.uwsの中の関数を呼び出すなら、引数として渡せますよ!

No.1831 2015/11/06(Fri) 08:55:27

Re: 変数を、別のuwsに引き継ぎたい / stuncloud
call時に引数を渡せばPARAM_STRで受け取れます

// test1.uws

hoge = "引き渡したい値"
call test2.uws(hoge)

// test2.uws

msgbox(PARAM_STR[0])

No.1832 2015/11/06(Fri) 09:40:14

Re: 変数を、別のuwsに引き継ぎたい / きのこ
Nagatani さん
しゅん さん
stuncloud さん

どうも有り難うございます。
違うスクリプトなので、どうやるのか見当も付かなかったのですが引数という手があるのですね。
助かりました。

No.1833 2015/11/06(Fri) 17:15:53
プラウザとの連動起動(操作)につきまして。 / すすむ
御世話になっております。
プロ版の購入を検討しているのですが、
以下のような動作が出来れば購入させていただきたいです。

宜しければ、お詳しい方がいらっしゃいましたら、
お教え頂ければ助かります。
宜しくお願い致します。


【やりたい動作】

確か、機能の中に、
「指定Windowが現れたら、スクリプトを実行」
というものがあったと思うのですが、


既定のマウス操作
「EXCELのボタンをクリックする程度の単純操作」
を、UWSCに登録しておき、


プラウザ(IEやChremeなど)で、サイトを自動閲覧させていて、
特定のタイトルのページが表示されたら、
その表示を認識して、既定のマウス操作を行なうという動作です。

サイトの自動閲覧の部分は、すでに稼動していますので、
あとは、その個々のページタイトルに反応して、
UWSCが動作するという部分のみをつくりたいです。

また、その既定のマウス操作を終えた後は、
自然に、また待機状態になり、
特定のタイトルのページが表示されるのを、
待つという機能も必要です。


このような動作設定を行なうことは可能でしょうか?

もし、お詳しい方がいらっしゃいましたら、
お教え頂ければたすかります。


※、もし、上記の操作がUWSCで出来ない場合ですが、

EXCELのVBAから、

上記のような、
UWSCに登録してある既定のマウス操作を、
作動させることはできませんでしょうか?

プラウザのページの遷移はVBAを使ってやっているので、
VBAから、UWSCを動作させられれば、それでも目的は達成できます。


ご存知のかたがいらっしゃいましたら、
お教え頂ければ助かります。

宜しくお願い致します。

No.1821 2015/11/04(Wed) 16:16:04

Re: プラウザとの連動起動(操作)につきまして。 / しろまさ
できますよ。

Excelいらないし。

でもスクリプトの勉強は必要ですね。

No.1823 2015/11/05(Thu) 09:31:20

Re: プラウザとの連動起動(操作)につきまして。 / すすむ
しろまきさんへ、
回答いただき、有難うございました。

了解しました。

早速、プロ版購入して、スクリプトの勉強はじめます。

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

No.1826 2015/11/05(Thu) 10:53:38

Re: プラウザとの連動起動(操作)につきまして。 / しろまさ
ちょっと誤解があるような・・

まずはフリー版で試して、プロ版の機能が必要かどうか検討してみては? ってもう遅いか。。

No.1827 2015/11/05(Thu) 16:59:12

Re: プラウザとの連動起動(操作)につきまして。 / すすむ
しろまきさんへ、
ご心配頂き、ありがとうございます。

「できますよ!」と、お聞きできましたので、
意外と急いでいたので、

早速にプロ版を購入し、素人なりに、
一日いろいろと調べた結果、



1.
「EXCELのVBAから、
プラウザの指定ページを継続して閲覧させ、」

2.
「既定のタイトルを含むページを開いたら、
VBAを一時ストップして、」

3.
「上記のような、
UWSCに登録してある既定のマウス操作を、
UWSCで記録して、それをexe化したプログラムを、
Shell()・・・で実行させ、」

4.
「それが終われば、
またVBAに実行をもどす・・・」


という流れが、現在の私の、VBA・UWSCの知識から、
プログラム完成のGoalに一番近いと感じ、


いま、必死こいてつくっています。


当然、UWSCがはじめてなので、チンプンカンプンですが、

明日までには、できるかな〜・・・
というところです。

いろいろと有難うございました。

まずは、仕上げてみてから、
もっと掘り下げて、いろいろ試してみようと思います。

今後とも、宜しくお願い致します。

No.1828 2015/11/05(Thu) 20:33:19
文字送信(SendStr)がうまく実施できなくなった / YMTK
フリー版 Ver4.8d を使用させていただいておりますが、
本日最新のVer5.2.0を使用しスクリプトをあるソフトで実行させたら、文字送信(SendStr)がうまく実施できなくなってしまいました。
UWSC Ver4.8dに戻すと問題なく動作します。
PRO版を近日中に購入予定なので最新版とVer4.8dでの文字送信(SendStr)部の違いについて教えてください。
【参考】
制御しているソフトはある会社独自のソフトなので市販されていません。
中身についても更改されていませんのでどの様な仕様となっているかはわかりません。

No.1814 2015/10/30(Fri) 16:59:18

Re: 文字送信(SendStr)がうまく実施できなくなった / umiumi
環境(OS)とその部分だけでもスクリプトの提示をするようお願いします。
SENDSTR関数等の他関数は問題ないのか。
番号(第3引数)を付けたいない場合は 番号を付けてください。
ダイアログ等の他画面を開いた直後であれば SENDSTR関数の前に SLEEP(1)を入れてみる。
以下のような簡単なスクリプトで動作確認をしてください。
for n = 1 to 10
  SENDSTR(id, n, n, True)
next

>最新版とVer4.8dでの文字送信(SendStr)部の違いについて教えてください。
基本的には違いは無いはずです。

No.1815 2015/10/31(Sat) 00:26:43

Re: 文字送信(SendStr)がうまく実施できなくなった / YMTK
Win7で使用しています。
他の関数については問題なさそうです。(全ては試していません)
下記のスクリプトでの動作が最新版ではSendStr処理がNG(文字送信ができていない)でVer4.8dではOKとなります。
//■予定詳細画面の予定内容に記載
R_id=GETID("予定詳細")
BTN(LEFT,DOWN,150,95,SLP2)//予定内容の入力部選択 SLP2は状況により変化させている
BTN(LEFT,UP,150,95,SLP2)
sleep(0.3)
SendStr(R_id, "")//タイトルの決定時に選択した内容を記載
//上記で変数E1の値が記載できない為、空を一旦入力後下記でE1を送っている。なぜか不明。
   //ここはとりあえず何とかなっているので良い
BTN(LEFT,DOWN,150,95,SLP2)//予定内容の入力部選択
BTN(LEFT,UP,150,95,SLP2)
sleep(0.5)
SendStr(R_id, E1)//タイトルの決定時に選択した内容を記載

番号(第3引数)を付けた場合についても状況は同じでした。
また、
for n = 1 to 10
  SENDSTR(id, n, n, True)
next
を実施しましたが、"1"が入力されると思いましたが
最新版及びVer4.8dで何も入力されませんでした。
もう少しいろいろ試してみます。

No.1816 2015/11/02(Mon) 11:27:39

Re: 文字送信(SendStr)がうまく実施できなくなった / YMTK
念のためですが、他のソフト(メモ帳等)は問題なく最新版でSendStrは動作します。
参考で記載させていただいたソフトを操作するときだけ最新版でSendStrが動作しません。

No.1817 2015/11/02(Mon) 14:45:31

Re: 文字送信(SendStr)がうまく実施できなくなった / umiumi
Qt製アプリでしょうか?
Qt製アプリ(APIもACCもダメ)対し SendStr関数にてフォーカスのある所に送れなくなっているのを確認しました。 Ver 5.2.0
修正します。

Ver 5.1.2 を試してみてください。
大丈夫だと思います。

No.1818 2015/11/02(Mon) 23:44:24

Re: 文字送信(SendStr)がうまく実施できなくなった / YMTK
迅速なご確認、ご対応ありがとうございました。
Ver 5.1.2 を試してみます。

No.1825 2015/11/05(Thu) 10:12:28
5.2.0に置き換えたら動かなくなった / Kero
よくわかりませんが、5.2.0に置き換えたら動かなくなったスクリプトがいくつも出てきました。
No.1819 2015/11/03(Tue) 09:40:01

Re: 5.2.0に置き換えたら動かなくなった / umiumi
これでは何も分かりません。
何が悪いのか確認してください。
環境(OS,ターゲットのアプリ)、確認できるスクリプトの提示をお願いします。

No.1820 2015/11/04(Wed) 00:09:46
win10のexcel2010でセルのコピーができない / toyokawa
Excel = GETACTIVEOLEOBJ("Excel.Application")

戻り値 = EXCEL.activesheet.RANGE("A1").value

に値が入りません。セルを複数選択でexcelに値送信できません。

唯一可能だったのがEXCEL.activesheet.cells(1,1).valueではいけました。

rangeで値が入らない原因をおしえてもらえませんか?

win7のexcel2010ではいけていました。 

よろしくお願いします。

No.1810 2015/10/28(Wed) 22:12:48

Re: win10のexcel2010でセルのコピーができない / Nagatani
戻り値=Excel.ActiveSheet.Range["A1"].Value
ではいかがですか?

No.1811 2015/10/28(Wed) 23:16:51

Re: win10のexcel2010でセルのコピーができない / toyokawa
解決しました、ありがとうございました。
No.1813 2015/10/29(Thu) 08:05:34
UWSC Ver 5.2.0 / umiumi
API処理できないアプリ(WPF,ストアアプリ,ブラウザ)に対しては UI Automationで処理するようにした
CREATEOLEOBJ, GETACTIVEOLEOBJ関数にて Edgeブラウザを指定できるようにした('MSEdge.Application')
CLKITEM関数にて リンクをクリックする CLK_LINKを付けた
GETITEM関数にて リンク表示を取得する ITM_LINKを付けた
CLKITEM関数のボタン処理にて 一部のスプリットボタンに対処した (\aaa\bbbにて表記)
BTN関数にタッチ動作をする TOUCHを付けた
スケジュール、ランチメニュにて回数指定を削除したのを復活させた
高レベル記録にて WPFアプリ等の一部記録できなかったウィンドウに対応した
EXEC関数にて 同期フラグが Trueの時に 位置サイズが変更されなかったのを修正

No.1788 2015/10/19(Mon) 02:48:56

Re: UWSC Ver 5.2.0 / umiumi
>API処理できないアプリ(WPF,ストアアプリ,ブラウザ)に対しては UI Automationで処理するようにした

WPFアプリ,ブラウザ等に対しは、いままでは全て ACC指定の必要がありましたが
通常アプリ(API)と同じように ボタンに対しては ClkItem(id, "button", CLK_BTN) のように指定できます。
使用例は 以下を参照してください。
http://uwsc.info/sample.html#n36  // Firefox にてGoogleを表示、検索 & ニュース表示

No.1789 2015/10/19(Mon) 02:49:17

Re: UWSC Ver 5.2.0 / umiumi
>CREATEOLEOBJ, GETACTIVEOLEOBJ関数にて Edgeブラウザを指定できるようにした('MSEdge.Application')

"MSEdge.Application" を指定します。
戻り値により DOM操作ができます。
IE操作関連の関数(IEGETDATA, IESETDATA, IEGETSRC, IESETSRC, IELINK)も使えます。
但し、当然ながら IE依存の関数、操作はできません。(OLEEVENT関数, IE.Busy, IE.State, IE.Quit等はダメ)
画面の遷移時には再取得する必要があります。GETACTIVEOLEOBJ("MSEdge.Application")を使用
使用例は 以下を参照してください。
http://uwsc.info/sample.html#n38  // MS Edge にてGoogleを表示、検索 & ニュース表示

No.1790 2015/10/19(Mon) 02:49:59

Re: UWSC Ver 5.2.0 / umiumi
>CLKITEM関数のボタン処理にて 一部のスプリットボタンに対処した (\aaa\bbbにて表記)

IEのダウンロード時に出る、通知バーの保存ボタンから '名前を付けて保存'を選択
ClkItem(id, "ダウンロードボタン", CLK_BTN)    // 何らかのダウンロードのボタン
sleep(1)                     // 多少の間が必要
ClkItem(id, "\保存\名前を付けて保存", CLK_BTN)  // '保存'スプリットボタンの '名前を付けて保存'をクリック

No.1791 2015/10/19(Mon) 02:52:02

Re: UWSC Ver 5.2.0 / umiumi
>BTN関数にタッチ動作をする TOUCHを付けた

// タップ
BTN(TOUCH, CLICK, 400, 400)
// 長押し
BTN(TOUCH, DOWN, 400, 400)
BTN(TOUCH, UP, 400, 400, 2000)  // 2秒
// スワイプ
BTN(TOUCH, DOWN, G_SCREEN_W, 400)  // チャームを出す
BTN(TOUCH, UP, G_SCREEN_W-100, 400)
// ズーム
BTN(TOUCH, DOWN, 400, 400)
BTN(TOUCH, DOWN, 400, 450)
BTN(TOUCH, UP, 400, 600)
BTN(TOUCH, UP, 400, 250)

No.1792 2015/10/19(Mon) 02:53:14

Re: UWSC Ver 5.2.0 / yos
メニューのチェックOn/Off項目に対して、現在と同じ状態でclkitemすると動作未遂?になります

//例えば、メモ帳の「書式−右端で折り返す」にチェックが付いた状態で
wid = getid("メモ帳")
clkitem(wid, "書式\右端で折り返す", CLK_MENU, TRUE)
//→サブメニューが出たままでスクリプト終了
(「CLK_MENU or CLK_LEFTCLK」等とすれば、とりあえずサブメニューは消えますが…)

※チェックOff→On、On→Offの場合は正常動作。
※UWSC Ver5.12以前では、On→On、Off→Offでも問題なし

(UWSC5.2.0 Free版/ WinXP SP3)

No.1795 2015/10/22(Thu) 18:13:20

Re: UWSC Ver 5.2.0 / しき
getitem() で他のウインドウが非アクティブになります
以下のサンプルで、getitem()の実行タイミング(printウインドウが出る)で
アクティブであったメモ帳以外のウインドウが非アクティブになります
Win7 64bit UWSC520

id = getid("", "notepad", 0.01)
if (id < 0) then id = exec("notepad.exe")

for i=1 to 20
  getitem(id, itm_lstvew)
  print i
  sleep(3)
next

No.1796 2015/10/22(Thu) 21:15:19

Re: UWSC Ver 5.2.0 / しき
getitem(id, itm_lstvew) の実行速度が遅くなってます。20倍以上?
//結果
//ver5.12 0 0 0 0 0 0 0 0 0 0
//ver5.2 60 30 20 30 25 20 25 25 60 30

id = getid("", "notepad", 0.01)
if (id < 0) then id = exec("notepad.exe")

s = "ver"+ get_uwsc_ver

for i=1 to 10
  t = gettime()*1000 + g_time_zz
  getitem(id, itm_lstvew)
  s = s +" "+ ((gettime()*1000 + g_time_zz) - t)
  
  print s
  sleep(1)
next

sendstr(0, s)

No.1797 2015/10/22(Thu) 21:56:14

Re: UWSC Ver 5.2.0 / umiumi
>メニューのチェックOn/Off項目に対して
確認しました。
修正します。

>getitem(id, itm_lstvew) の実行速度が遅くなってます
APIで所得できなかった場合は UI Automationでも探しに行くようにしたから

No.1798 2015/10/23(Fri) 00:25:09

Re: UWSC Ver 5.2.0 / しき
>getitem() で他のウインドウが非アクティブになります
リストビューの行数を3秒毎に監視するスクリプトがあり、行数が0の場合に気付きました

メモ帳にはリストビューがないので先の例は適当ではなかったかもしれません
//レジストリエディタ regedit.exeの例
id = getid("", "RegEdit_RegEdit", 0.01)
for i=1 to 20
  n = getitem(id, itm_lstvew)
  print i +" "+ n
  sleep(3)
next


ツリーのルート "コンピューター" では、右ペインのリストビューは 0行ですので、メモ帳の場合と同じ挙動をします。
"コンピューター\HKEY_CLASSES_ROOT" など、1行以上の所では問題ありません。

>APIで所得できなかった場合は UI Automationでも探しに行くようにしたから
UI Automation使用の有無で取得できる値が違うなら、
ACCのように使用するか否かを指定できるようにならないでしょうか

No.1799 2015/10/23(Fri) 17:26:04

Re: UWSC Ver 5.2.0 / しき
ver5.2でgetslider() の戻値が変わりました
戻値が err_value (-999999) ならスクロールバーはないの判定だったのですが、、、

id = getid("", "notepad", 0.01)
if (id < 0) then id = exec("notepad.exe")

s = "ver"+ get_uwsc_ver
for i=1 to 4
  s = s +", "+ i +"="+ getslider(id, i)
next

msgbox(s)
sendstr(0, s)
//結果
//ver5.12, 1=0, 2=0, 3=-999999, 4=-999999
//ver5.2, 1=0, 2=0, 3=1049088, 4=1049088

No.1809 2015/10/28(Wed) 18:18:01

Re: UWSC Ver 5.2.0 / umiumi
>ver5.2でgetslider() の戻値が変わりました
確認しました。
修正します。

No.1812 2015/10/29(Thu) 00:17:35
createformの上書き方法 / わーみぃ
ループ処理の実行結果をprintで表示させると古いものにどんどん追記されていくので、
createformを使おうと思いました。

obj = CREATEFORM("about:blank", "test", true,FOM_MINIMIZE,500,300)
for i = 1 to 1000
obj.Document.write(i)
sleep(1)
next

しかし、この方法でも、古いものに新しい内容が追記されてしまいます。
毎回最新の実行結果のみを表示させるにはどうしたらいいでしょうか?

No.1802 2015/10/26(Mon) 18:31:05

Re: createformの上書き方法 / routa
SETFORMDATA(i, "TAG=BODY")
ではどうですか。

No.1804 2015/10/26(Mon) 23:53:06

Re: createformの上書き方法 / わーみぃ
routa様
思うような動作ができるようになりました。
SETFORMDATAという便利なものがあることを教えて頂きありがとうございます。
今までヘルプを見て気がつきませんでした。
もっとヘルプに目を通したいと思います。

No.1805 2015/10/27(Tue) 01:32:56

Re: createformの上書き方法 / stuncloud
sendstrでプリント窓をクリア出来ます

for l in "abcde"
 sendstr(getid(GET_LOGPRINT_WIN), "", 1, TRUE)
 print l
 sleep(1)
next

No.1806 2015/10/27(Tue) 09:37:04

Re: createformの上書き方法 / 森
その手の確認表示には、私は balloon(メッセージ) を使っています。
No.1807 2015/10/27(Tue) 19:14:35

Re: createformの上書き方法 / わーみぃ
stuncloud様、ありがとうございます。
printをsendstrでクリアできるとは知りませんでした。
やってみましたが、これは大変便利ですね!今後使わせて頂きます。

森様、ありがとうございます。
私もballoonやfukidasiも使っていますが、こちらも手軽に実装できるのでいいですよね。
ただ、こちらには書きませんでしたが、今回はマウスでウインドウサイズを自由に変更したかったので、print か createformでの実装に拘った次第でした。
引き続き宜しくお願い致します。

No.1808 2015/10/28(Wed) 09:52:41
EXCELハイパーリンク先の取得 / ROM
お世話になります。

見よう見まねでEXCELを扱うスクリプトを作成しています。
2行3列のセルに設定されているハイパーリンク先を取得したく、以下を作成しましたが、COMエラーが発生します。
どなたかご教示いただければ、幸いです。
よろしくお願いします。


XL = XLOPEN( "C:\Test.xls" )
XL.ActiveSheet.Cells(3,2).Hyperlinks(1).Address

環境:
Windows8.1
EXCEL2013
UWSC Pro 5.1.2.0

No.1800 2015/10/24(Sat) 09:53:07

Re: EXCELハイパーリンク先の取得 / リキュール
2行3列のセルは Cells(2,3) ではないですか。
No.1801 2015/10/25(Sun) 22:27:26

Re: EXCELハイパーリンク先の取得 / ROM
リキュールさん

ご指摘の通りでした。
恥ずかしいミスです。m(__)m

No.1803 2015/10/26(Mon) 19:36:17
read of address 00000000 エラーの原因と対処につきまして / まるぱ
いろいろなウェブページの情報をクロールとスクレイピングで取得し続けるスクリプトを作り、
24時間実行しています。

たまに
Access violation at address 00000000 read of address 00000000
のエラが−がでます。

エラー発生後に再度実行するとまた動作を続け、またしばらくすると同じエラーが出る状況です。


これを解決するために、アドバイスいただけますでしょうか?



スクリプトの主な内容ですが

IE = CreateOleObj("htmlfile")
でhtmlオブジェクトを作成し
IE.open()
IE.close()


その後ウェブページをスクレイピングするたびに


//
oHttp = CreateOLEObj("MSXML2.XMLHTTP")

oHttp.Open("GET",url,False)

oHttp.abort()

でウェブページにアクセスしてhtmlソースを取得、

htmlオブジェクトのIEに

IE.OPEN()
IE.clear()
IE.write(htmlソース)
IE.CLOSE()

でhtmlソースを書き込んでからソースを解析
//


をくりかえし実行しています。


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

No.1794 2015/10/19(Mon) 17:22:33
全1170件 [ ページ : << 1 ... 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 ... 117 >> ]