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

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
SearchRocketbbs(掲示板DL検索)

deeplearningとAI / sel
近い所にあるpythonですが、UwscWebDriverは、将来近づけそうですか。
とても期待している者です。

No.328 2019/03/30(Sat) 00:40:02

Re: deeplearningとAI / stuncloud
ご期待のところ残念ですが、深層学習も人工知能もpythonも全く関係がないので未来永劫近づくことはないです
No.329 2019/03/30(Sat) 01:49:43

Re: deeplearningとAI / sel
お忙しい所、回答ありがとうございます、承知いたしました。
Uwscの開発が止まってしまったので、WebDriverの進化に期待しましたが、RPAは、
ハードルの低い他のソフトに依存することになりそうです。

No.330 2019/03/30(Sat) 09:36:57

Re: deeplearningとAI / stuncloud
なにか勘違いされてるようですが、WebDriverはそれを仲介してブラウザ上でWebサイトやアプリケーションのテストを行うためだけのものです
それ以上の機能は提供されません

もちろん他の技術(それこそ深層学習や人工知能でもいいでしょう)と組み合わせて使うことは可能です
しかし、それらをもともとから組み込めというのは乱暴です
UWSCWebDriverも単にUWSCからWebDriverを簡単に扱えるようにするだけのものです
簡単と言ってもコードを書く能力は求められます
なので、そこにハードルの高さを感じる人へ向けたものではないということになります

UWSCは既に終焉に向かっていると言っても間違いではないでしょう
しかしそれでもUWSCを使い続けている、UWSCを愛する人たちへの一助となれるように作られたのがUWSCWebDriverです
言わば過去への執着であり、未来へ向かうものではありません
先を見据えるなら、別の道へ進んでください

No.331 2019/03/30(Sat) 14:22:26
(No Subject) / ブタ子
みなさん、ありがとうございます。
アドバイスで、以下のように作ってみましたが、ミカンだけでなく、リンゴでも負けになってしまいました、子供達といっしょに、自分も勉強します。
While True
stest = input("カナしりとりしましょ","")
ifb stest = EMPTY then
msgbox("コワイのかな。")
elseif stest = ""
msgbox("マケです。")
elseif stest = "ネコ"
msgbox("コネコ")
elseif stest = "バナナ"
msgbox("ナシ")
elseif POS("ブ",stest,-1)>0
msgbox("ブタコ")
elseif POS("ン",stest,-1)>0
msgbox("あなたのマケです。")
EXITEXIT
else
msgbox("あなたのカチです。")
endif
wend

No.325 2019/03/27(Wed) 18:22:27

Re: / satocha
> elseif POS("ン",stest,-1)>0
これでは「「ン」が入っていたら」という意味になってしまいます。

「最後が「ン」だったら」というのがしりとりのルールなので、

elseif POS("ン",stest,-1)=length(stest)

ですね。

No.326 2019/03/27(Wed) 19:36:22

Re: / ブタ子
satochaさん、フォローありがとうございます。
stuncloudさん、しろまささんのものはレベル果てしないので少しずつ理解していければと思います、掲示板の使い方さえうまく出来ず、このたびはお世話おかけしました。

No.327 2019/03/28(Thu) 18:37:32
しりとり / ブタ子
貴重な掲示板をお借りします、子供達のために簡単なしりとりゲームを考えています、超初心者で以下のような感じで言葉を繋いでいますが、少し追加助言いただける方がいらっしゃいましたら、よろしくお願いします。
stest = input("しりとりしましょ","けいじばん")
ifb stest = EMPTY then
msgbox("怖いのかな。")
elseif stest = ""
msgbox("負けです。")
elseif stest = "ねこ"
msgbox("こねこ")
else
msgbox("あなたの勝ちです。")
endif

No.318 2019/03/26(Tue) 23:26:44

Re: しりとり / satocha
<ループ>
しりとりなら、ある程度続かなくては。
そのためにプログラムをループさせる必要があります。
repeat〜untilやwhile〜wendの用例をヘルプやこの掲示板主のサイト(下のhomeのリンク)で調べるといいでしょう。
ループ脱出の条件は
 1)ユーザの反則負け(「ん」で終わる or 既出の回答)
 2)一定の文字列(例えば「おわり」)の入力で終了
 3)正答がある数に達したらユーザーの勝利
 4)コンピュータ側のギブアップ
などを考えるといいかも。

<データ>
しりとりですから、コンピューター側も答えを続けていかなければなりません。また、ユーザが入力した文字列が日本語の単語として成立しているかを判定しなければなりません。そのため、大量の辞書データが必要になります。これを自分でコードに落とし込むのはほとんど不可能なので、かな漢字変換ソフトの辞書なんかを使うなどの工夫が必要です。Windows用は権利関係がややこしいので、例えばUNIXでかつてよく使われていた単漢字変換SKKの辞書を利用するなどです。
  http://www.ring.gr.jp/archives/elisp/skk/dic/
初心者さんということで、今挙げたのは敷居が高いかもしれません。そこで、例えばある絵本に絞ってその中にある言葉だけでしりとりをする、などという方法もあるでしょう。お子さんと一緒に絵本から入力すれば教育効果もありそうです。

いずれにせよ、単語データはプログラムに作り込むのではなく別ファイルで扱ったほうがいい(というかそうせざるを得ない)と思います。

<判定>
前段でちらっと触れましたが、
  1)日本語として存在する言葉か
  2)既出でないか
  3)しりとりとして成立しているか
を判断する必要があります。

1)は絵本方式なら簡単ですが、どんな言葉でもいいとすると難しそうです。ユーザ入力の言葉でGoogle検索を行い、ヒット数が一定数以下はNGとするとかですが、そうなるとWebアクセス周りの知識も必要になりますね。

2)は連想配列(UWSCではハッシュテーブル hashtbl)を使うと簡単そうです。ヘルプのhashtblだけでは理解が難しいと思いますので、本掲示板、公式掲示板でスレッド検索してみてください。

3)は文字列関数のposが使えると思います。ヘルプを参照してください。

<ゲーム性向上>
ユーザー入力に時間制限を設けるとか、入力時間が短いときは高得点を与えるとか、NG判定時に即ゲームオーバーにせずお手つきを一定数認めるかなどが考えられます。ハイスコアを記録するならINIファイルを使うのが簡単です。本掲示板で最近INIファイルの議論があったと思いますので、検索してみてください。

No.319 2019/03/27(Wed) 09:13:40

Re: しりとり / stuncloud
子ども向けの簡単なしりとりプログラム、ということであれば
プログラム側の辞書も単純なものでいいと思います
ひらがな限定にして、50音それぞれにつき3単語くらい (考えるの大変ですが)
「ん」で終わる単語を含ませておくのも良いでしょう
プログラム側も「ん」や既出後で負けることがあるようにすると面白そうです

・プログラム側がプレイヤーの回答の末尾の文字を頭文字として候補からランダムに回答する処理の例

// しりとり.ini
// [dictionary]
// あ=あめんぼ あかちゃん あいさつ
// い=いぬ いるか いす
// ︙
// わ=わかめ わっか わに

回答候補 = split(readini("dictionary", 頭文字, "しりとり.ini"))
回答 = 回答候補[random(length(回答候補))]

・プレイヤーおよびプログラムの回答を評価する関数の例

評価("あかちゃん", "あ") // false
評価("いぬ", "あ") // false
評価("おもちゃ", "お") // true
評価("おもちゃ", "お") // false

public hashtbl 回答済み

function 評価(回答, 頭文字)
 result = FALSE
 if 回答済み[回答, HASH_EXISTS] then
  // すでに回答されている
  exit
 endif
 if pos(頭文字, 回答) <> 1 then
  // しりとりになっていない
  exit
 endif
 if pos("ん", 回答, -1) = length(回答) then
  // ん で終わっている
  exit
 endif
 回答済み[回答] = EMPTY
 result = TRUE
fend

しりとりになっているかどうかの判定は別に分けて、NGなら再入力を促しても良さそうですね

No.320 2019/03/27(Wed) 12:27:57

Re: しりとり / しろまさ
// ちょっと作ってみました。ー とか ゃゅょ などは未対応です
HashTbl  h
For wd In Split(RePlace(lst, "<#CR>", " "))//単語登録
  w = Copy(wd, 1, 1); h[w] = h[w] + wd + " "
Next

so = Get(h, h[random(Length(h)), HASH_KEY])
ss = "しりとりしましょ。はじめは " + so
Judge(so, ss)
Repeat
  sn = input(ss)
  ifb sn = EMPTY  ; msgbox("またね〜")  ; Exit
  elseif sn = ""  ; msgbox("ひらがなを入れてね")  ; Continue
  elseif Copy(so, Length(so), 1) <> Copy(sn, 1, 1)  ; msgbox("続いてませんよ")  ; Continue
  else
    so = Get(h, Judge(sn, sn, "ん が付いたら負けですよ。"))
    ss = sn + " ときたら " + so
    Judge(so, ss)
  endif
Until  FALSE
Function  Get(var h[], w)
  r = h[w]
  Ifb r = ""; msgbox(w + "・・・<#CR><#CR>もうないよ 負けた〜"); ExitExit; EndIf
  sa = Split(r, " ", TRUE)
  n = random(Length(sa))
  so = sa[n]
  h[w] = Join(Split(RePlace(r, so, ""), " ", TRUE))
  Result = so
FEnd
Function  Judge(wd, ss, se = "うわ〜 負けた〜")
  Result  = Copy(wd, Length(wd), 1)
  Ifb Result = "ん"; msgbox(ss + "<#CR><#CR>" + se); ExitExit; EndIf
FEnd
TextBlock  lst
あい いえ いいえ うえ え あお おい
あか いか いけ かい かぎ かがく がか かいぎ かくえき がいこくご えき きかい かき あき ぎかい けいかく げき ごご こえ こくご ここ
かさ さけ あさ しお あし うし くし すし しかく おかし ぎし じこく すいか いす かず せかい うそ きそく そこ あそこ ざせき かぜ がくせい かぞく おそい
たこ たいこ げた たかい いたい うた くち ちかてつ いちにち ちず うち くつ ちえ あつい おでこ て どく しごと いとこ いと おととい とち とし
さかな いなか なぞ なつ かに くに にく うに あに いぬ あね ねこ おかね きのこ つの
はい はた はこ はし たばこ ことば はな ひ ひげ ひざ えび あさひ ぶた ふえ たいふう さいふ ふで あそぶ くちぶえ なべ へそ かべ へび とくべつ ほね ほし
うま あたま なまえ まいにち まど うみ はさみ みせ ねずみ みみ かみさま みぎ みず むかし むすこ むし あめ め つめたい めがね めぐすり かいもの くも にもつ くだもの こども
やすい やま おやじ やきそば やさい やおや せきゆ ゆき ゆめ ゆび
さくら まくら からだ からい はいざら まつり りかい とり ろく まる よる みそしる さる れい れいぞうこ これ よろしく しろ こころ くろ おふろ
わに かわ わかい こわい わたし わかもの
あんしん うんどう えんぴつ おばさん おんせん きん きんえん きんにく けんり けんさ ごはん さんそ しんゆう すいぞくかん せんす さんぽ しんらい てんき てんぷら てんいん でんき にほん はんたい ぶんがく ぶんか ほんや もんく ふじさん らいねん りんご りろん れんあい れんらく
あさって いっぷん おっと がっき がっこう きって きっさてん きっぷ けっこん ざっし さっか しんぱい じっけん せっけん はっけん ねったい
いしょ いっしょ いつう いっつう いせき いっせき さか さっか にし にっし いけん いっけん かこ かっこ
あかちゃん いしゃ うちゅう おちゃ かいしゃ かんじゃ かぼちゃ ぎゅうにゅう きゃく きんぎょ ちきゅう きょねん きゅうきゅうしゃ こうちょう こうじょう こうちゃ さんみゃく じしょ じゅうどう じてんしゃ じんじゃ しゃしん じゅうしょ さんびゃく だいとうりょう ちょきん ちゅうしゃ としょかん にんぎょう びじゅつかん びょういん びょうき ひゃくえん べんきょう まじょ みょうじ ゆうびんきょく りゅう りょこう れんしゅう
えいご おねえさん がくせい けいざい こうつう とけい そうです ばんごう ぶんぽう ふうとう へいわ めいし
いえ いいえ いっしゅ いっしゅう おじさん おじいさん おかみ おおかみ おく おおく かさん かあさん かく かくう きろ きいろ くき くうき せかい せいかい そこ そうこ とけい とうけい とり とおり にんぎょ にんぎょう にさん にいさん へや へいや よじ ようじ
EndTextBlock  //  https://hire39.com/hiragana-dictation

No.322 2019/03/27(Wed) 15:53:06

Re: しりとり / stuncloud
いいですねこれ!
「ら」とか「る」に持っていければ勝てるな
という戦略が生まれました

inputへの入力も省いてslctboxでいくつか候補を選ばせる、
なんてのでもいいかもしれないな〜と思いました
(ときどき続かない単語とか「ん」で終わる単語が混ざる感じで)
このあたりはどのように遊んでもらいたいかにもよりますが

No.323 2019/03/27(Wed) 16:17:44

Re: しりとり / stuncloud
そういえば、docomoのAPIでしりとりできたなーというのを思い出しました
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=natural_dialogue&p_name=api_4_usage_scenario#tag01
しりとりモードに入ればしりとりし放題です

No.324 2019/03/27(Wed) 17:07:59
IEで画像を取得したいサイトに接続して、そのページの画像ファイル(png.jpg)ファイルを取得する方法 / 葵
IEで画像を取得したいサイトに接続して、そのページの画像ファイルをuwscで一括で取得する方法はないでしょうか?
wordpressで本番サイトにあるページの画像ファイルは、当然反映されているのですが、ローカル上では反映していない状態です。
そこで、本番サイトページにアクセスして、画像を一括で取得して、ローカル上にも同じ画像を反映させたいと思っています。
何か良い方法はないでしょうか?

No.314 2019/03/25(Mon) 20:15:20

Re: IEで画像を取得したいサイトに接続して、そのページの画像ファイル(png.jpg)ファイルを取得する方法 / satocha
document.getElementsByTagName('img').getAttribute('src')で取ってきて、ごにょすればいいと思うのですが、

その前に、stuncloudさんの質問に答えたほうがいいと思います。

No.316 2019/03/26(Tue) 21:38:09

Re: IEで画像を取得したいサイトに接続して、そのページの画像ファイル(png.jpg)ファイルを取得する方法 / 葵
satocha様、助言ありがとうございます。
試してみます。

No.317 2019/03/26(Tue) 22:39:56
uwscでコード書く時に、powershellの有効活用法 / ネル
uwscでコード書く時に、powershellのコードを使った方が便利な場面が多々あると思います。やりたい処理によって変わってくるとは思いますが、先輩方はどのようにuwscと比較して、powershellのどのコードをよく使われていますか?

powershellの変数展開がダブルクォーテーションでできたり、1..10で連番を簡潔に書けたり等あると思います。

ダブルクォーテーション:変数の展開が行われる。
シングルクォーテーション:展開が行われない。

連続した数値の入った配列を簡潔に定義できる
$array = 1..10

a=powershell(ps1)
textblock ps1
//powershellの処理
endtextblock

No.295 2019/03/23(Sat) 12:10:01

Re: uwscでコード書く時に、powershellの有効活用法 / stuncloud
例に挙げられているようなシンタックスの違いが利点になりうるという発想はありませんでした
そういう観点ではちょっと事例を上げるのは難しい、というかあんまりいいのが思いつきません

僕がUWSCのpowershell関数の最大のメリットと感じるのはやはり.Netが使えることですね
UWSCも.Netのごく一部のクラスであればcreateoleobj()から使えるんですが、それだと制限が多々ありますし
.Netの機能をほぼ全て使えるようになると考えるとなかなかすごいんじゃないかな、と

ちなみに僕にとってはpowershell関数のデメリットがメリットを上回っちゃってるので
僕自身はぜんぜんpowershell関数を有効活用してないです…

No.297 2019/03/23(Sat) 17:15:37

Re: uwscでコード書く時に、powershellの有効活用法 / ネル
stuncloud様返信ありがとうございます。

>ちなみに僕にとってはpowershell関数のデメリットがメリットを上回っちゃってる
powershell関数のデメリットとは、なんでしょうか?
.netが使えるとのことですが、.netというキーワードで検索しても難解ですね。
.netで具体的に何ができるかイメージできません。
stuncloud様の見解として、uwscでたいていの事はできるのでpowershellはあまり使わないという感じですかね?

No.298 2019/03/23(Sat) 20:19:10

Re: uwscでコード書く時に、powershellの有効活用法 / stuncloud
>powershell関数のデメリットとは、なんでしょうか?
遅いんですよね!powershell関数!

あと、PowerShellはオブジェクトを扱えるのが利点なのですが
powershell関数を介してUWSCとPowerShellがやり取りをする場合は文字列しか使えません
PowerShellのオブジェクトをUWSC側で使うということができないのです
これがpowershell関数の限界なんですよね…

なので、大半の処理をPowerShell側で行わせて
最後にUWSCで扱いやすい形式の文字列で返すという感じになるのですが
その結果書かれたものがほぼPowerShellのスクリプトでUWSCで書く意味があったのか?
ということになりがちなんです、僕の場合

> .netが使えるとのことですが、.netというキーワードで検索しても難解ですね。
> .netで具体的に何ができるかイメージできません。

正確には.Net Framework、です
.Net Frameworkに含まれる膨大なプログラム群の機能が使えます
具体的に何ができるというのはまぁ、難しいです
というのもできることも膨大なので、やりたいことに合わせて機能を選ぶ感じ?

UWSCであれば
・def_dllでdllの機能を使う
・createoleobjでCOMを使う
というふうに、別のプログラムの力を借りることでできることを増やせますよね
それと似たような感じで、.Netのいろいろな機能を借りてやりたいことを実現します
ただし、UWSCからは直接.Netの機能を使うのは難しいので
.Netが標準で扱えるPowerShellを呼び出すことでその恩恵にあずかることができる
というわけです

> uwscでたいていの事はできるのでpowershellはあまり使わないという感じですかね?
現在の僕はUWSCよりもPowerShellを使い倒しているので
どちらかというとだいたいのことはPowerShellで済ませてしまいます
(powershell関数を呼ぶくらいなら最初からPowerShellでやったほうが早い)
UI操作が必要なときくらいですね、UWSCを使うのは


若干悪い方向で書いてしまいましたが…
決してpowershell関数は役に立たないとか使うなとかそういう話ではないです
UWSC単体ではできないことを実現する手段として非常に強力なので、使えるに越したことはありません
PowerShell力が上がれば上がるほどできることも増えますしね

ただまぁやればやるほどに、UWSCを起点にする必要があるのか?みたいなジレンマがあるわけで
PowerShellの便利さを発揮するにはやはりpowershell関数は完全ではないというか…
なんというかこう、うーん…伝わりますかねぇ…この感じ…

…すいませんなんかまとまんないので、ちょっと話を戻しましょう
>powershellの変数展開がダブルクォーテーションでできたり、1..10で連番を簡潔に書けたり等あると思います。
というのはまぁ、UWSCにないPowerShellの特徴ですよね
こういったことを学ぶのにぴったりの書籍があるので最後にそれを紹介しておきます
https://www.amazon.co.jp/dp/4839965986
PowerShellに興味がある人にはオススメの一冊です

No.299 2019/03/23(Sat) 21:34:01

Re: uwscでコード書く時に、powershellの有効活用法 / Rayna
>>295 ネル さん
---
>>uwscと比較して、powershellのどのコードをよく使われていますか?
 速度の問題をクリアできればですが
 UWSCのDecimal型はDouble型で丸められて使いものにならないので
 Double型の表現幅に悩まされず擬似的にDecimal型を使える...とか
  Dim sVal1="[UInt64]::MaxValue", sVal2=$F
  //| 18446744073709551615 * 15 -> 276701161105643274225
  MsgBox(Trim(PowerShell("([Decimal] (([Decimal] "+sVal1+") * ([Decimal] "+sVal2+")))")))
 みたいな感じで
 Doubleの丸めが煩わしくてでもそれのために関数実装するのも面倒くさいときに使ったりします

 .Netのフォームコントロールも使いますね(詳しくは下記の公式サンプルから)

 あとはあまりUWSCのスクリプトには使いませんがUWSCのスクリプトを作る際に
 オブジェクトのメンバを見ることができるGet-Memberが便利なのでよく使います
---
>>.netで具体的に何ができるかイメージできません。
 公式のサンプルから
  PowerShellより C#を呼び出す(足し算をする)
   http://www.uwsc.info/sample.html#N51
  PowerShellより .Net Frameworkを利用しフォームを作る
   http://www.uwsc.info/sample.html#N52
---
PowerShell関数の高速化Moduleを書かれている人がいらっしゃるので興味があれば検索してみたらいいかもです

No.300 2019/03/24(Sun) 03:21:13

Re: uwscでコード書く時に、powershellの有効活用法 / ネル
stuncloud様、返信ありがとうございます。

>UI操作が必要なときくらいですね、UWSCを使うのは

UI操作とは、getidでidを取得して、ウィンドウのタイトル取得やacwなどのサイズ変更のことでしょうか?
または、popupmenuやslctboxのことでしょうか?

>現在の僕はUWSCよりもPowerShellを使い倒しているので
ということは、PowerShellの方がuwscよりもやりたいこと(やりたいことにもよると思いますが)がたくさんできるということですか?
私がuwscでやる処理としては、スクレイピングやWordpressにアクセスして色々やることが多いのです。

今の私としては、uwscでかなりのことができているので不満はないのですが、自分が知らないだけでpowershellだともっとたくさんのことができるのであれば、powershellを学んでいこうと思っています。

No.303 2019/03/24(Sun) 19:00:53

Re: uwscでコード書く時に、powershellの有効活用法 / ネル
Rayna様、返信ありがとうございます。

  >Dim sVal1="[UInt64]::MaxValue", sVal2=$F
  //| 18446744073709551615 * 15 -> 276701161105643274225
  MsgBox(Trim(PowerShell("([Decimal] (([Decimal] "+sVal1+") * ([Decimal] "+sVal2+")))")))

すみません、上記のコードは、何を意味しているのでしょうか?
どういう時に、使うのでしょうか?

 .Netのフォームコントロールも使いますね(詳しくは下記の公式サンプルから)


>PowerShellより C#を呼び出す(足し算をする)
C#で足し算をするコードですが、uwscで普通にa=1+1とすればできるので使いみち、イメージできません。

>PowerShellより .Net Frameworkを利用しフォームを作る
.Net Frameworkを利用しフォームを作成ですが、slctbox,popupmenu,createformがあるので、使い所がイメージできません。

すみません、わたくしはプログラミング初心者の若輩者ですので、具体的な使いみちを考えてしまいます。

No.304 2019/03/24(Sun) 19:13:02

Re: uwscでコード書く時に、powershellの有効活用法 / Rayna
>>304 ネル さん
---
構文のことを例に上げながら質問されていたので
PowerShellを少し触ったことがあるのかと思ってました
> すみません、上記のコードは、何を意味しているのでしょうか? どういう時に、使うのでしょうか?

 例えば 18446744073709551615 * 15 の結果は 276701161105643274225 ですが
 UWSCで
   MsgBox(18446744073709551615 * 15)
 とすると
   2.76701161105643E20 // 2.76701161105643 * 10^20 = 276701161105643000000
 となり(Double型)、正確ではありません
 Decimal型だと -79228162514264337593543950335 〜 79228162514264337593543950335 まで扱えるので

 それを文字列で擬似的に計算している感じです
   [UInt64]::MaxValue // UInt64 の最大値
   [Decimal] n // nをDecimal型にキャスト

   [Decimal] ([Decimal] [UInt64]::MaxValue) * ([Decimal] 15)
    ↓下記と同義
   [Decimal] ([Decimal] 18446744073709551615) * ([Decimal] 15)

 一応uwscにもDecimal型はありますが計算の処理がDouble型らしいので大きい桁を計算しようとすると失敗します(ヘルプにも書かれてないですしね)
   Const VAR_DECIMAL = $000E
   Dim msg, dec1=VarType("18446744073709551615", VAR_DECIMAL), dec2=VarType("15", VAR_DECIMAL)

   msg = dec1 + "はDecimal型"
   If VarType(dec1)=VAR_DECIMAL Then msg=msg+"です" Else msg=msg+"ではないです"
   MsgBox(msg)
   msg = (dec1*1) + "はDecimal型"
   If VarType(dec1*1)=VAR_DECIMAL Then msg=msg+"です" Else msg=msg+"ではないです"
   MsgBox(msg)

   //| PowerShellで言う ([Decimal] (([Decimal] dec1) * ([Decimal] dec2))) と同義
   MsgBox(VarType(dec1 * dec2, VAR_DECIMAL)) //| [エラー] KansuCall:Invalid variant type
---
>> slctbox,popupmenu,createformがあるので、使い所がイメージできません
 このサンプルの言いたいことは.NETのフォームコントロールが扱えると言うことで
 そうですね、例えば
   PictureBox が使えれば画像の表示ができるし
   ProgressBarが使えれば処理の経過を可視化できます
   TrackBar が使えればSlctBoxでは使えないTrackBarで項目を選択することもできます
   RichTextBoxで複数行入力可能なInputBoxを作成したり
 いろいろ使い道はあります

 少し前に作ったスクリプトですが例えばこんなのとか作れます
 Progress.uws
  https://ux.getuploader.com/Rayna7nana/download/1
---
>> C#で足し算をするコードですが、uwscで普通にa=1+1とすればできるので使いみち、イメージできません。
 これもこのサンプルの本質は「UWSCからC#を実行できる」ってことだと思います
 C#の力を借りてできる事の幅を広げれるってことですね

No.308 2019/03/25(Mon) 00:34:17

Re: uwscでコード書く時に、powershellの有効活用法 / しろまさ
> こういったことを学ぶのにぴったりの書籍があるので最後にそれを紹介
stuncloudさんの紹介なれば迷い無く買いですね!
早速購入させて頂きました。今日届くそうですが既に待ち遠しいです。
ありがとうございました。

No.309 2019/03/25(Mon) 13:23:50

Re: uwscでコード書く時に、powershellの有効活用法 / stuncloud
> UI操作とは、getidでidを取得して、ウィンドウのタイトル取得やacwなどのサイズ変更のことでしょうか?
> または、popupmenuやslctboxのことでしょうか?

例えば業務用のアプリケーションを実際に起動して、値の入力やボタンの操作を伴うような作業を行わせる
という意味です
PowerShell単体でもそのようなことができないわけではないのですが、大変です
しかし、UWSCなら簡単にできちゃいますからね

> ということは、PowerShellの方がuwscよりもやりたいこと(やりたいことにもよると思いますが)がたくさんできるということですか?
そうですね、突き詰めればPowerShellのほうがやれることは多いと言える…と思います
ただ、やはりUWSCが得意なことはUWSCでやるほうが楽でしょう
例えば先に挙げたようにUI操作であるとか
chkimgなんかは特にそうじゃないかと思います
> 私がuwscでやる処理としては、スクレイピングやWordpressにアクセスして色々やることが多いのです。
PowerShellもUWSCのcreateoleobjと同等のことができるので、このようなことも可能ですよ

No.310 2019/03/25(Mon) 15:20:06

Re: uwscでコード書く時に、powershellの有効活用法 / ネル
Rayna様、丁寧な回答ありがとうございます。

大きい桁の計算場合は、powershellを使った方が良いということですね。
> Progress.uws
処理の経過を可視化できてますね、なかなか新鮮でいいですね。

>PictureBox が使えれば画像の表示ができるし
>ProgressBarが使えれば処理の経過を可視化できます
>TrackBar が使えればSlctBoxでは使えないTrackBarで項目を選択することもできます
>RichTextBoxで複数行入力可能なInputBoxを作成したり

上記も興味があるので調べてみたいと思います。

No.312 2019/03/25(Mon) 19:10:10

Re: uwscでコード書く時に、powershellの有効活用法 / ネル
stuncloud様、返信ありがとうございます。

>例えば業務用のアプリケーションを実際に起動して、値の入力やボタンの操作を伴うような作業を行わせる
という意味です

なるほど、たしかにuwscだとアプリケーション操作簡単にできますもんね。

>そうですね、突き詰めればPowerShellのほうがやれることは多いと言える…と思います
PowerShellの勉強進めていこうと思います。

No.313 2019/03/25(Mon) 19:14:00

Re: uwscでコード書く時に、powershellの有効活用法 / Rayna
>>313 ネル さん

> 大きい桁の計算場合は、powershellを使った方が良いということですね。

 こういう事もできますっていうのを挙げただけなので
 おすすめはしません (大きい数の計算は他でもできますし)
 多用するとPowerShell関数の速度の問題で使い物にならなくなるからです

 例えば以下のコードで計算はできるけど遅いってわかってもらえると思います

   Dim i, s="18446744073709551615"
   For i = 1 To 10
    s = Trim(PowerShell("[Decimal] (([Decimal] "+s+")* ([Decimal] 2))"))
    Print s
   Next

 それでも問題ない場合、もしくは問題を回避できる場合は便利だと思います

No.315 2019/03/25(Mon) 20:17:25
右クリックしたらでてくるメニューに、自分で作成したuwscを追加、起動について / ゆづき
右クリックしたらでてくるメニューに、自分で作成したuwscを追加していつでも簡単に起動できたら便利だと思うのですが、可能ですか?
レジストリをいじる必要がありそうでかなり難しそうなイメージがあります。

No.301 2019/03/24(Sun) 12:26:30

Re: 右クリックしたらでてくるメニューに、自分で作成したuwscを追加、起動について / Rayna
>>301 ゆづき さん

どこを右クリックなのかで変わってきますけど

Shellの右クリックなら「送る」を使えば簡易的なランチャーは実装できます
「送る」項目のショートカットが保存されている場所は
Windows7以降なら C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\SendTo\ です
---
exe化されていない場合
 @UWSC.exeのショートカットを作成します
 A@で作成したショートカットのプロパティを開きます
 Bリンク先に起動するuwsのパスを追加します
  例
  "C:\Program Files (x86)\UWSC\UWSC.exe"
   ↓ "[UWSC.exeのパス]" "[起動するスクリプトファイルパス]"
  "C:\Program Files (x86)\UWSC\UWSC.exe" "C:\Sample.uws"
 C自分の識別しやすいアイコン、名前に変更します
 D作成したショートカットをSendToに移動します

 ファイル右クリック→「送る」から起動できます
exe化されている場合
 @sample.exeのショートカットを作成します
 A自分の識別しやすいアイコン、名前に変更します
 B作成したショートカットをSendToに移動します

 ファイル右クリック→「送る」から起動できます
---
因みに右クリックされたファイル、フォルダのパスが 特殊配列変数 PARAM_STR に格納されます
ファイルに対して処理を行わない場合は無視して大丈夫です

No.302 2019/03/24(Sun) 16:48:07

Re: 右クリックしたらでてくるメニューに、自分で作成したuwscを追加、起動について / ゆづき
Rayna様、回答ありがとうございます。
無事できました。特定のウィンドウで右クリックから送るで登録した.uwsのスクリプトの起動ができたら便利だと思ったのですが、これは可能でしょうか?質問ばかりで申し訳ないです。

No.305 2019/03/24(Sun) 19:39:05

Re: 右クリックしたらでてくるメニューに、自分で作成したuwscを追加、起動について / ゆづき
>因みに右クリックされたファイル、フォルダのパスが 特殊配列変数 PARAM_STR に格納されます
ファイルに対して処理を行わない場合は無視して大丈夫です

PARAM_STRにパスが格納されるというのは、これで何か処理ができそうな感じですね。
具体的に何をするかは、まだ決まっていませんが・・・・


>A@で作成したショートカットのプロパティを開きます
 Bリンク先に起動するuwsのパスを追加します
"C:\Program Files (x86)\UWSC\UWSC.exe" "C:\Sample.uws"

このコードを、"C:\Program Files (x86)\UWSC\UWSC.exe" "C:\Sample.uws"
をプロパティーに直接書込、コードとかあったら便利ですが、そんなのないですよね?

No.306 2019/03/24(Sun) 19:52:50

Re: 右クリックしたらでてくるメニューに、自分で作成したuwscを追加、起動について / Rayna
>>305 >>306 ゆづき さん
---
>> 特定のウィンドウで右クリックから送るで登録した.uwsのスクリプトの起動ができたら便利だと思ったのですが、これは可能でしょうか?
 「送る」が使えるのはShellの項目を右クリックした時限定です(デスクトップ, エクスプローラー, Shellを扱うファイラー, 開くダイアログ, 等)

>> このコードを、"C:\Program Files (x86)\UWSC\UWSC.exe" "C:\Sample.uws" をプロパティーに直接書込、コードとかあったら便利ですが、そんなのないですよね?
 ショートカットの作成を自動化したいってことですかね
 WScript.ShellにWshShortcutオブジェクトという便利なものがあるので使ってみてはいかがでしょう
 ttps://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364438%28v%3dmsdn.10%29
 使用例のUWS版
  Dim WshShell = CreateOleObj("WScript.Shell")
  Dim strDesktop = WshShell.SpecialFolders("Desktop")
  Dim oShellLink = WshShell.CreateShortcut(strDesktop + "\Shortcut Script.lnk")
  oShellLink.TargetPath = GET_CUR_DIR+"\"+GET_UWSC_NAME
  oShellLink.WindowStyle = 1
  oShellLink.Hotkey = "CTRL+SHIFT+F"
  oShellLink.IconLocation = "notepad.exe, 0"
  oShellLink.Description = "Shortcut Script"
  oShellLink.WorkingDirectory = strDesktop
  oShellLink.Save
  oShellLink = NOTHING
  WshShell = NOTHING

No.307 2019/03/24(Sun) 21:56:44

Re: 右クリックしたらでてくるメニューに、自分で作成したuwscを追加、起動について / ゆづき
Rayna様、返信ありがとうございます。
>Dim oShellLink = WshShell.CreateShortcut(strDesktop + "\Shortcut Script.lnk
こんなこともできるんですね。ありがとうございました。

No.311 2019/03/25(Mon) 19:02:27
既存の項目の途中に追加項目をいれる場合のcaseずれについて / ゆうすけ
【元のコード】のテスト1の後に追加項目いれようとすると、case1以降にすべて1ずれる必要がでてくるため、いちいちcaseの数字を1ずつ変更しないといけません。これを正規表現か何かで一括で置き換えて処理するコードが思いつきません。何か良い方法ないでしょうか?

【元のコード】
dim hai[2]="テスト1","テスト2","テスト3"

msg="処理"
iti=popupmenu(hai)

select iti
  case 0
msg=1
msgbox(msg)
case 1
msg=2
msgbox(msg)
  case 2
msg=3
msgbox(msg)
selend
---------------------
【元のコードから追加項目を付けたした分】

dim hai[2]="テスト1","追加項目","テスト2","テスト3"

msg="処理"
iti=popupmenu(hai)

select iti
  case 0
msg=1
msgbox(msg)
  case 1
msg="追加項目分"
msgbox(msg)
case 2
msg=2
msgbox(msg)
  case 3
msg=3
msgbox(msg)
selend

No.284 2019/03/19(Tue) 20:56:39

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / stuncloud
以下のようにすればcaseを追加する場所はどこでも良くなります

dim hai[]="テスト1","テスト2","テスト3"
select hai[iti]
 case "テスト1"
 case "テスト2"
 case "テスト3"
selend



dim hai[]="テスト1","追加項目","テスト2","テスト3"
select hai[iti]
 case "テスト1"
 case "テスト2"
 case "テスト3"
 case "追加項目"
selend

No.286 2019/03/20(Wed) 13:50:37

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / stuncloud
popupmenuでどれも選択しなかった場合を考慮しないといけませんでした
(hai[-1] でエラーになってしまう)

if iti > 0 then
 select hai[iti]
  case "テスト1"
  case "テスト2"
  case "テスト3"
  case "追加項目"
 selend
endif

No.287 2019/03/20(Wed) 13:55:10

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / satocha
ユーザの選択をpopupmenuで行っていますが、popupmenuは選択肢の位置を返すだけで選択肢の項目を返してくれません。
そこで、ユーザインタフェースは変わってしまいますが、slctboxを使ってみてはどうでしょう。
YourChoice=slctbox(slct_BTN or slct_STR,0,"選んでください",hai)
select YourChoice
  case "テスト1"
  case "テスト2"
  case "テスト3"
  case "追加項目"
  default
//選ばれなかったときの処理
selend

No.289 2019/03/20(Wed) 15:59:07

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / Rayna
選択肢の項目を返すPopupMenu考えてみました

//| SlctMenu.uws |//////////////////////////////////////////////////
Option Explicit

//| Demo |//
Dim ary[]="テスト1","追加項目","テスト2","テスト3"
Dim sary=Slice(ary)
HashTbl hash
hash["a"]=123
hash["b"]=456
hash["c"]=789

Print PopupMenu(hash) // 配列インデックスを返す
Print SlctMenu(hash) // 配列インデックスを返す(PopUpMenuと同等)
Print SlctMenu(hash, TRUE) // 配列内の値を返す

Print PopupMenu(ary) // 配列インデックスを返す
Print SlctMenu(ary) // 配列インデックスを返す(PopUpMenuと同等)
Print SlctMenu(ary, TRUE) // 配列内の値を返す

Print PopupMenu(sary) // 配列インデックスを返す
Print SlctMenu(sary) // 配列インデックスを返す(PopUpMenuと同等)
Print SlctMenu(sary, TRUE) // 配列内の値を返す

Select SlctMenu(sary)
Case "テスト1"
Case "テスト2"
Case "テスト3"
Case "追加項目"
Default
SelEnd

While Status(GetId(GET_LOGPRINT_WIN),ST_VISIBLE);Sleep(0.5);WEnd

//| Function |//
Function SlctMenu(var[], bRetStr=FALSE, nX=, nY=)
 Try
  Dim i, sary
  If ! bRetStr Then RESULT=-1
  If VarType(var)=(VAR_ARRAY Or VAR_VARIANT) Then sary=var Else Exit
 Except
  Select TRUE
  Case Pos("次元数が合いません" , TRY_ERRMSG)<>0; sary=Slice(var) // Dim *[] で定義した配列の例外処理
  Case Pos("が定義されていません", TRY_ERRMSG)<>0; sary=SafeArray(0, Length(var)-1) // HashTbl で定義した連想配列の例外処理
   For i = 0 To Length(var)-1; sary[i]=var[i, HASH_VAL]; Next
  Default; Exit
  SelEnd
 EndTry
 RESULT = PopupMenu(sary, nX, nY)
 If ! bRetStr Then Exit
 If RESULT=-1 Then RESULT=EMPTY Else RESULT=sary[RESULT]
FEnd

//| Reference |//
TextBlock
概要
 選択された項目を返せるポップアップメニュ
構文
 戻値 = SlctMenu(メニュ項目[, 選択された項目を返す, x, y])
引数
 メニュ項目     :表示メニュ項目を配列変数にて渡す
 選択された項目を返す:FALSE: 選択された項目の配列変数位置を返す / TRUE: 選択された項目を返す
 x, y        :表示位置(デフォルト:マウス位置)
戻値
 選択された場合
  選択された項目を返す:FALSE: 選択された項目の配列変数位置を返す / TRUE: 選択された項目を返す
 閉じられた場合
  選択された項目を返す:FALSE: -1 / TRUE: EMPTY
EndTextBlock

No.291 2019/03/20(Wed) 19:47:08

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / ゆうすけ
stuncloud様、ありがとうございます。
無事できました、case 変数ってこういう使い方できたんですね。
ぜんぜん気づきませんでした。

No.292 2019/03/21(Thu) 22:43:12

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / ゆうすけ
satocha様、ありがとうございます。
slctboxインターフェイスが大きめなので少ないcaseの場合によく使ってます。

No.293 2019/03/21(Thu) 22:44:55

Re: 既存の項目の途中に追加項目をいれる場合のcaseずれについて / ゆうすけ
Rayna様、ありがとうございます。
すごいですね、関数でここまで作れるとは。
わたしももっと精進していきたいと思います。

No.294 2019/03/21(Thu) 22:47:17
スマートフォンの絵文字がBODYに含まれているか判断したい / 初心
スマートフォンの絵文字がサイト内のBODYに含まれているか判断したいのですが
emoji = IEGetSrc(IE, "body")
print emoji

上記にようにしても□□と文字化けしています
https://lets-emoji.com/emojilist/emojilist-8/
上記のサイトに有るATMの絵文字がBODYにあるか判断させていのですがいい方法はありませんしょうか?

現在コードはこうなっています

re=CreateOleObj("VBScript.RegExp")
re.pattern = "U+1F3E7" //ATMの絵文字のUnicode

ie = createOLEobj("InternetExplorer.Application")
ie.visible = true
ie.navigate( "該当のサイト" );

sleep(3)
str = IEGetSrc(IE, "body")

IFB True = re.Test(str) THEN
PRINT "マッチしている"
ELSE
PRINT "マッチしてない"
ENDIF

No.283 2019/03/19(Tue) 19:44:41

Re: スマートフォンの絵文字がBODYに含まれているか判断したい / stuncloud
pos()で大丈夫そうです

body = iegetsrc(ie, "body")
emoji = "🏧"

if pos(emoji, body) > 0 then
 msgbox(emoji + "あった")
else
 msgbox(emoji + "なかった")
endif

// 出力: 🏧あった

No.285 2019/03/20(Wed) 13:42:17

Re: スマートフォンの絵文字がBODYに含まれているか判断したい / Rayna
>>283 初心 さん

Printで化けているのは
デバッグ出力がその絵文字を表示することができないからなので
内部的には問題ないです

正規表現のパターンが正しく指定できてないですね
絵文字等のスクリプトで扱いにくい文字列はChr関数を使うと文字コードで指定できます
 Re.Pattern = Chr($1F3E7)
でマッチさせることができます

No.288 2019/03/20(Wed) 14:08:53

Re: スマートフォンの絵文字がBODYに含まれているか判断したい / stuncloud
どうしても正規表現でやるならこうなります
参考: Unicode#サロゲートペア (https://ja.wikipedia.org/wiki/Unicode#%E3%82%B5%E3%83%AD%E3%82%B2%E3%83%BC%E3%83%88%E3%83%9A%E3%82%A2)

re.pattern = GetEmojiRePattern("🏧") // 🏧 は \uD83C\uDFE7 にマッチする

if re.test(body) then
 msgbox(emoji + "あった")
else
 msgbox(emoji + "なかった")
endif

function GetEmojiRePattern(emoji)
 uni = asc(emoji)
 hi = format((uni - $10000) / $400 or $D800, 4, -1)
 lo = format((uni - $10000) mod $400 or $DC00, 4, -1)
 result = "\u" + hi + "\u" + lo
fend

No.290 2019/03/20(Wed) 16:57:03
UwscWebDriverでクロームで複数サイト接続する時のタブについて / くろさわ
グーグルクロームで複数サイトを開く際に、2つ目からはタブで開きたいのですが、どのようにすればよいでしょうか?
IEだと、IE.navigate(hai[i],$800)でできるのですが、クロームでやる方法が分かりません。
先輩方、ご教授願いませんでしょうか?

dim hai[]="http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&page=2","http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&page=3"

call C:\Users\user\Desktop\UwscWebDriver-master\UwscWebDriver.uws

// webdriverオブジェクトを得る
driver = WebDriver.Start(WebDriver.Chrome)

// この掲示板を開く

for i = 0 to 1
driver.Navigate(hai[i])
next

No.261 2019/03/12(Tue) 12:57:03

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / stuncloud
可能ならそのうち対応します
seleniumだとできたような気がしたので多分できるはず…

https://github.com/stuncloud/UwscWebDriver/issues/2

No.263 2019/03/12(Tue) 19:37:46

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / satocha
いろいろ試しての現状報告(というかギブアップ報告)。
あまり参考にならないかも、ですが…。

−−−−−−−−−−−−−−−−−−−−−−−−−−

https://qiita.com/lemtosh469/items/231d886517f8668b0e25

を参考にしてトライしました。

要は、新しいウインドウ(実際はタブ)をjavascriptで開かせ、
webdriverのフォーカスをその新しいウインドウに移してurlを開く、
という仕組みのようです。

driver.execute_script("window.open()")
new_window = driver.window_handles.last
driver.switch_to.window(new_window)
driver.get('新規タブで開きたいURL')

のうち、
driver.execute_script("window.open()")
の部分は
driver.execute_scriptがなくても
driver.Navigate("javascript:window.open()")
とやることで新しいタブを開くことはてきました(少なくともEdgeでは)。

残り3つの、「新しく出たウインドウにdriverのフォーカスを移す」やり方がわかりません。

メソッド switch_to の呼び出し、
プロパティ window_handles.lastの取得
メソッド get

の3点です。

No.264 2019/03/13(Wed) 16:31:37

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / stuncloud
satochaさん、ありがとうございます

>残り3つの、「新しく出たウインドウにdriverのフォーカスを移す」やり方がわかりません。
お恥ずかしながら実現方法が今のところないのでやりようがない、というのが答えになります…

この問題は任意に新しいタブを開く以外に、target指定のあるリンクを踏んだ場合にも該当するので
本来最初から対応できて然るべきものだったんですよね…反省


以下の機能をなるべくわかりやすく実装できたらいいなぁ、と考えています

・任意に別タブを開く

これはNavigateに引数を追加して、それが指定されてたら別タブで対象URLを開く
みたいな動作ができたらいいかなと思っています

・制御対象ウィンドウの変更

上記のswitch_to.window相当の機能ですね
なるべく1メソッドで行き来できるようにしたいです

・任意のjavascript実行

execute_script相当のやつです
WebDriverでは制御が困難なものに対しては有効なので
実は最初期に実装しようかと考えていたんですが
わりとピーキーな機能でもあるので、シンプルさを優先して入れませんでした
jsが書ける人にとっては実装の幅を広げるものなのでこの際入れちゃいます


実装方法を調べるのもこれからなのでしばらく時間がかかると思います
それまでお待ちください

----

ちなみに、くろさわさんがやりたいことが単純に複数のWebサイトをそれぞれ独立して操作したい
ということであれば

dim driver[1]

for i = 0 to 1
 driver[i] = WebDriver.Start(WebDriver.Chrome)
 driver[i].Navigate(hai[i])
next

みたいなやり方でできなくもないです
(Chromeのウィンドウが2つ開いちゃいますけど)

別タブで開いてセッション情報を共有させときたい
といったことであればこの方法では無理ですが

No.265 2019/03/13(Wed) 18:29:55

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / stuncloud
ぼちぼちやっとります
https://github.com/stuncloud/UwscWebDriver/tree/newfeature
一通り終わったらmasterに反映させます

どうも別タブを開くのは window.open() しかなさそうですね
ポップアップブロックで止められる可能性はあったりしないのかな…?
そのへん考慮するともうちょっと確実な方法がほしいですね
sckey()で別タブを開くショートカットキー送ってもらったほうが良いかも?

No.266 2019/03/14(Thu) 14:35:40

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / くろさわ
stuncloud様、お手数おかけしまして、申し訳ありません。
新規タブで開くのって思ったより実装が大変なんですね。

No.268 2019/03/14(Thu) 21:58:06

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / くろさわ
satocha様、お手数おかけしましてすみません。
難しいんですね新規タブをクロームで開くのって。

No.269 2019/03/14(Thu) 22:00:23

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / stuncloud
対応しました
masterにマージ済みです

================================
// urlを開く
driver.Navigate(url1)
h1 = driver.GetCurrentWindowHandle()

// 別タブを開く
driver.Navigate(url2, "second")
// 別タブに制御を移す
h2 = driver.SwitchWindow("second")
// ↓ここからはdriverで操作できるのが二つ目のタブになります


// 元のタブに制御を戻す
// 予め取得していたh1は、最初のタブを識別するためのハンドル値です
driver.SwitchWindow(h1)
// ↓ここからはまた元々のタブが制御対象となります

================================

くろさわさん
これで要件を満たすでしょうか?
可能なら実際に使ってみて問題がないかどうかも教えてもらえるととても助かります

satochaさん
よければお試しください

ちなみに
> new_window = driver.window_handles.last
と同じことをする場合は

handles = driver.GetWindowHandles()
new_window = handles[length(handles)-1]

となります
ウィンドウハンドルを列挙した場合最後の要素が最新のタブになることを利用しています

No.273 2019/03/15(Fri) 18:05:05

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / くろさわ
下記で試してみましたが、下記のようなエラーがでます。

19/03/16 12:52 COM_Error:名前が不明です。 12行目: H1 = DRIVER.GetCurrentWindowHandle()

---------------------

[試したスクリプト]
dim hai[]="http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&page=2","http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&page=3"

call C:\Users\user\Desktop\UwscWebDriver-master\UwscWebDriver.uws

// webdriverオブジェクトを得る
driver = WebDriver.Start(WebDriver.Chrome)



// urlを開く
driver.Navigate(hai[0])
h1 = driver.GetCurrentWindowHandle()

// 別タブを開く
driver.Navigate(hai[1], "second")
// 別タブに制御を移す
h2 = driver.SwitchWindow("second")
// ↓ここからはdriverで操作できるのが二つ目のタブになります


// 元のタブに制御を戻す
// 予め取得していたh1は、最初のタブを識別するためのハンドル値です
driver.SwitchWindow(h1)

No.274 2019/03/16(Sat) 12:54:32

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / stuncloud
> 下記で試してみましたが、下記のようなエラーがでます。
> 19/03/16 12:52 COM_Error:名前が不明です。 12行目: H1 = DRIVER.GetCurrentWindowHandle()

GetCurrentWindowHandleが存在しないというエラーです
UwscWebDriverを最新のものに更新してください

No.277 2019/03/16(Sat) 19:34:20

Re: UwscWebDriverでクロームで複数サイト接続する時のタブについて / satocha
stuncloudさま wrote 
>>satochaさん
>>よければお試しください

お返事遅くなり申し訳ありません。
sample.uwsの最後のdriver.Close()の直前に次のスクリプトを追加してみました。

−−−−−−追加
///////////////////////////////////////////タブ追加
msgbox("仮掲示板でwebdriverを検索")
driver.SwitchWindow(driver.Navigate("http://www3.rocketbbs.com/601/bbs.cgi?id=siromasa&mode=find","siromasa"))
siromasa=driver.GetCurrentWindowHandle()
with driver.FindElement( "input.inp[name=<#dbl>word<#dbl>]" )
.Clear()
.SetValue("webdriver")
endwith
with driver.FindElement( "input.btn[type=<#dbl>submit<#dbl>]" )
.Click()
endwith
msgbox("本家掲示板でseleniumを検索")
driver.SwitchWindow(driver.Navigate("http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=find","honke"))
honke=driver.GetCurrentWindowHandle()
with driver.FindElement( "input.inp[name=<#dbl>word<#dbl>]" )
.Clear()
.SetValue("selenium")
endwith
with driver.FindElement( "input.btn[type=<#dbl>submit<#dbl>]" )
.Click()
endwith
msgbox("仮掲示板に戻る")
driver.SwitchWindow(siromasa)
msgbox("本家掲示板に移る")
driver.SwitchWindow(honke)

msgbox("終了します")
driver.Close()
−−−−−−−−−−−−

見事にそれぞれのページで検索できました。感動です。javascript周りもいずれ使ってみたいと思います。

※勘違いがありまして、先ほどまで変なことを書いていました。失礼しました。

No.282 2019/03/18(Mon) 16:47:46
:でセットとなっている項目の並び替えについて / よっさん
下記のような2種類の並び替えをしたいのですが、qsortではうまくいきません。
1のパターンのセットを後ろにもってきて、2のパターンのセットは数字が若い順で並び替えたいです。
なにか良い方法ないでしょうか? 

1のパターン :の左側にはタイトル、右側には文字列
2のパターン :の左側にはタイトル、右側には数字


hashtbl 連想配列

For 行内容 in Split(utuwa, "<#cr>", TRUE)
  地域 = token(":", 行内容) //残りは数値になる
  連想配列[地域] = 連想配列[地域] + val(行内容) //各地域ごとの数量が加算される
Next
dim 配列上限 = length(連想配列) -1, 希望データ[配列上限], 数値[配列上限]

For i = 0 to 配列上限
  数値[i] = 連想配列[i, HASH_VAL]
  希望データ[i] = 連想配列[i, HASH_KEY] + ":" + 数値[i]
Next
// qsort(数値,1, 希望データ)
qsort(数値,0, 希望データ)
str=join(希望データ,"<#CR>")


[処理前]
大阪:終了
東京:終了
名古屋:終了
沖縄:5
鹿児島:46
長崎:36


[希望処理]
沖縄:5
長崎:36
鹿児島:46
大阪:終了
東京:終了
名古屋:終了

No.276 2019/03/16(Sat) 17:04:57

Re: :でセットとなっている項目の並び替えについて / stuncloud
これでどうでしょう

textblock data
大阪:終了
東京:終了
名古屋:終了
沖縄:5
鹿児島:46
長崎:36
endtextblock

list = split(data, "<#CR>") // 並べ替えたい配列
dim nlist[length(list) - 1] // 数値部分だけ抽出する配列

for i = 0 to length(list) - 1
 nlist[i] = split(list[i], ":")[1]
next

qsort(nlist, QSRT_NATURALA, list)

print join(list, "<#CR>")

No.279 2019/03/16(Sat) 20:02:45

Re: :でセットとなっている項目の並び替えについて / よっさん
stuncloud様、ありがとうございます、希望の処理ができました。

>>nlist[i] = split(list[i], ":")[1]
こんな使い方できるんですね、[1]がこんな位置で使えるなんて。
qsort(nlist, QSRT_NATURALA, list)のキー連動のやり方も知らなかったです。
ありがとうございます、色々勉強なりました。

No.281 2019/03/17(Sun) 11:59:17

SearchRocketbbs(掲示板DL検索)

以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
71/200件 [ ページ : << 1 2 3 4 5 6 7 8 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS