[ 掲示板に戻る ]

過去ログ閲覧モード

正規表現で2つパターン指定して複数の検索結果を取得する方法 / ジンギスカン
2つパターン指定しても一つ目の<label for=<#DBL>A_\dL<#DBL>>(..*)<span、このパターンの結果しか取得できません。2つ目のパターンである<span class=<#DBL>number<#DBL> id=<#DBL>res3<#DBL>>(\d{1,3})</span> 件、この結果が取得できません。
コードの書き方が間違っているのでしょうか? |を使用して複数としているのですが。
今の自分ではできないので助けて頂けないでしょうか?

Public regvb=CREATEOLEOBJ("VBScript.RegExp")

//読込ファイル
fid="C:\Users\aruke\Desktop\a.html"

//書込ファイル
fid1="C:\Users\aruke\Desktop\da1.txt"


file = FOPEN(fid, F_READ)
file1 = FOPEN(fid1, F_READ or F_WRITE8)

文字列全体=fget(file,-2)
Pattern="<label for=<#DBL>A_\dL<#DBL>>(..*)<span | <span class=<#DBL>number<#DBL> id=<#DBL>res3<#DBL>>(\d{1,3})</span> 件"


Matches=regvb_Execute(文字列全体, Pattern)

for i = 0 to Matches.count-1
FPUT(file1, Matches.Item(i).SubMatches(0),i+1)
next
FPut(file1, Join(Split(FGet(file1, F_ALLTEXT), "<#CR>"), "<#CR>", TRUE), F_ALLTEXT)

FCLOSE(file)
FCLOSE(file1)


//正規表現
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.3758 2017/04/19(Wed) 11:12:58

Re: 正規表現で2つパターン指定して複数の検索結果を取得する方法 / ジンギスカン
パターンをそれぞれ1つ指定、下記のようなコードであれば期待どおりの2つのパターン結果が取得できます。何か、簡潔にできるコードないでしょうか?
|でパターンを複数にしたら、複数の結果が取得できるという認識なのですが、うまくいきません。

Public regvb=CREATEOLEOBJ("VBScript.RegExp")

//読込ファイル
fid="C:\Users\aruke\Desktop\a.html"

//書込ファイル
fid1="C:\Users\aruke\Desktop\da1.txt"


file = FOPEN(fid, F_READ)
file1 = FOPEN(fid1, F_WRITE8)

文字列全体=fget(file,-2)
// Pattern="<label for=<#DBL>A_\dL<#DBL>>(..*)<span"

Pattern="<label for=<#DBL>A_\dL<#DBL>>(..*)<span "


// Pattern="<span class=<#DBL>number<#DBL> id=<#DBL>res3<#DBL>>(\d{1,3})</span> 件"

Matches=regvb_Execute(文字列全体, Pattern)

for i = 0 to Matches.count-1
FPUT(file1, Matches.Item(i).SubMatches(0),i+1)
next
FPut(file1, Join(Split(FGet(file1, F_ALLTEXT), "<#CR>"), "<#CR>", TRUE), F_ALLTEXT)

FCLOSE(file)
FCLOSE(file1)


Public regvb=CREATEOLEOBJ("VBScript.RegExp")

//読込ファイル
fid="C:\Users\aruke\Desktop\a.html"

//書込ファイル
fid1="C:\Users\aruke\Desktop\da1.txt"


file = FOPEN(fid, F_READ)
file1 = FOPEN(fid1, F_READ or F_WRITE8)

文字列全体=fget(file,-2)
// Pattern="<label for=<#DBL>A_\dL<#DBL>>(..*)<span | <span class=<#DBL>number<#DBL> id=<#DBL>res3<#DBL>>(\d{1,3})</span> 件"

Pattern="<span class=<#DBL>number<#DBL> id=<#DBL>res3<#DBL>>(\d{1,3})</span> 件"


// Pattern="<span class=<#DBL>number<#DBL> id=<#DBL>res3<#DBL>>(\d{1,3})</span> 件"

Matches=regvb_Execute(文字列全体, Pattern)

for i = 0 to Matches.count-1
FPUT(file1, Matches.Item(i).SubMatches(0))
next
FPut(file1, Join(Split(FGet(file1, F_ALLTEXT), "<#CR>"), "<#CR>", TRUE), F_ALLTEXT)

FCLOSE(file)
FCLOSE(file1)



//正規表現
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.3759 2017/04/19(Wed) 11:16:33

Re: 正規表現で2つパターン指定して複数の検索結果を取得する方法 / しゅん
元の方法で正しく取得できていると思います。
手元の環境では、期待通りでした。

FPUTした結果をよく確認されていますでしょうか?
おそらく「(..*)」が問題かと思います。
「[^<\s]+」とかにすると良いと思います。(意味は調べてください)
最長一致・最短一致を勉強するのも良いと思います。

No.3760 2017/04/19(Wed) 13:15:27

Re: 正規表現で2つパターン指定して複数の検索結果を取得する方法 / ジンギスカン
しゅん様、返信ありがとうございます。
>「[^<\s]+」とかにすると良いと思います
一度調べてみます。
>最長一致・最短一致を勉強するのも良いと思います。
..*?をつけるのですね。

FPUT(file1, Matches.Item(i).SubMatches(i)にすると希望通り取得できました。
正規表現の一致のメカニズムを再度勉強し直します。

No.3765 2017/04/19(Wed) 20:33:24
UWSC Ver5.3.0 / umiumi
設定画面の低レベル記録に「バックグラウンドで実行できる形で記録」を付けた
Javaアプリの制御が出来なくなっていたのを修正
低レベル記録/再生にて 画面スケーリングが100%以外だとマウス位置がズレるのを修正
STOPフォームの位置が一時停止後に デフォルト位置に戻されるのを修正
SLCTBOX関数にて 位置指定に変数、式が使われているとNGなのを修正
MOUSEORG関数のMORG_DIRECT指定時 子オブジェクトがクリックされた時は KBD情報はそこに送るようにした
MOUSEORG関数のMORG_DIRECT指定時 Shift/Ctrl/Altが押されたままになる事があるのを修正
MOUSEORG関数のMORG_DIRECT指定時 マウスクリックの位置が正しくないパターンを修正
リモートデスクトップにて MOUSEORGのMORG_DIRECT指定時 Shift/Ctrl/AltがNGなのを修正
Pro版:
CREATEFORM関数にて FOM_FORMHIDE使用時に「閉じるボタン」が効かないのを修正

No.3740 2017/04/16(Sun) 03:03:23

Re: UWSC Ver5.3.0 / umiumi
>設定画面の低レベル記録に「バックグランドで実行できる形で記録」を付けた
WPF, UWPアプリ(Windows10の電卓等)はバックグランド実行できません
記録されるのはクライアント領域内のみです

>Javaアプリの制御が出来なくなっていたのを修正
Java Access Bridge のインストールは必要ありません (JRE Release7 Update6 以降付属)
JREは 32ビット版を使用してください

No.3744 2017/04/16(Sun) 03:20:40

Re: UWSC Ver5.3.0 / 山ちゃん
umiumi様、便利なUWSCを公開して頂きましてありがとうございます。
いつも便利に使用させて頂いています。

今回、Ver5.2.3からVer5.3.0へアップデートしたところエラーが発生するようですので報告させて頂きます。

内容
Ver5.3.0使用で
SLCTBOXにて項目を配列変数で渡すと(次元数が合いません)エラーが発生します。

検証コード
DIM select_item[] = "AAAA", "BBBB", "CCCC"
print SLCTBOX(SLCT_BTN, 0, "どれか選んでね", select_item)

使用環境
Windows 10 Pro Version 1607 / Version 1703 x64
UWSC Free版 Ver5.3.0

No.3751 2017/04/17(Mon) 16:44:28

Re: UWSC Ver5.3.0.1 / umiumi
2017/04/17 23:00 修正しました
SLCTBOX関数にて配列変数を使用した時にエラーが出るのを修正

No.3752 2017/04/17(Mon) 22:58:21

Re: UWSC Ver5.3.0 / ando
 umiumi様、バージョンアップお疲れ様です。いつも便利に使用させて頂いています。
 こちらの環境でもver5.2.3からver5.3.0.1へアップデートしたところ、slctbox()でエラーが発生するようになりましたのでご報告させて頂きます。

 環境: Windows 10 Pro ver1607 x64, UWSC Pro ver5.3.0.1

 以下を実行すると「変数: AAA が定義されていません」とエラーが表示されます。

print get_uwsc_ver // 5.301
hashtbl aaa
aaa["test"] = "bbb"
slctbox(slct_str, 0, "msg", aaa)

No.3753 2017/04/18(Tue) 07:46:57

Re: UWSC Ver5.3.0.2 / umiumi
2017/04/18 13:00 修正しました
SLCTBOX関数にて連想配列を使用した時にエラーが出るのを修正

No.3754 2017/04/18(Tue) 13:02:09

Re: UWSC Ver5.3.0 / 山ちゃん
umiumi様、素早い対応ありがとうございます。
Ver5.3.0.2にてエラーが解消されたことを確認しました。

No.3756 2017/04/18(Tue) 16:01:13

Re: UWSC Ver5.3.0 / ando
umiumi様、修正を確認しました。素早いご対応ありがとうございました。
No.3757 2017/04/19(Wed) 07:02:32
ツリーメニューのクリック / dodo
お世話になります。
例えば、掲示板サイトなどで、コメントを書いたとします。
コメント後、そのコメントの横にツリーメニューのアイコンがあり、それをクリックすると
現在の画面は遷移することなく、そのアイコンの真下に「投稿を削除」的なメニューが出て
それをクリックするとコメントが削除できるというようなものがあります。

この場合に、uwscで投稿を削除するを押したいのですが
CLKITEMで投稿を削除を引数に与えるだけではだめで、ツリーメニューのアイコンをクリックしてからそれをしないと動作しないことがわかりました。
ですが、ツリーメニューのアイコンのクリックの仕方がわからずご教授頂きたくお願い致します。

具体的には掲示板では以下のようなコードとなっています。
「icon/setting004.png」がツリーメニューのアイコンです。
これをクリックすると投稿を削除するメニューがすぐ下に表示されます。

<div class="widget"
data-widget-namespace="jp.aaa.community.pc.widget.bbs.comment.setting.popup"
data-trigger-element-selector=".JS_commentSettingTrigger"
data-popup-element-selector=".JS_commentSettingPopup"
data-click-allowed-element-selector=".JS_commentSettingTrigger">
<p class="COMMUNITY_cardBlockUserInfo__icon JS_commentSettingTrigger">
<img src="http://img.aaa.net/img/basic/icon/setting004.png" alt="設定" width="20" height="5" />
</p>
<ul class="COMMUNITY_dropdown COMMUNITY_cardBlockUserInfo--dropdown JS_commentSettingPopup" style="display:none;">

<li class="COMMUNITY_dropdown__item">
<a href="javascript:void(0);"
class="COMMUNITY_dropdown__linkScalable widget JS_deleteCommentPopupButton"
data-widget-namespace="jp.aaa.community.widget.comment.deletepopup"
data-community-id="5932670"
data-bbs-id="79636234"
data-comment-id="1483775608"
data-comment-number="1"
data-comment-body="コメント"
data-sender-name="コメント者"
data-closer-overlay-element-selector=".JS_deleteCommentPopupCloserLayer"
data-trigger-element-selector=".JS_deleteCommentPopupButton"
data-closer-element-selector=".JS_closeDeleteCommentPopupButton"
data-popup-element-selector=".JS_popupArea"
data-popup-position-align="windowCenter"
data-popup-position-valign="windowCenter"
data-z-index="101"
data-popup-template-id="comment_delete_popup"
>
<span class="COMMUNITY_dropdown__delete">投稿を削除</span>
</a>
</li>
</ul>
</div>

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

No.3747 2017/04/16(Sun) 16:55:31

Re: ツリーメニューのクリック / 雅
その掲示板のURLは教えられないのでしょうか?
再現に時間がかかる場合回答はすぐには得られないですよ?
質問される側の立場も少しは考慮して頂きたいです。

No.3748 2017/04/17(Mon) 09:45:51

Re: ツリーメニューのクリック / dodo
雅さん
お世話になります。

具体的にはmixiのコミュニティのトピックスになります。
(どのコミュニティでも問題ありません)
mixiのコミュニティのトピックスは閲覧のみなら誰でもできるのですが
コメントを書込んだり、上述の投稿を削除するメニューを表示させるには無料の会員登録が必要となります。
もし動作確認頂けるなら会員登録が必要となりお手数をおかけすることになりますが、可能であればよろしくお願い致します。

No.3749 2017/04/17(Mon) 10:27:53

Re: ツリーメニューのクリック / dodo
雅さん
追記です。

上記のmixiのコミュニティのトピックスとは例えば以下のURLのものです。
会員であればここで動作を確認できるかと思います。
http://mixi.jp/view_bbs.pl?id=4865621&comm_id=673289

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

No.3750 2017/04/17(Mon) 14:48:48
GETKEYSTATE(VK_LBUTTON)とG_MOUSE_X・G_MOUSE_Yについて / 始めたばかりです
Windows10
UWSC FREE 5.2.3.0

初めまして、UWSCを使用し始めたばかりですが、
勉強を兼ねて、ブラウザーの表示を自動更新するスクリプトを作成しています。

スクリプトの内容は、更新時間を入力し、
マウスでクリックした場所を、更新時間間隔でクリックするだけです。

下記にスクリプトを記述していますが、
まず、input関数で更新時間を入力し、OKボタンと押し
次に、クリックした場所をGETKEYSTATE(VK_LBUTTON)で記憶させ
指定した時間SLEEPし、同じ場所をBTNでクリックし続けるだけです。

ですが、実際に実行させると、input関数でOKボタンを押したクリックの値が
すでに有効とされ、クリックしたい場所を記憶することができません。

下記のスクリプトの、更新秒数設定のwhile文は実行されますが、
次のクリックポイント設定のwhile文は、
if GETKEYSTATE(VK_LBUTTON) = true          すでにTRUE
mouse_x = G_MOUSE_X; mouse_y = G_MOUSE_Y  input関数でOKボタンを押した値
になっています。
何か使用方法が間違っているのでしょうか?

ただ、更新秒数設定のロジックとクリックポイント設定のロジックを
入れ替えると機能的には正常に動きます。

今後、何かを作るときの為、使用方法が間違っているのか、
こういうのもなのか、教えて下さい。
よろしくお願いします。

------

//->更新秒数設定
While True
数 = input("更新秒数を入力してください","60")
ifb VAL(数) = ERR_VALUE
MsgBox("数値を入れてください")
Continue
endif
if chknum(数) = true
break
endif
wend
//<-更新秒数設定

//->クリックポイント設定
Fukidasi("クリックする場所を指定してださい")
while True
if GETKEYSTATE(VK_LBUTTON) = true
mouse_x = G_MOUSE_X
mouse_y = G_MOUSE_Y
id = GETID(GET_FROMPOINT_WIN)
win_title = STATUS(id, ST_TITLE)
win_class= STATUS(id, ST_CLASS)
win_x = STATUS(id, ST_X)
win_y = STATUS(id, ST_Y)
win_width = STATUS(id, ST_WIDTH)
win_height = STATUS(id, ST_HEIGHT)
break
endif
wend
sleep(3)
Fukidasi()

//<-クリックポイント設定

//->更新処理
While True
Fukidasi(win_title + " 自動更新中 " + 数 + "秒", mouse_x + 10, mouse_y + 5)
Sleep(数)
winID = GETID(win_title)
Ifb winID < 0 then
Fukidasi(win_title + " は起動されていません")
Sleep(5)
Fukidasi()
Else
ACW(winID,win_x,win_y,win_width,win_height,0)
BTN(LEFT,CLICK,mouse_x,mouse_y,200)
endif
Wend
//<-更新処理

No.3739 2017/04/15(Sat) 17:24:18

Re: GETKEYSTATE(VK_LBUTTON)とG_MOUSE_X・G_MOUSE_Yについて / miles
> 数 = input("更新秒数を入力してください","60")
のクリックが残っているので
> if GETKEYSTATE(VK_LBUTTON) = true
がそのまま通ってしまいます。
その前にクリア(読み捨て)しておく。

//->クリックポイント設定
Fukidasi("クリックする場所を指定してださい")
GETKEYSTATE(VK_LBUTTON) // VK_LBUTTONをクリア
while True
 if GETKEYSTATE(VK_LBUTTON) = true

No.3745 2017/04/16(Sun) 10:40:26

Re: GETKEYSTATE(VK_LBUTTON)とG_MOUSE_X・G_MOUSE_Yについて / 始めたばかりです
返信ありがとうございます。
思った通りの動きをしました。
クリアが、こういう方法だったのは気づきませんでした。
ありがとうございます。

No.3746 2017/04/16(Sun) 13:11:43
DLL関数に渡されるフリー・ストリング・リソース / vusd
私はこのようにUWSCで使用されるDLL関数を開発しています:
I'm developing DLL function that used by UWSC like this:

// 文字列の最初の文字を取得する
DEF_DLL StringSample(string):char:test.dll
print StringSample("Hello world")

UWSCは自動的に文字列リソースを解放しますか?次に、このような関数を記述します:
Does UWSC auto free up string resource, then I write the function like this:
[C++]
extern "C" __declspec(dllexport) char StringSample(const char *s) {
return s[0];
}
[/C++]

または私は文字列リソースを自分で解放する必要があります:
Or I must free the string resource by myself:
[C++]
extern "C" __declspec(dllexport) char StringSample(const char *s) {
char first = s[0];
delete[] s;
return first;
}
[/C++]

No.3737 2017/04/12(Wed) 16:33:23

Re: DLL関数に渡されるフリー・ストリング・リソース / しゅん
私なら最初の方にします。
メモリーの解放は確保した側の責任です。

I will not free string resource.
If I find a memory leak, I will report it as a bug.

No.3738 2017/04/13(Thu) 09:13:52
DisplaySwitch.exe が起動しなくなった / YMK
Windows10 Creators Update にしてから
これまで使用していたスクリプト
exec("DisplaySwitch.exe")
が起動しなくなりました。

ファイル名を指定して実行「DisplaySwitch.exe」
では起動できます。

コマンドを使用してトグルとして使っていたので、
困っています。

解決方法があれば教えて下さい。

UWSC Pro  Ver 5.2.3

No.3730 2017/04/10(Mon) 23:36:12

Re: DisplaySwitch.exe が起動しなくなった / koi
確認してません

Win7->Win10にしたとき
タスクマネージャの起動で同様の問題が出て質問したことがあります
その時は doscmd 使うことで起動できました

なぜ exec で動かないのかということについては
明確な回答がなかったので不明です(とりあえず起動したからそれでOK)

No.3731 2017/04/11(Tue) 08:25:30

Re: DisplaySwitch.exe が起動しなくなった / YMK
doscmd("C:\Windows\System32\DisplaySwitch.exe")
でもダメでした。
(当然コマンドプロンプトからは起動できる。)

wShell = CreateOLEObj("WScript.Shell")
wShell.exec ("C:\Windows\System32\DisplaySwitch.exe")
も念のためやってみましたが、「comエラーが発生」しました。

試しにDisplaySwitch.exeをデスクトップにおいて
そこのパスを指定すると起動したので、
適当なフォルダに移動して利用しようと思います。

「Windows10 Creators Update」は出てまだ1日ですが、
何か色々有りそうです。

No.3734 2017/04/11(Tue) 15:40:26

Re: DisplaySwitch.exe が起動しなくなった / YMK
他にも(Uwsc以外)不具合が発生したので、Anniversary Updateにロールバックしたところ、
exec("DisplaySwitch.exe")
できちんと起動しました。

報告まで。

No.3736 2017/04/12(Wed) 01:29:24
プログラムが正常に動作しません / GGL
Windows10 Build 16170
UWSC PRO 5.2.3.0

読込みボタンを押しても反応がない
記録ボタンを押してSTOP。保存ボタンを押しても反応がない

私だけの環境下の問題か。
回避策があれば教えてください。

No.3735 2017/04/11(Tue) 23:41:46
Google Chromeにて / Aki
Win10での使用です。Google Chromeの任意の画面をUWSCにて認識して、その画面に応じての自動実行は可能でしょうか?
例えば、Google Chromeにて1と表示されたらAという動作、2と表示されたらBという動作という具合にです。

説明が下手で申し訳ないないのですが、どなたかご存知な方がいらっしゃいましたら教えていただけましたら助かります。

宜しくお願い致します。

No.3732 2017/04/11(Tue) 10:21:42

Re: Google Chromeにて / 雅
if 1と表示 then
 Aという動作
endif

if 2と表示 then
 Bという動作
endif

No.3733 2017/04/11(Tue) 12:10:05
インスタグラムの投稿に自動いいねする方法 / hana
実行したいこと

●firefoxにて、インスタグラムの投稿に連続いいねをしていく。


・firefox立上げ
・ログインして他の人の投稿をクリックしライトボックスのように拡大表示させる。

【↓↓ここから自動化したい】

・ダブルクリックでいいね
・キーボードの→をクリックする
・次の画像を表示
→ループ


別サイトに以下のようなマクロを利用すれば可能とあったのですが
記述した.UWSファイルを再生しても特に動きはありませんでした。

---
while true
KBD(VK_RIGHT)
sleep(2)
BTN(LEFT, CLICK)
BTN(LEFT, CLICK)
sleep(1)
wend
---


UWSCがフリーのため、マクロを読み込めていないのでしょうか?
それともマクロの内容がそもそも違うのでしょうか?

No.3727 2017/04/08(Sat) 17:45:53

Re: インスタグラムの投稿に自動いいねする方法 / hana
可能であれば、ループ回数も指定出来たらと思っています。
No.3728 2017/04/08(Sat) 17:46:45

Re: インスタグラムの投稿に自動いいねする方法 / 俄プログラマー
そのサンプルで動きがわからないのなら基礎から勉強する必要があります。

http://www.uwsc.info/sample.html#N1
http://www.uwsc.info/sample.html#N2
http://www.uwsc.info/sample.html#N13

私からは以上です。

No.3729 2017/04/08(Sat) 23:13:25
IEのIESETDATAで値が入力できない。 / POW
IEでログインサイトを表示し、自動でログインすできるようにしたいと思っています。
以下で作成しましたが、お客様コードが入力できません。
何が間違っているのでしょうか。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("https://bmypage.kuronekoyamato.co.jp/")

busywait(ie)

IESETDATA( IE,"******", "CSTMR_CD" )

procedure busywait(ie)
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4
FEND


よろしくお願いします。

No.3723 2017/04/08(Sat) 08:14:46

Re: IEのIESETDATAで値が入力できない。 / miles
更新待ちでスリープを入れたらどうですか?

procedure busywait(ie)
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4
SLEEP(1)
FEND

No.3724 2017/04/08(Sat) 09:07:52

Re: IEのIESETDATAで値が入力できない。 / POW
スリープを入れて解決しました。
ありがとうございました。

No.3726 2017/04/08(Sat) 11:09:56
全1170件 [ ページ : << 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 117 >> ]