118581
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオン
動作不具合での質問の場合には環境を表記(OS,バージョン等)
タイトルは内容を表し、内容はネットゲーム関係禁止
自身でコードを書く気の無いナマケモノは特に質問禁止
失敗作でもコードを投稿すること(具体性の無い質問は無視される可能性大)

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
環境設定[s7777777]

edgeでパスワードを入れたい / sen
いつもお世話になっております。
edgeでホームページを開いた状態で、ユーザーidとパスワードを入れるだけなのですが、
うまく転記する事ができる時もあれば、出来ない時(出来ない時の方が多い)もあります。
edgeに登録されている「パスワードの管理」の表示が邪魔をしているのではないかと思ったりも
しますが、Internet Explorerの時は簡単にできたので、諦めきれません。
相手先のアドレスはさらしにくいのですが、下記のプログラムだけで分かりませんでしょうか?
よろしくお願い申し上げます。


------------------
dim データ

SELECT SlctBox(SLCT_btn or SLCT_STR,0,"選択","c-rex")
 case "c-rex"
  データ=READINI("c-rex","ユーザーID","パスワード.ini")
  転記(データ)
  データ=READINI("c-rex","パスワード","パスワード.ini")
  転記(データ)
  KBD(VK_ENTER)
SELEND
PROCEDURE 転記(データ)
 id = GETID("Microsoft​ Edge","Chrome_WidgetWin_1",-1)
 sleep(1)
 KBD(VK_HOME)
 KBD(VK_CTRL,DOWN)
 KBD(VK_A,CLICK)
 KBD(VK_CTRL,UP)
 sleep(0.5)
 CTRLWIN(ID,ACTIVATE)
 SENDSTR(0,データ)
 sleep(0.5)
 KBD(VK_CTRL,DOWN)
 KBD(VK_V,CLICK)
 KBD(VK_CTRL,UP)
 sleep(0.5)
 CTRLWIN(ID,ACTIVATE)
 KBD(VK_TAB)
fend

No.1493 2022/06/12(Sun) 18:29:33

Re: edgeでパスワードを入れたい / stuncloud
アドレスバーからjavascriptを実行すればまぁなんでもできなくはないですよね

id = getid("Edge", "Chrome_WidgetWin_1")
ctrlwin(id, ACTIVATE)

// アドレスバーを入力状態にする
sckey(id, VK_RALT, VK_D)

// アドレスバーに入力するjavascriptコード
// 例: パスワード入力欄に hogehoge と入れる
textblock js_input_value
javascript:document.querySelector('input[type="password"]').setAttribute('value', 'hogehoge');
endtextblock
// アドレスバーにjsを入力する
sendstr(id, js_input_value, 0, TRUE)
// Enterキーを押す
sckey(id, VK_ENTER)


IE操作のように自由にやりたいのならUwscWebDriverを覚えてもらったほうが早いとは思います

No.1494 2022/06/13(Mon) 00:12:56

Re: edgeでパスワードを入れたい / sen
javascriptも私には難しかったです。
ただ、sckey(id, VK_RALT, VK_D)は、凄く良い事を教えて頂きました。
edgeの使用に光が見えました。
UWSCの基本に戻って、チャレンジしてみます。

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

No.1495 2022/06/18(Sat) 19:18:57
(No Subject) / みみ
DMM版ウマ娘の画面をクリックしようとしているのですがクリックできません。
単純なクリックも受け付けない状態です。
体験版のUWSCマクロを使った場合はクリックできました。
何が原因なのでしょうか。

No.1492 2022/06/10(Fri) 00:10:15
Edgeの起動方法 / sen
お世話になっております。
WebDriverは一寸難しそうなので、取り敢えずuwscでedgeを立ち上げてサイトを立ち上げたいのです。下記のような感じで取り敢えずedgeが立ち上がったのですが、これはこれでありでしょうか?
ご教授くださいますようお願いします。


Edge = EXEC("C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
exec("cmd /c start https://www.yahoo.co.jp/")//例

No.1489 2022/06/04(Sat) 21:04:01

Re: Edgeの起動方法 / stuncloud
ありといえばありですが、標準ブラウザが例えばChromeになっていた場合
> exec("cmd /c start https://www.yahoo.co.jp/")//例
でChromeが開いてしまいます

> start msedge url
とすることでEdgeで任意のURLを開けます
なので
exec("cmd /c start msedge https://www.yahoo.co.jp/")
または
doscmd("start msedge https://www.yahoo.co.jp/", TRUE)
とするのが確実でしょう

No.1490 2022/06/04(Sat) 22:03:38

Re: Edgeの起動方法 / sen
うまくいきました。
Edgeに切替できそうです。

No.1491 2022/06/05(Sun) 09:39:01
chromeの出すポップアップを判断する方法について / PON
[A.UWS]
ACW(GETID("XXXX - Google Chrome","Chrome_WidgetWin_1"),XXX,XXX,XXX,XXX,0)

-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*

[B.UWS]
CALL A.UWS

CALL C.UWS

・・・省略・・・

-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*

[C.UWS]
//ウィンドウのアクティブ化
id = GETID("Google Chrome","Chrome_WidgetWin_1",-1)

fukidasi(id)
sleep(10)
//エラー画像見つけたら
IFB CHKIMG("outofmemory.BMP",0,,,,,,IMG_MSK_BGR4)
KBD(VK_F5,click,0)//5秒後にボタン押下する KBD(仮想KEY,[click/up/down,ms])
ENDIF

・・・省略・・・
POFF(P_UWSC_REEXEC, True)

-*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*
使用UWSC
uwsc5302

目的
chromeが表示するポップアップメッセージを判別、処理したい

現状
・B.UWSを実行A.UWS、C.UWSの順に呼び出すと画像が表示されているのに存在しないと判断されますが
A.UWSをコメントアウトし、手動で実行するとC.UWSの画像判定に成功しますが、今度はPOFFでループさせた際に画像判断に失敗します。
・ポップアップのIDとブラウザのIDは同一で("Google Chrome","Chrome_WidgetWin_1)判別に使用できそうもありません。出現タイミングは不定です。

疑問
・A.UWSを呼んだ場合と呼ばなかった場合に挙動が変わるのはなぜでしょうか?
・現状のUWSでポップアップが表示された。と確実に判断させるにはどのような修正が必要でしょうか?
よろしくお願いします。

No.1488 2022/05/29(Sun) 17:48:35
★ UWSCRのweb操作について / リキュール
UWSCのIE機能が終了予定が近づいてきました。
当日にならないと、現実にどういうことになるかわりませんが。

UWSCRでWEB操作ができる見通しはあるのでしょうか。

Edge、Chrom 等(特にChromで)

No.1478 2022/05/26(Thu) 21:40:19

Re: ★ UWSCRのweb操作について / stuncloud
BrowserControl()という関数が追加されており、それでChromeとMSEdgeの操作が出来ます
WebDriverが不要なのでUWSCRとスクリプトだけでブラウザ操作が可能です

https://github.com/stuncloud/UWSCR/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%93%8D%E4%BD%9C

まだざっくり実装しただけなので機能的に十分ではないところがあります
ご利用いただいて気付いた点や要望などありましたらgithubやdiscordでご報告いただけると助かります

No.1479 2022/05/26(Thu) 23:34:48

Re: ★ UWSCRのweb操作について / リキュール
早速のお返事、ありがとうございます。

今まで作成したUWSCのプログラムが100個以上あるので、部分修正して利用できそうです。
先日、uwscr-0.6.0-x64.msi をダウンロードして、インストールして見ました。

早速、ブラウザ関係(BrowserControl)を試しましたがうまく動作しません。、
どこが間違っているのでしょうか?

//コマンドプロンプトで:uwscr C:\Users\user\Desktop\uwscr.UWS
//uwscr.UWSの内容
Browser = BrowserControl(BC_CHROME)
sleep(2)

動作環境
OS:Windows10 home 64ビット 21H1
Browser:Chromeバージョン: 101.0.4951.67(Official Build)64 ビット

エラー表示
[HTTPリクエスト エラー] error sending request for url (http://localhost:9222/json/list):
error trying to connect: tcp connect error:
対象のコンピューターによって拒否されたため、接続できませんでした。 (os error 10061)

No.1480 2022/05/28(Sat) 13:53:06

Re: ★ UWSCRのweb操作について / stuncloud
9222ポートが別のプロセスで使われているのかもしれません
PowerShellで
Get-NetTCPConnection -LocalPort 9222 | % {ps -Id $_.OwningProcess}
としてchrome.exeが9222で待ち受けているか確認してみてください

上記コマンドがエラーになった場合は9222ポートが使われていないということになります
> Browser = BrowserControl(BC_CHROME)
この行の処理時にChromeが正常に起動していないかもしれません
Browser = BrowserControl(BC_CHROME, , 9999) // chromeが9999ポートで待ち受け
のようにポート番号を任意のものに変更して起動を試してみてください

9222ポートがchrome.exeであれば本来なら動作するはずなのですが、その場合に動作しない原因を調査する方法を考えてみます

No.1481 2022/05/28(Sat) 15:39:02

Re: ★ UWSCRのweb操作について / リキュール
問題が解決しました。

Chromeが画面裏で動作していたのが原因でした。閉じてから実行したら動作しました。
お騒がせしました。

なお、私はChromeを常に開いており、タブを10個ほど開いております。
開いているChromeを閉じずに、新規のページで browser.navigate 等を行うことは無理でしょうか。

※この問題が解決したら、新規スレッドは discord に移行したいと思います。

No.1483 2022/05/28(Sat) 18:06:04

Re: ★ UWSCRのweb操作について / stuncloud
> 開いているChromeを閉じずに、新規のページで browser.navigate 等を行うことは無理でしょうか。
今のところ無理です
既に起動している状態だとremote-debugging-port有りで新たにchromeを起動する方法が現時点でわかっていないんですよね、あるいはそもそもそういったことができない可能性もあります

あらかじめ
chrome.exe --remote-debugging-port=9222
で起動してあればそのchromeに再接続して操作、は可能です
とは言えそれを常用するのは良くないと思うのでおすすめはできません

windowsのsandboxを使ってその中でやる、といった工夫が必要になるかもです
あるいは自動化はChromeではなくEdgeを使うとか

No.1484 2022/05/28(Sat) 18:55:07

Re: ★ UWSCRのweb操作について / リキュール
UWSC や Python では問題なくできたので残念です。

ブラウザを Edge に変えて実行しましたが、エラーが出ました。
Browser = BrowserControl(BC_MSEDGE,,9222)

前回と同様のエラーで、ポート番号を変えてもダメでした。

Edgeの最新バージョンがダメなのでしょうか。
Browser:Microsoft Edge バージョン 101.0.1210.53 (公式ビルド) (64 ビット)
このブラウザーは、Chromium オープン ソース プロジェクトおよび他のオープン ソース ソフトウェアに基づいて機能します。

No.1485 2022/05/28(Sat) 20:39:35

Re: ★ UWSCRのweb操作について / stuncloud
Edgeはスタートアップブーストという機能が有効になっていると裏で予めEdgeのプロセスが(勝手に)起動されているため、Chromeが起動していると動かせないのと同じような状態になります
スタートアップブーストが必要なければ無効にしておいてください (Edgeの設定内に設定項目があります)

このケースだと勝手に起動されてるのでユーザー側で認識しづらいのが嫌ですね…

No.1486 2022/05/28(Sat) 22:06:29

Re: ★ UWSCRのweb操作について / リキュール
無事に実行することかできました。

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

UWSC からの移行は、一筋縄では行きそうもありません。長期戦になりそうです。

※、次回からの質問は discord に移行したいと思います。

No.1487 2022/05/28(Sat) 22:51:13
iniファイルとSLCTBOX / sen
いつもお世話になっております。
TextBlockに入れている情報をiniファイルにしたらexeを作り直さなくて便利だと思うのですが、
全く分かりません。
こういう考え方は、iniファイルの使い方として間違っていますか?

ご教授頂けますようお願い致します。

TextBlock パスM
終了,【終了】
D:\データベース\梱包展開.exe,梱包展開(&c)
D:\,D\(&d)
EndTextBlock

hashtbl HTパス,HT表題
dim 表題,仮 = パスM, t
台帳 = Fopen(null, f_write or f_read)
while 仮 <> ""
 fput(台帳,token("<#cr>", 仮))
wend
For 回数 = 1 to fget(台帳, -1)
 t = fget(台帳, 回数,2)
 HT表題[t] = t
 HTパス[t] = fget(台帳, 回数,1)
next

表題 = SLCTBOX(SLCT_BTN or SLCT_STR, 0, "選択", HT表題)
表題 = HT表題[表題]
パス = HTパス[表題]

ifb pos("終了",パス) > 0 then
 exitexit
elseif pos(".exe",パス) > 0 then
 Exec(パス)
else
 Exec("explorer.exe "+パス)
endif

No.1475 2022/05/04(Wed) 08:34:26

Re: iniファイルとSLCTBOX / stuncloud
textblockの内容がcsvなのでcsvファイルを作ってそれをfopenで読み取れば良いのでは?

どうしてもiniを使いたいということなら…
例えば以下のような構成なら

# iniファイル
[パスM]
0=終了,【終了】
1=D:\データベース\梱包展開.exe,梱包展開(&c)
2=D:\,D\(&d)

# スクリプト
台帳 = Fopen(null, f_write or f_read)
i=0
while 1
 行=readini("パスM", i)
 if length(行)=0 then break
 fput(台帳,行)
 i=i+1
wend

といった書き方でやれないことはないです、おすすめはしませんが
(csvファイルをfopenしたほうが断然楽ですね!)

No.1476 2022/05/04(Wed) 10:51:52

Re: iniファイルとSLCTBOX / sen
おっしゃる通りです。
よく分かりました。

> といった書き方でやれないことはないです、おすすめはしませんが
> (csvファイルをfopenしたほうが断然楽ですね!)

No.1477 2022/05/06(Fri) 22:27:19
UWSCのIE機能の終焉時期について / 太田
失礼いたします。
UWSCのIE機能についてお分かりになればお教えください。

ブラウザとしてのIEは本年6月に終了しますが、
「IEコンポーネントについてはWindows OSのサポート終了までサポートが継続される」と聞きました。
(ソースこちらです)
https://atmarkit.itmedia.co.jp/ait/articles/1503/11/news134.html

ということはUWSCの各種IE機能も、Windows OSのサポート終了まで動作すると考えてよいものなのでしょうか?

No.1458 2022/03/07(Mon) 10:56:40

Re: UWSCのIE機能の終焉時期について / しろまさ
それはそうなったときに試してみないと判断できないと思います。
なにせUWSCの作者に聞くことが出来ないのですから。

まあいつまでも使えるとは思えないので、私は今WebDriver版を作りこんでいます。

No.1459 2022/03/07(Mon) 11:02:40

Re: UWSCのIE機能の終焉時期について / satocha
>ということはUWSCの各種IE機能も、Windows OSのサポート終了まで動作すると考えてよいものなのでしょうか?

そう期待していい、それなりの根拠があります。

「IEはサポートしない」+「IEコンポーネントはずっとサポート継続」というMSの発表の意味がいまひとつ、明確ではないですが、
デスクトップブラウザとしてのIEは終了するけどcomやらpowershellコマンドレット(Invoke-Webrequest)で使われるIEの機能は残ると思われます。

というのは、IE非搭載のWin11(Win10からのアップデートでない純11)で次のuwsスクリプトを動かすとちゃんとIE画面が表示されるからです。

with createoleobj("InternetExplorer.application")
.visible=true
endwith

vbsとpowershellでも試しましたが、同様にIE画面が表示されました。

このようにComを介すればIEブラウザ画面にお目にかかれるのですが、
"C:\Program Files (x86)\Internet Explorer\iexplore.exe"
を直叩きすると、IEではなくEdgeが起動します。

6月以降は、純11以外のサポートOSも同じようになるのだと思います。

No.1460 2022/03/14(Mon) 17:11:02

Re: UWSCのIE機能の終焉時期について / 太田
お二方ご回答ありがとうございました。
IEコンポーネントの延命に期待しつつ、私は別の延命策として
会社のメイン環境をWindows Server 2022にしました。
この場合、OSサポート期限までIEのサポートが継続されます。
つまり2031年10月14日までIEが使用可能ということになります。
ま、いつ突然今後変更されるかもしれませんが^^

ちなみにWindows Server 2022上でもUWSCは普通に動くことを確認しました。

No.1474 2022/04/17(Sun) 21:30:07
scriptcontrolメッセージボックスを消す方法 / 妖怪
初めまして
UwscWebDriverにてIEからedge操作の自動化を進めております。

stuncloud様の「アップロードファイルの指定方法」を参考に機関サーバーへcsvのアップロードが成功しました。
しかし、upするcsvデータが大きいのか、下記のメッセージが表示されます。

"The script you are executing is taking longer than expected to run.
Click End to abort the script, or Continue to continue script execution.
[End] or [Continue]"



// スクリプトコントロールダイアログボックスの「continue」をクリックする。
THREAD sc-contineClick()
---------------------------------
procedure sc-contineClick()
Public scid
while true
if getid("Script Control")>0 then
scid = getid("Script Control",,-1)
Break 1
endif
sleep(0.2)
wend
repeat
sleep(0.2)
until !clkitem(scid,"continue",CLK_BTN) //成功するまでWindowsの"OK"クリックを繰り返す
FEnd

クラス名が判らないので省略してコードを記述してみましたが、
やはり「continue」が押せません。

どなたか、よい方法をご存じ方、ご教授いただないでしょうか?
宜しくお願いします。

No.1464 2022/04/10(Sun) 16:52:40

Re: scriptcontrolメッセージボックスを消す方法 / stuncloud
ScriptControlに確認ダイアログを出すまでの時間を設定するTimeoutプロパティがあるらしいので、それを少し長めに取ることで確認ダイアログの表示自体を抑制できるようにしてみます
タイムアウト時間も環境によりけりなのでモジュールから変更できる仕組みも入れようと思います

No.1465 2022/04/10(Sun) 19:08:53

Re: scriptcontrolメッセージボックスを消す方法 / 妖怪
> ScriptControlに確認ダイアログを出すまでの時間を設定するTimeoutプロパティがあるらしいので、それを少し長めに取ることで確認ダイアログの表示自体を抑制できるようにしてみます
> タイムアウト時間も環境によりけりなのでモジュールから変更できる仕組みも入れようと思います


早々のご回答ありがとうごさいます。
宜しくお願いします。

No.1467 2022/04/10(Sun) 20:20:47

Re: scriptcontrolメッセージボックスを消す方法 / stuncloud
https://github.com/stuncloud/UwscWebDriver/releases/tag/0.8.9

タイムアウト時間を5分にしました
これでダイアログが出なくなるかどうか確認してみてください
タイムアウト時間は変更することが可能です

WebDriver.SetScriptControlTimeout(30) // タイムアウトを30秒にする
WebDriver.SetScriptControlTimeout(-1) // タイムアウトしないようにする


それと、ダイアログのContinueが押せない件も調べてみました
clkitemはTRUEを返しているのでUWSC側では押せたという認識のようですが実際は押せていませんでした
また、Continueボタンのニーモニックが&nだったのでsckey()やkbd()でAlt+nを送ってみましたがこれもだめでした
実際のマウスまたはキーボードで操作しないとだめなのかもしれません

あと、ダイアログのクラス名は #32770 でした (通常のダイアログですね)

No.1468 2022/04/11(Mon) 11:23:30

Re: scriptcontrolメッセージボックスを消す方法 / 妖怪
> https://github.com/stuncloud/UwscWebDriver/releases/tag/0.8.9
>
> タイムアウト時間を5分にしました
> これでダイアログが出なくなるかどうか確認してみてください
> タイムアウト時間は変更することが可能です
>
> WebDriver.SetScriptControlTimeout(30) // タイムアウトを30秒にする
> WebDriver.SetScriptControlTimeout(-1) // タイムアウトしないようにする
>
>

stuncloudさま
ご対応ありがとうございました。
本日は、「任意のディレクトリにファイルをダウンロード」を参考に
期間サーバーから指定フォルダにダウンロードすることに成功しました。
まだ、手直しは必要ですか゜・・・

なので、掲示板の確認が遅れて申し訳ありません。
ver0.8.9を持って
明日、出社後、機関サーバーへの対応をし、ご報告いたします。

また、Continueが押せない件の調査についてもありがとうございました。


UwscWebDriverによって、IEからedgeへの変更に灯りが見えてきました。
本当にありがとうございました。

No.1469 2022/04/11(Mon) 21:10:04

Re: scriptcontrolメッセージボックスを消す方法 / 妖怪
> > https://github.com/stuncloud/UwscWebDriver/releases/tag/0.8.9
> >
> > タイムアウト時間を5分にしました
> > これでダイアログが出なくなるかどうか確認してみてください
> > タイムアウト時間は変更することが可能です
> >
> > WebDriver.SetScriptControlTimeout(30) // タイムアウトを30秒にする
> > WebDriver.SetScriptControlTimeout(-1) // タイムアウトしないようにする
> >


無事、ダイアログボックスも出ずに機関サーバーからの「アップロード完了」のメッセージを受け取りました。
タイムアウト時間を2秒に設定もしてみましたが、
アップデータが小さいのか、ダイアログボックスが一瞬出て機関サーバーからの「アップロード完了」となりました。

今後、同サーバーで「ダウンロード」の自動化を進めますが、
SetScriptControlTimeout等で不具合当が発生しましたら、ご報告いたします。

今回は、早々の対応で本当にありがとうございました。

No.1470 2022/04/12(Tue) 12:13:16

Re: scriptcontrolメッセージボックスを消す方法 / stuncloud
> タイムアウト時間を2秒に設定もしてみましたが、
> アップデータが小さいのか、ダイアログボックスが一瞬出て機関サーバーからの「アップロード完了」となりました。

ダイアログが出ても裏では処理が続行しており、処理が完了するとダイアログも消えるという仕様のようです

> SetScriptControlTimeout等で不具合当が発生しましたら、ご報告いたします。
よろしくお願いします

No.1471 2022/04/12(Tue) 12:44:51

Re: scriptcontrolメッセージボックスを消す方法 / 妖怪
> ダイアログが出ても裏では処理が続行しており、処理が完了するとダイアログも消えるという仕様のようです

コマンド(WebDriver.SetScriptControlTimeout(30))は使用せず5分のままで
終日使用してみましたが、何事もなく業務を終了しました。
ありがとうございました。

> > SetScriptControlTimeout等で不具合当が発生しましたら、ご報告いたします。
> よろしくお願いします


了解しました。

現在、「任意のディレクトリにファイルをダウンロード」で一旦は成功しましたが
ダウンロードの保存先が複数あるのでJsonで変数を埋め込む方法を模索中です。
探しきれなかったらHELPをお願いしたいのですが、
今後は、https://discord.com/の方がよいですか?

No.1472 2022/04/12(Tue) 20:02:38

Re: scriptcontrolメッセージボックスを消す方法 / stuncloud
> 今後は、https://discord.com/の方がよいですか?
そうですね

No.1473 2022/04/12(Tue) 20:48:52
IEのタブやお気に入りバーのお気に入りボタンをクッリクする方法 / yy
UWSCでInternet Explorerのタブやお気に入りバーにあるお気に入りボタンをクリックする仕方がよく分からないので教えてください。

(質問1)UWSCでInternet Explorerのあるページのタブ(例えばtestという名前のタブ)をクリックするにはどのようなコードを記述すればよいのでしょうか。

(質問2)UWSCでInternet Explorerのお気に入りバーにあるお気に入りボタン(例えばtestという名前のお気に入りボタン)をクリックするにはどのようなコードを記述すればよいのでしょうか。

よろしくお願いします。

No.1463 2022/04/07(Thu) 20:53:25
THREAD同時処理を最大限で利用したい / YMK
お世話になります。
UWSCで早く処理を済ませるため、THREADで同時処理させ、
尚且つ制限である64スレッドを超えないようにするため以下のコードで実行したのですが、
20秒ほどですんなり終わるときもあれば、5分かかっても終わらないときがあります、、、
どこが悪いのでしょうか?
(説明を簡単にするため、コードは簡素にしています)

PUBLIC スレッド数 = 0
for i = 1 to 250
 THREAD 情報取得(i)
 スレッド数 = スレッド数 +1
 while スレッド数 > 60 //スレッド60以下待ち
  sleep(0.02)
 wend
next

while スレッド数 > 0 ; sleep(0.1) ;wend //全てのスレッド終了待ち

msgbox("完了")

PROCEDURE 情報取得(i)
  sleep(1) //処理の代わり
  スレッド数 = スレッド数 -1
fend

No.1461 2022/03/22(Tue) 21:10:01

Re: THREAD同時処理を最大限で利用したい / stuncloud
問題があるとすればスレッド数が60以下になるまで待つ処理ですかねえ
開始されない処理がそれなりに溜まっているわけで、うっかりスレッド数が60→59→60→59→…なんて遷移してると遅くなるということがある…のかな…?

いっそのこと64スレッドずつプロセスを分けてしまう方がいいかもですね
プロセス1でスレッド1〜64
プロセス2でスレッド65〜128
プロセス3でスレッド129〜192
プロセス4でスレッド193〜250
みたいな感じで
PARAM_STR[]でどこからどこまでやるかを伝えていけば良さそうです

別プロセスの立ち上げは終了を待たない方法ならなんでもいいのでdoscmdでおそらくOK
でもプロセス終了判定が面倒かな…?
用途次第ですがやりっぱなしでいいなら終了判定もいらないですね

No.1462 2022/03/22(Tue) 23:35:42

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

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

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

Rocket Board Type-X (Free) Rocket BBS