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

繰り返し動作ができなくなりました。 / ちっき
UWSCproバージョン 5.2.3.0 OSはWindows7UltimateX64
ブラウザはGoogle Chrome 56.0.2924.87 (64-bit)です。

UWSCを使い、エクセルのリストから自動的に携帯番号を選択してコピーし、
mysmsというアプリとの組み合わせでショートメールを繰り返し送信する操作を行って
います。

mysmsへの番号コピー&ペースト、メッセージ本文をメモ帳からコピー&ペースト、送信をする
という動作は正常に作動しているのですが、繰り返し実行を行うために、以下のスクリプトを
使っています。

path = "D:\ホームページ\uwsc523\sapuriCM.UWS"
interval = 5 // 実行間隔

while true
select slctbox(slct_btn, interval, "終了しますか?<#CR>このウィンドウを閉じても終了します", "はい")
case -1, SLCT_1
exitexit
case 0
exec("<#DBL>"+GET_UWSC_DIR+"\UWSC.exe<#DBL> <#DBL>"+path+"<#DBL>", true)
selend
wend

ところが、突然、繰り返し処理ができない状態(一回ずつ実行なら動く)となっていて
困っています。

恐れ入りますが、ご教示頂ければ幸いです。
よろしくお願いいたします。

No.3539 2017/02/22(Wed) 18:31:39

Re: 繰り返し動作ができなくなりました。 / ちっき
自己レスです。解決しました。元々の動作記録を作り直したら、動作するようになりました。
お騒がせしました。

No.3540 2017/02/22(Wed) 18:37:57
2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
2つのIDで上下にウィンドウを並べています。GETKEYSTATEでaキーを押すと上のウィンドウのスクロールバーを
少し下げ、bキーを押すと下のウィンドウのスクロールバーを下げるようにしたいです。常に管理中みたいな形で指定キーを押すとスクロールバーを下げたいです。)
下記のスクリプトで2つのIDで上下にするところまではできているのですが、そこからどうしたらいいかが分かりません。SETSLIDERでスクロールバーの値を設定するとありますが、いまいちこの使い方が分かりません。

id1=getid("Internet Explorer","IEFrame")
id2=GETID(GET_ACTIVE_WIN)

h = G_SCREEN_H / 2
acw(id1, 0, 0, G_SCREEN_W, h)
acw(id2, 0, h, G_SCREEN_W, h)

// 戻値 = SETSLIDER( ID, 値, [番号] )

No.3514 2017/02/20(Mon) 12:01:11

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / stuncloud
> SETSLIDERでスクロールバーの値を設定するとありますが、いまいちこの使い方が分かりません。
現在位置から一定量動かす、という場合はGETSLIDERとの複合技になりますね

current_pos = getslider(id) // 現在の位置
setslider(id, current_pos + 5) // 5の距離分動かす

例なので5としましたが、状況に合わせて値を調整してください
スクロールバーが複数ある場合は「番号」の引数を指定します
2個目のスクロールバーであれば

current_pos = getslider(id, 2)
setslider(id, current_pos + 5, 2)

となります
あとはキーを押したときの動作ですが、こういった場合SETHOTKEYが楽ですね

sethotkey(VK_A, 0, ScrollA) // ここではVK_Aとしましたが必要に応じて操作するキーを指定してください
sethotkey(VK_B, 0, ScrollB)

while status(id1, ST_ISID) and status(id2, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

procedure ScrollA()
 // Aのスクロール処理
fend

procedure ScrollB()
 // Bのスクロール処理
fend

関数内でもid1、id2を使うでしょうからこれらの変数はpublicにすると良いでしょう

No.3520 2017/02/20(Mon) 16:45:35

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
stuncloud様、ありがとうございます。stuncloud様のスクリプトを参考にやってみたのですが、うまくいきません。まずは、id1をaキー押す事で、スクロールバーを5下げたいと思ってます。なにか良い方法はないでしょうか?sethotkey自体の組み方がいまいち分かりません。

id=GETID(GET_ACTIVE_WIN)
sethotkey(VK_A, 0, ScrollA(id)) // ここではVK_Aとしましたが必要に応じて操作するキーを指定してください

while status(id, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

procedure ScrollA(id)
current_pos = getslider(id) // 現在の位置
setslider(id, current_pos + 5) // 5の距離分動かす
HOTKEY_VK
fend

No.3523 2017/02/20(Mon) 20:17:23

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
上の続きです。
エラーでVK_Aが定義されていませんと表示されます。

No.3524 2017/02/20(Mon) 20:20:52

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / MM
HELPでSETHOTKEYをお調べになりましたでしょうか。
例を見ないとなかなか判らず、見ても判らない言外の部分は実際に試してみる必要があります。
HELPの例を見ると第3項は文字列として与えなくてはならず、書式上引数を指定できませんが、
引数不可は仕様と思われますので、値のやり取りはグローバル変数を介する必要があります。

以下蛇足ですが慣れないと誤解しやすいところとしては、修飾子キーが要らない場合でも第2項の存在自体は必要で、0かEMPTYを指定、またはsethotkey(VK_A, , "引数なし関数名")と書きます。
修飾子キーが複数指定可とありますがその場合、項数を増やすのではなくビット演算のORを行います。ORを使用した定数複数指定は普及している他のプログラミング言語では普通なのですが初学者ですとわかりづらく、HELPではsethotkeyと関係ないところに載っていますが、複数指定可というキーワードでHELPを諦めず探し回るとMsgBoxなどで使われている例が見つかります。検索の仕方は検索TABで検索後、右側の本文の中をクリックしてから[Ctrl]+{F]を押して更に検索する必要があります…

No.3525 2017/02/20(Mon) 22:00:56

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
MM様、ありがとうございます。下記をHELPで確認できました。

SETHOTKEYによる キーチェック
for k = VK_A to VK_F
  SETHOTKEY(k, ,"fuckey")     // AからFまでキー登録
next
SETHOTKEY( ,MOD_CONTROL, "fucx")  // CTRLキー の登録
SETHOTKEY(VK_A, MOD_SHIFT, "fucx") // Shift + A の登録
Sleep(100)
for k = VK_A to VK_F
  SETHOTKEY(k)          // 解除
next
// End
Procedure fuckey()
  print CHR(HOTKEY_VK) + "が押された"
Fend
Procedure fucx()
  if HOTKEY_MOD=MOD_CONTROL then print "CTRLが押された"
  if (HOTKEY_VK=VK_A) and (HOTKEY_MOD=MOD_SHIFT) then print "Shift + Aが押された"
Fend


それを参考にしてやってみると確かに、私のやっていた事、間違ってました。
できたスクリプトが下記になります。

public id
id=GETID(GET_ACTIVE_WIN)
sethotkey(VK_A, ,"ScrollA") // ここではVK_Aとしましたが必要に応じて操作するキーを指定してください

while status(id, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

procedure ScrollA(id)
print CHR(HOTKEY_VK) + "が押された"
current_pos = getslider(id) // 現在の位置
setslider(id, current_pos + 5) // 5の距離分動かす
fend

これで1つのウィンドウでの処理ができたので後は、2つ目のウィンドウも同じようできるか引き続き
作成していこうと思います。

ありがとうございます、助言助かりました。

No.3526 2017/02/21(Tue) 00:28:56

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / stuncloud
> HELPの例を見ると第3項は文字列として与えなくてはならず、
ここは僕の例のミスですね…申し訳ないです

最初の例ではふたつの関数を作りそれぞれの処理をさせる方法でしたが
HOTKEY_VKを使ってひとつの関数で複数の処理に分けることもできます

public id1, id2 // これらには適宜ウィンドウのIDを代入してください
sethotkey(VK_A, 0, "Scroll")
sethotkey(VK_B, 0, "Scroll")

procedure Scroll()
 select HOTKEY_VK
  case VK_A
   id = id1 // Aが押されたらid1を処理
  case VK_B
   id = id2 // Bが押されたらid2を処理
 selend
 current_pos = getslider(id)
 setslider(id, current_pos + 5)
fend

No.3527 2017/02/21(Tue) 09:50:40

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
IEでのサイト上では希望通りのスクロールバーを下げる事ができたのですが、サブライムエディターでのスクロールバーではまったく反応しません。また、Googlechrome上でも反応しません。何かよいお知恵拝借できないでしょうか?id=GETID(GET_ACTIVE_WIN)でやっているので、いけると思ったですが・・・。引き続き色々試してみます。
No.3528 2017/02/21(Tue) 12:45:24

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
CTRLで押すとスクロールバーを下げる処理を試してみましたが、うまくいきません。
helpを読み替えてやったのでいけそうなんですが、希望通りの処理をしてくれません。
どこが間違っているのでしょうか?

public id
id=GETID(GET_ACTIVE_WIN)
SETHOTKEY( ,MOD_CONTROL, "fucx")  // CTRLキー の登録

while status(id, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

Procedure fucx()
  if HOTKEY_MOD=MOD_CONTROL then print "CTRLが押された"
current_pos = getslider(id) // 現在の位置
setslider(id, current_pos + 3) // 3の距離分動かす
Fend

No.3529 2017/02/21(Tue) 13:23:55

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
引き続き試してスクリプト。これをうまくいきません。

public id
id=GETID(GET_ACTIVE_WIN)
SETHOTKEY(MOD_CONTROL, ,"fucx")  // CTRLキー の登録

while status(id, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

Procedure fucx(id)
  if HOTKEY_MOD=MOD_CONTROL then print "CTRLが押された"
current_pos = getslider(id) // 現在の位置
setslider(id, current_pos + 3) // 3の距離分動かす
Fend

No.3530 2017/02/21(Tue) 13:28:53

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / stuncloud
・スクリプト実行時のアクティブウィンドウが操作対象でない可能性がある
タイトルを指定してIDを取るようにしましょう
・スクロールバーが複数あって操作したいものが操作されていない可能性がある
番号を指定してみましょう
・SETSLIDERでは操作できないスクロールバー
この場合はどうしようもないですね

※以下追記 13:53

> サブライムエディター
Sublime Textでしょうか?
手元のSublime Text 3で試したところ
スクロールバーを動かすことは可能、ただしフォーカスの合っているペインのみ
サイドバーを表示していたり、複数レイアウトにしていた場合でそれぞれにスクロールバーがある場合、フォーカスがある(操作中、編集中である)部分のスクロールバーしか動かせないようです

No.3531 2017/02/21(Tue) 13:39:39

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / miles
> サブライムエディターでのスクロールバーではまったく反応しません。
setslider関数の戻値で(TRUE:正常, FALSE:処理不能)を判断してください。
SETHOTKEY関数も念のため、戻値を見た方がいいですよ。
同じプログラムを動かした場合、HOTKEYの重複設定できませんから。

> Googlechrome上でも反応しません。
Googlechromeなら下記でスクロールはできました。
サブライムエディターはないので…

ret = setslider(id, current_pos + 5) // 5の距離分動かす
if ret = false then sckey(id,VK_DOWN,VK_DOWN,VK_DOWN,VK_DOWN,VK_DOWN)

No.3532 2017/02/21(Tue) 14:02:23

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
stuncloud様、返信ありがとうございます。
>タイトルを指定してID
タイトルIDやSublime Textで試しています。

>Sublime Textでしょうか?
はい。Sublime Text最新版です。

>スクロールバー
1つにしています。

>フォーカスの合っているペイン
入力画面にしています。

>サイドバーを表示
サイドバーを非表示にしています。

下記のスクリプトで試しています。

public id
id=getid("C:Desktop\1.txt (uwsプロジェクト) - Sublime Text (UNREGISTERED)","PX_WINDOW_CLASS")
sethotkey(VK_A, ,"ScrollA") // ここではVK_Aとしましたが必要に応じて操作するキーを指定してください

while status(id, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

procedure ScrollA(id)
print CHR(HOTKEY_VK) + "が押された"
current_pos = getslider(id) // 現在の位置
setslider(id, current_pos + 3) // 3の距離分動かす
fend

No.3533 2017/02/21(Tue) 14:45:27

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
mile様、返信ありがとうございます。下記のスクリプトでしてもサブライムエディターまったく反応がありません。GoogleChromeはできました。

>setslider関数の戻値で(TRUE:正常, FALSE:処理不能)を判断してください。
setslider関数の戻値はRUEと表示されています。

>SETHOTKEY関数も念のため、戻値を見た方がいいですよ。
Aが押されたと表示されます。

>ret = setslider(id, current_pos + 5) // 5の距離分動かす
if ret = false then sckey(id,VK_DOWN,VK_DOWN,VK_DOWN,VK_DOWN,VK_DOWN)

Googlechromeで無事できました、これで一つできる事が増えましたありがとうございます。

下記のスクリプトで試しましたが、サブライムエディターまったくスクロールバー反応しません。
プラグインの可能性ですかね。うーんなかなか難しいです。

public id
id=getid("Sublime Text")
sethotkey(VK_A, ,"ScrollA") // ここではVK_Aとしましたが必要に応じて操作するキーを指定してください

while status(id, ST_ISID) // 対象ウィンドウのどちらかが閉じられるまで待つ
 sleep(0.1)
wend

procedure ScrollA(id)
print CHR(HOTKEY_VK) + "が押された"
current_pos = getslider(id) // 現在の位置
ret = setslider(id, current_pos + 5) // 5の距離分動かす
print "ret="+ret
if ret = false then sckey(id,VK_DOWN,VK_DOWN,VK_DOWN,VK_DOWN,VK_DOWN)
fend

No.3534 2017/02/21(Tue) 15:20:14

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
サブライムエディターの画像が下記です。
https://gyazo.com/6fa0e8041345415d5532a158eeceeb2c

No.3535 2017/02/21(Tue) 15:27:54

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / stuncloud
画像を見ると横スクロールバーもありますね
僕の環境だと1が横で2が縦でしたが

スクロールバーが2つになる場合でもどちらが縦か調べて(SLD_BAR)、必ず縦のものを動かすようにします

if getslider(id, 1, SLD_BAR) = 1 then
 n = 1
elseif getslider(id, 2, SLD_BAR) = 1 then
 n = 2
endif
setslider(id, getslider(id, n) + 100, n)

サイドバーなしで一面しか開いてない状態にして
・縦スクロールバーのみ
・縦横どっちもある場合
で動作確認済みです
あと5だと単純に動いた量が小さすぎて気付かないので100動かすようにしてみました

No.3536 2017/02/21(Tue) 15:52:19

Re: 2つの上下ウィンドウをそれぞれ指定したキーを押すと少しスクロールバーを下げる方法 / ジンギスカン
stuncloud様、できました、サブライムエディターで動いた時めっちゃ感動しました。
今回何度も助けて頂きありがとうございました。
自分ひとりでは、絶対にできなかったスクリプトなので、助かりました。

No.3537 2017/02/21(Tue) 17:51:11
フォーム画面の縦スクロールバーの制御 / まるぱ
CreateFormで作ったフォーム画面、
これで縦のスクロールバーが表示されます。

このスクロールバーの位置をGETSLIDERで取得できません。

スクロールバーの位置を読込み、あとでその位置にスクロールさせることをしたいのですが、
いいアイデアありますでしょうか?

よろしくお願い致します

No.3506 2017/02/18(Sat) 22:21:11

Re: フォーム画面の縦スクロールバーの制御 / routa
普通にDHTMLやJavaScriptが使えますよ。
.Document.documentElement.scrollTop
.Document.parentWindow.scrollTo(0, 100)

No.3507 2017/02/19(Sun) 19:25:07

Re: フォーム画面の縦スクロールバーの制御 / まるぱ
routaさん、アドバイスありがとうございます。
試しましたが、取得できるスクロールの位置が0になってしまいます...
何か間違っているんでしょうか、ちょっと考えます。

No.3508 2017/02/19(Sun) 21:00:34

Re: フォーム画面の縦スクロールバーの制御 / routa
こっちかも
.Document.body.scrollTop

No.3509 2017/02/19(Sun) 23:20:30

Re: フォーム画面の縦スクロールバーの制御 / まるぱ
routaさん、
IE6以上は
.Document.documentElement.scrollTop
とのことで、やってみたらできました。
ヒントありがとうございました。

No.3522 2017/02/20(Mon) 18:03:37
正規表現で抜き出した分から、数字のみを抽出する方法 / ゆうい
サイトのソースをinnerhtmlで取得し、正規表現でIDの数字のみを抜き出したいですが、ExecuteからFOR文でMatches.Item(i).Valueで取得し、FPUTでファイルに書き出し、それをfgetで全テキスト取得し、chgmojでいらないIDの前後を削除しています。もっとダイレクトに正規表現のみでIDのみを抜き出す方法ないでしょうか?

【サイトソース】
テキスト1
id="inline_1806">
テキスト2
id="inline_1206">
テキスト3
id="inline_1156">

【正規表現で検索できている分】
id="inline_1806">
id="inline_1206">
id="inline_1156">

【希望処理】
1806
1206
1156

【試してスクリプト】

文字列全体=IE.document.body.innerhtml


Public regvb=CREATEOLEOBJ("VBScript.RegExp")

// fid=""
file = FOPEN("Desktop\wp.txt", F_WRITE)


Pattern="inline_\d{1,4}"
Matches=regvb_Execute(文字列全体, Pattern)

for i = 0 to Matches.count-1
FPUT(file, Matches.Item(i).Value, i+1)
next

zenn=fget(file, F_ALLTEXT)

tesaa=chgmoj(zenn, "id=<#DBL>inline_", "")
tesaa=chgmoj(tesaa, "<#DBL>>", "")
tesaa=chgmoj(zenn, "inline_", "")
FPUT(file, tesaa,F_ALLTEXT)
FPut(file, Join(Split(FGet(file, F_ALLTEXT), "<#CR>"), "<#CR>", TRUE), F_ALLTEXT)

fclose(file)
Function regvb_Execute(str, Pattern, IgnoreCase=TRUE, Global=TRUE)
regvb.IgnoreCase=IgnoreCase
regvb.Global=Global
regvb.Pattern=Pattern
Matches=regvb.Execute(str)
Result=Matches
Fend

No.3511 2017/02/19(Sun) 23:39:24

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / しき
//SubMatches コレクション
//https://msdn.microsoft.com/ja-jp/library/cc392216.aspx
Pattern="inline_(\d{1,4})"
Matches=regvb_Execute(文字列全体, Pattern)
for i = 0 to Matches.count-1
  print Matches.Item(i).SubMatches(0)
next

No.3512 2017/02/20(Mon) 00:30:15

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / ゆうい
しき様、ありがとうございます。こんなに便利なやり方あるんですね。
_(\d{1,4})、()でくくってサブマッチさせるやり方とても簡単で使いやすいです。

No.3513 2017/02/20(Mon) 08:54:10

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / しろまさ
慣れたらreplaceも試して下さい。速くなりますよ。

TextBlock aaa
テキスト1
id="inline_1806">
テキスト2
id="inline_1206">
テキスト3
id="inline_1156">
EndTextBlock

list = regReplace(aaa, ".*inline_(\d+).*|.*\r\n", "$1")
MsgBox(list)

// 正規表現 置換
Function regReplace(a_text, a_ptn, a_after)
Dim reg = CreateOLEObj("VBScript.Regexp"); reg.Global = TRUE; reg.Multiline = TRUE; reg.pattern = a_ptn; Result = reg.Replace(a_text, a_after)
FEnd

No.3515 2017/02/20(Mon) 12:19:53

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / stuncloud
// 正規表現使わんでもいい気がします

for elem in IE.document.querySelectorAll("*[id]") // id属性のあるエレメントを列挙
 n = replace(elem.id, "inline_", "")
 if chknum(n) then
  print n // 数字っぽいのだけprintする
 endif
next

No.3516 2017/02/20(Mon) 12:27:46

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / ゆうい
しろまさ様、回答ありがとうございます。しろまさ様のスクリプトでもできました。
パターンで、|.*\r\n", "$1"この部分が今の自分の実力では理解ができません。
|が論理和、\r\nの \nが改行にマッチ、\rがキャリッジリターン(行頭復帰)にマッチとなっていますが、なかなか難しいですね。

No.3517 2017/02/20(Mon) 15:37:19

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / ゆうい
stuncloud様、回答ありがとうございます。以下のスクリプトで試したのですが、このような表示がされできませんでした。intenet explorerは動作を停止しましたと表示、プログラム終了のボタンが表示になります。ワードプレスプレスの管理画面のソースのID取得で試しています。

[試したスクリプト]
URL1="http://b.jp/nan/"
TRY
   IE = CREATEOLEOBJ("InternetExplorer.Application")
  EXCEPT
   EXEC("C:\Program Files\Internet Explorer\iexplore.exe")
   IE = GETACTIVEOLEOBJ("InternetExplorer.Application")
  ENDTRY
IE.visible = true
IE.navigate(URL1)

REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4

for elem in IE.document.querySelectorAll("*[id]") // id属性のあるエレメントを列挙
 n = replace(elem.id, "inline_", "")
 if chknum(n) then
  print n // 数字っぽいのだけprintする
 endif
next

No.3518 2017/02/20(Mon) 15:43:08

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / stuncloud
あれれ、なんでしょうね…
すいません思いつきで書いたので実際に試してないんですが、IEが停止って大事ですね
理屈の上ではそういう書き方でも抽出できるよ、という例のつもりだったのですが…
もうしわけない、あとで時間取れたら確認してみます

No.3519 2017/02/20(Mon) 16:30:53

Re: 正規表現で抜き出した分から、数字のみを抽出する方法 / stuncloud
> intenet explorerは動作を停止しましたと表示、プログラム終了のボタンが表示になります。
こちらの環境でも再現しました、原因はわかりません
僕の書いたサンプルは使用しないでください

No.3521 2017/02/20(Mon) 17:54:24
2つのフラッシュの操作を自動化したい! / あの
一つのフラッシュで基本操作(4ヶ所クリック)をして、その結果によって、もう一つのフラッシュの3つのボタンのうちのどれかを押すような、比較的単純な作業を自動化したいです。
どなたか、お仕事として(報酬5万円)
チームビューアーなどの画面共有をしながら説明しつつ、作っていただくか、もしくは作り方をレクチャーしていただけないでしょうか?
よろしくお願いします。

No.3510 2017/02/19(Sun) 23:34:48
正規表現でパターン検索した文字列に対して、後ろに指定の文字列を加える方法 / ゆうい
textblockの中の文字列を正規表現のパターンで検索したのが下記。
<img style="width: 600px;" src="//" alt="1" />
<img style="width: 600px;" src="//" alt="2" />

これを下記にする方法について何か良い方法ないでしょうか?

希望処理
<img style="width: 600px;" src="//" alt="1" /><div class=ms2></div>
<img style="width: 600px;" src="//" alt="2" /><div class=ms2></div>

試しているスクリプト
textblock t_Text
テキスト1
<img style="width: 600px;" src="//" alt="1" />
テキスト2
<img style="width: 600px;" src="//" alt="2" />
endtextblock

print (regReplace(t_Text, "<img style=.+", "<img style=.+"+"<div class=<#DBL>ms2<#DBL>></div>"))

// 正規表現 置換
Function regReplace(a_text, a_ptn, a_after)
Dim reg = CreateOLEObj("VBScript.Regexp"); reg.Global = TRUE; reg.Multiline = TRUE; reg.pattern = a_ptn; Result = reg.Replace(a_text, a_after)
FEnd

No.3501 2017/02/17(Fri) 21:53:47

Re: 正規表現でパターン検索した文字列に対して、後ろに指定の文字列を加える方法 / しき
//後方参照を使う
s = regReplace(t_Text, "(<img style=[^\r\n]+)", "$1<div class=<#DBL>ms2<#DBL>></div>")
msgbox(s)

No.3502 2017/02/18(Sat) 04:28:46

Re: 正規表現でパターン検索した文字列に対して、後ろに指定の文字列を加える方法 / しろまさ
私は1行にタグが複数あることを前提として最短マッチを使います。
print (regReplace(t_Text, "(<img.+?>)", "$1<div class=<#DBL>ms2<#DBL>></div>"))

No.3503 2017/02/18(Sat) 10:51:15

Re: 正規表現でパターン検索した文字列に対して、後ろに指定の文字列を加える方法 / ゆうい
しき様、ご回答ありがとうございます。希望通りの処理ができました。
後方参照って便利なものがあるなんて知らなかったです。

No.3504 2017/02/18(Sat) 11:29:26

Re: 正規表現でパターン検索した文字列に対して、後ろに指定の文字列を加える方法 / ゆうい
しろまさ様、ご回答ありがとうございます。.+?で最短マッチ勉強になります。
No.3505 2017/02/18(Sat) 11:30:48
PROCEDURE内からTHREADの実行 / ギン
THREAD A

PROCEDURE A
THREAD B
FEND

PROCEDURE B
処理
FEND

というようにPROCEDURE A内からTHREAD Bを実行したいのですができません。
PROCEDURE AのFENDと同時に実行したはずのTHREAD Bも終了してしまうのではないかと思い
PROCEDURE A
THREAD B
sleep(100000)
FEND
としてみたのですが駄目でした。

何が原因でしょうか?

No.3483 2017/02/15(Wed) 14:30:09

Re: PROCEDURE内からTHREADの実行 / しろまさ
メインプロセスが終了してると思われます。

THREAD A
Sleep(10) // 待機しないとプロセスが高速で死ぬ。

PROCEDURE A
THREAD B
Fukidasi("A", 50, 50)
Sleep(5)
FEND

PROCEDURE B
Fukidasi("B", 100, 100)
Sleep(5)
FEND

No.3484 2017/02/15(Wed) 14:37:41

Re: PROCEDURE内からTHREADの実行 / ギン
しろまささん、ありがとうございます。

すいません、THREAD Aの下のsleepを記述し忘れていました。
THREAD A
sleep(100000)
としているのですが駄目なようです。

No.3485 2017/02/15(Wed) 14:42:03

Re: PROCEDURE内からTHREADの実行 / stuncloud
UWSCのバージョンが古いとか?
僕の環境でもBが呼べてますし、Aが終わってもBは動いてますね

thread A()
sleep(10)

procedure A
 fukidasi("A")
 thread B()
 sleep(2)
fend

procedure B
 fukidasi("B", 0, 50)
 sleep(5)
fend

No.3486 2017/02/15(Wed) 16:00:10

Re: PROCEDURE内からTHREADの実行 / ギン
stuncloudさん、ありがとうございます
コピーして使用してみたところ正常に動作しました。
なのでこちらの組んだスクリプトに問題があるのだと思い色々確認してみたところ、原因がわかりました。
Aの中でBを呼び出す直前にDOSCMDでバッチファイル(C)を呼び出しているのですが、DOSCMD(”C”,FALSE,TRUE)で確認してみたところそのバッチが終了していなかった為次の処理(THREAD B)に移れないでいたようです。

バッチファイルの内容は
コマンド < exit.txt
となっておりuwscにexitという名で内容は
exit
exit
のテキストを保存しているのですがバッチが終了しません。
手動でコマンドプロンプトを閉じたところTHREAD Bに移行したのでこれが原因で間違いなさそうです。
何が間違っているかわかりますでしょうか?
(UWSCというよりバッチファイルやコマンドの質問になってしまっていますがよろしければ教えて頂けると幸いです。申し訳ありません。)

No.3489 2017/02/15(Wed) 17:08:20

Re: PROCEDURE内からTHREADの実行 / stuncloud
> 何が間違っているかわかりますでしょうか?
わかりません
> コマンド < exit.txt
のコマンドがなんだかわかりませんがそれが終わってないんでしょう
そのコマンドがちゃんと終わるようにしてください

あと別にその程度ならわざわざbatファイルを通さなくてもDOSCMDで直接叩けばいいのでは…

No.3492 2017/02/15(Wed) 18:03:38

Re: PROCEDURE内からTHREADの実行 / ギン
ありがとうございます。
確かにそうですね。いつもの癖で何故かバッチを通してしまっていました。
DOSCMD(”コマンド”,TRUE,TRUE)としたところCMD.exeは残ったまま次の処理に移ることはできたのですがこのままプログラムを組んでいくとPROCEDURE内からTHREADを実行するたびにCMD.exeが裏に溜まっていってしまうのでしょうか?

No.3493 2017/02/15(Wed) 18:26:01

Re: PROCEDURE内からTHREADの実行 / stuncloud
> PROCEDURE内からTHREADを実行するたびにCMD.exeが裏に溜まっていってしまうのでしょうか?
THREADかどうかは全く関係ありません
が、DOSCMDで叩いたコマンドが終了しないのであればそうでしょうね

問題はUWSCではなくその実行コマンドにほかならないので
・コマンドプロンプト上で直接試す
・DOSCMDの部分だけ切り出したスクリプトを書いて試す
でうまくいくようになったら本番のスクリプトでうまくいくコマンドを実行するようにしてください
実行コマンドが明かされない以上こちらからの助言は無理なのであとはがんばってください

No.3494 2017/02/15(Wed) 18:51:54

Re: PROCEDURE内からTHREADの実行 / ギン
ありがとうございます。
すいません、コマンドの内容もきちんと書くべきでした。
DOSCMD(”nox.exe -clone:Nox_1”,TRUE,TRUE)
Nox app playerという仮装androidを扱うこのソフト専用のコマンドでエミュレータを一つ指定して起動する、という内容のコマンドです。
これをDOSCMDから実行するとコマンド自体は正常に動作するのですがCMD.exeには何も表示されておらず、手動で何かを打ち込もうとしても何も打ち込めない状態です。
コマンドプロンプト上で直接試すとその後も普通にキーボードを叩けば反応する状態で、exitを入力すれば窓は閉じます。
DOSCMD(”nox.exe -clone:Nox_1”,TRUE,TRUE)のみを実行しても先程と結果は同じでした。

No.3495 2017/02/15(Wed) 19:35:35

Re: PROCEDURE内からTHREADの実行 / しろまさ
,TRUE,TRUE) ではなく
,TRUE,FALSE) では?

No.3496 2017/02/16(Thu) 09:53:30

Re: PROCEDURE内からTHREADの実行 / ギン
CMD.exeが終了しているのかいないのかを確かめる為に今はTRUE,TRUEにしています。
No.3497 2017/02/16(Thu) 13:16:29

Re: PROCEDURE内からTHREADの実行 / しろまさ
なるほど。では、「Exitで終了する」のであれば、Exitを記述して起動しては?
DosCmd("nox.exe -clone:Nox_1;exit", TRUE, TRUE)

No.3498 2017/02/16(Thu) 14:08:00
ウィルスソフトに削除されてしまいます。 / kj
今まで、長年問題なくつかえてましたが、最近、uwsc の exe ファイル を実行すると ウィル対策ソフトにより削除される ことが多いです。uwsc、本体も実行したら削除されました。ウィルス対策ソフトは nifty が提供するソフトです。nifty に 問い合わせるべきことですが、ウィルス対策ソフトに削除されないような、uwsc を作っていただければと思い、投稿いたしました。
No.3480 2017/02/15(Wed) 07:56:29

Re: ウィルスソフトに削除されてしまいます。 / しゅみん
類似なのでココへ
バージョン5.2.3にするとトレンドマイクロのウイルスバスターcorpで警告がでます。
5.2.2では問題ありません。

No.3481 2017/02/15(Wed) 08:43:27

Re: ウィルスソフトに削除されてしまいます。 / しゅみん
訂正
5.2.2も警告でます。
5.2.1は大丈夫。

No.3482 2017/02/15(Wed) 09:20:20

Re: ウィルスソフトに削除されてしまいます。 / stuncloud
ウイルス対策ソフトにはだいたい例外設定があるので、uwsc.exeは削除対象にしないというように設定しておくべきかと思います
No.3487 2017/02/15(Wed) 16:02:53

Re: ウィルスソフトに削除されてしまいます。 / satocha
先ほどhttps://www.virustotal.com/ja/で最新版を一括スキャンしてみたのですが、Trend Microを含むすべてのエンジンで問題は検出されませんでした。

万一を考え、入手経路やPC環境の再確認をおすすめします。

No.3488 2017/02/15(Wed) 16:42:06

Re: ウィルスソフトに削除されてしまいます。 / mogutan
それって無理でしょ。ウイルス対策ソフト側が後から対策を取るのですから。
つまりですね、exeファイルなんだから何でもアリな訳で、それを"脅威"とみなしたメーカーが有ると言う事ですよ。"VirusTotal"での検証では58社中、3社が脅威と判断しているようです。

No.3490 2017/02/15(Wed) 17:10:03

Re: ウィルスソフトに削除されてしまいます。 / mogutan
※補足
↑はUWSC.EXEの事では無く、EXE化したスクリプトの事ね。

No.3491 2017/02/15(Wed) 17:14:59
複数のExcelブックへ複数のUWSCスクリプトから別々の処理をしたい。 / たいし
windows10 64bit
Excel 2013

windows7の時は以下で動作していたのですが
10アップグレード後、数年たって昔のスクリプトを動かすと
前面にあるブックへの書き込みになってしまい、それぞれへの
同時処理ができなくなってしまいました。

修正方法を指南していただけるとありがたいです。


・やりたいこと
 11.xlsx、22.xlsxを開いた状態で
 11.uwsから11.xlsxへの書き込み
 22.uwsから22.xlsxへの書き込み
 を、同時起動して処理したい。

// 11.uws
Excel = GETACTIVEOLEOBJ("Excel.Application", "11.xlsx")
for i = 0 to 100
Excel.ActiveCell.Offset(i, 0).value = "11 " + i
sleep(1)
next

// 11.uws
Excel2 = GETACTIVEOLEOBJ("Excel.Application", "22.xlsx")
for i = 0 to 1000
Excel2.ActiveCell.Offset(i, 0).value = "22 " + i
sleep(1)
next

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

No.3475 2017/02/11(Sat) 13:41:55

Re: 複数のExcelブックへ複数のUWSCスクリプトから別々の処理をしたい。 / たいし
↑ // 11.uws → // 22.uws 訂正します。すいません
No.3476 2017/02/11(Sat) 16:35:37

Re: 複数のExcelブックへ複数のUWSCスクリプトから別々の処理をしたい。 / miles
> 前面にあるブックへの書き込みになってしまい、
ActiveCellの切り替えがうまくいかないなら、
Row,Columnを取得して、裏で操作したらどうでしょうか?
(必要ならsheet名も取得)

Excel = GETACTIVEOLEOBJ("Excel.Application")
With Excel.WorkBooks("11.xlsx")
 .Activate
 x = Excel.ActiveCell.Row
 y = Excel.ActiveCell.Column
// name = .ActiveSheet.Name
 for i = 0 to 100
  .WorkSheets(1).Cells(x+i, y).value = "11 " + i
//  .WorkSheets(name).Cells(x+i, y).value = "11 " + i
  sleep(1)
 next
EndWith

No.3479 2017/02/14(Tue) 16:45:41
EXCELの行を非表示にしたい / もり
excelで値がセットされていない行を非表示に、セットされている行を表示したいのですが。

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

No.3477 2017/02/13(Mon) 10:53:16

Re: EXCELの行を非表示にしたい / stuncloud
もう少し要件をつめてください

> 値がセットされていない行
それはその行のすべての列に値がないということですか?それとも特定の列だけ?

フィルタを使いたいという話ですか?
それとも1行1行確認して非表示にしていく?
行の範囲は?

No.3478 2017/02/13(Mon) 11:30:08


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


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