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

アプリが実行中かどうかの判断方法について 2 / にゃんこ
前回、アプリが実行中かどうかの判断をCPUの使用率で行う方法を教えていただきました。

Dim pid = Status(GetID(" - Internet Explorer"), ST_PROCESS)
Ifb pid > 0
  with CreateOleObj("WbemScripting.SWbemLocator")
    with .ConnectServer
      GetOleItem( .ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfProc_Process WHERE IDProcess = " + pid) )
      MsgBox(ALL_OLE_ITEM[0].PercentProcessorTime)
    endwith
  endwith
EndIf

これをディスクの使用率に変えたいのですがどうすればいいでしょうか?

No.3266 2016/12/06(Tue) 13:19:29

Re: アプリが実行中かどうかの判断方法について 2 / stuncloud
この手のWindowsの情報を取得する、というのはだいたいWMIでできますね
今回のも「WMI ディスク使用率」で検索すればサンプルも出てくると思います
UWSC以外が出てくるかもですが、どういったWQL(ExecQueryの引数に渡すクエリ文)を渡すかは使う言語は関係なく同じなので参考になります
で、実際に検索してみるとどうやら Win32_LogicalDisk クラスで必要な情報が得られそうなことがわかります
すると以下のようになります

with createoleobj("WbemScripting.SWbemLocator")
 with .ConnectServer
  col = .ExecQuery("SELECT Name,FreeSpace,Size FROM Win32_LogicalDisk") // Win32_LogicalDisk からName,FreeSpace,Sizeの値を返してね、というWQL文
 endwith
endwith

for disk in getoleitem(col) // ディスクの数分情報が含まれているので、ループで処理
 if disk.Size > 0 then // サイズが得られないもの(空のCDドライブとか)は無視する
  print disk.Name + " ドライブのディスク使用率は " + GetDiskUsage(disk) + "%です"
 endif
next

function GetDiskUsage(disk)
 usage = (disk.Size - disk.FreeSpace) / disk.Size * 100
 result = round(usage, -2)
fend

どういう作業をされているかはわかりませんが、WMIの使い方を覚えられるとできることの幅がぐんと広がると思いますよ

No.3270 2016/12/07(Wed) 13:44:35

Re: アプリが実行中かどうかの判断方法について 2 / にゃんこ
申し訳ありません。

ディスクの使用率ではなくディスクの速度でした。
タスクマネージャーのプロセスのディスクで○MB/秒の事です。
CPUの使用率では0%になっていて、アプリが実行中かどうかの判断が難しかったので、
ディスクの速度で判断しようと考えました。

PercentProcessorTimeの記述あたりを変更すればいいのかなと思って
PercentProcessorTimeで検索してみたのですが、引っかかりませんでした。

よろしくお願いします。

No.3271 2016/12/07(Wed) 18:22:50

Re: アプリが実行中かどうかの判断方法について 2 / stuncloud
なら IOWriteBytesPersec じゃないですかね
もう一度 Win32_PerfFormattedData_PerfProc_Process で検索してどのようなプロパティがあるかよく調べてみてください

No.3272 2016/12/07(Wed) 18:43:21

Re: アプリが実行中かどうかの判断方法について 2 / しろまさ
私は microsoft の WMICodeCreator を使って調べています。便利ですよ。
No.3273 2016/12/09(Fri) 09:11:53

Re: アプリが実行中かどうかの判断方法について 2 / stuncloud
> WMICodeCreator
おお、僕も以前は使ってました
最近は専らPowerShellですね

No.3274 2016/12/09(Fri) 09:46:13
SetHotkeyについて / kati

下記のようなプログラムを実行してます。
(slctboxの2番目を押すまでは停止しないプログラム)
slctboxの1番目と"alt+a"を押下した時に、同じ処理を実行させていますが、
slectboxを押した時は、msgboxを返答するまで処理が停止するので、
連続で実行されませんが、
"alt+a"を押下した場合、押した分処理が実行されてしまいます。
(msgboxが"alt+a"を押した分出てしまう。)
"alt+a"を押下した時も、先に押した"alt+a"の処理が終わるまで
待ってほしいのですが、方法ありますか?


SetHotkey(VK_A,MOD_ALT,"aaa")
aaa

Procedure aaa
Dim HOTKEY_VK,HOTKEY_MOD,select_choice,loopEnd
Repeat

Ifb (HOTKEY_MOD=MOD_ALT) And (HOTKEY_VK=VK_A) Then
loopEnd = "end"
select_choice = 1
EndIf

Ifb select_choice = ""
select_choice = SlctBox(SLCT_BTN + SLCT_NUM,0,0,0,, _
1,2)
EndIf

Ifb select_choice = 1 Then
loopEnd = "end"
EndIf

msgbox(select_choice)

select_choice = ""

Until loopEnd = "end"

FEnd
/*

No.3262 2016/12/06(Tue) 00:01:00

Re: SetHotkeyについて / miles
ホットキー処理中は、ホットキーを解除しておけば、いいのではないですか?
1)ホットキー処理開始時、ホットキーの解除をする。
2)ホットキー処理終了時、ホットキーを再設定する。

下記の部分は、Repeatの前のほうがいいと思いますよ。
Ifb (HOTKEY_MOD=MOD_ALT) And (HOTKEY_VK=VK_A) Then
loopEnd = "end"
select_choice = 1
EndIf

No.3267 2016/12/06(Tue) 15:08:42

Re: SetHotkeyについて / kati
miles様
なるほど。一回解除するという事は思いつきませんでした。
後、インデントが無く分かりにくいプログラムを見ていただき、
ありがとうございました。
(テキストで記入して記載しており、貼り付けて送信したらインデントが消えてました。)

No.3269 2016/12/06(Tue) 23:52:45
IE11で複数タブが開けない / shell_初心者
現在、Windows10、IE11の環境で複数タブを開く簡単なUWSファイルを作成してテストしているのですが、3つ目のタブ表示で必ずエラーになり進めません。

記述としては
IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate2("http://myserver01/hogehoge1.htm")
IE.navigate2("http://myserver01/hogehoge2.htm", $800)
         ・
         ・
IE.navigate2("http://myserver01/hogehoge6.htm", $800)

と至ってシンプルな物ですが、デバッグでは、4行目のIE.navgate2で「そのインターフェースは認識されません」
通常に起動させても5行目で「例外が発生しました」のCOMエラーが出て、最大でも2画面(タブ)しか表示されない状態です。

何か調査・解決する方法をご存知でしたらご教示願いたく存じます。

UWSC Ver5.2.3
windouws10
IE11

ちなみに、IE9のVISTA環境でUWSC Ver4.8c1では問題なく動作しました

No.3233 2016/12/01(Thu) 21:34:22

Re: IE11で複数タブが開けない / miles
これでどうですか?

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate2("")   // エラー回避のために追加
BusyWait(IE)    // 更新待ち処理
IE.navigate2("http://myserver01/hogehoge1.htm")
BusyWait(IE)    // 更新待ち処理
IE.navigate2("http://myserver01/hogehoge2.htm", $800)
BusyWait(IE)    // 更新待ち処理

// IE11にて画面更新後に操作(COM)ができない  #N45
//  IE11 では一度アクティブ状態にする必要があります。
//  ので画面更新の後に IEに対して WM_ACTIVATE を送り操作可能にします。
  DEF_DLL SendMessageA(Hwnd, Long, Long, Dword): bool: user32
  CONST WM_ACTIVATE = $06
  Procedure BusyWait(ie)   // 更新待ち処理
   repeat
    Sleep(0.2)
   until (! ie.busy) and (ie.readyState=4)
   SendMessageA(ie.Hwnd, WM_ACTIVATE, 0, 0) // 更新直後に WM_ACTIVATEを送る事によりバックグランドでも操作可となる
  Fend

No.3256 2016/12/05(Mon) 16:34:04

Re: IE11で複数タブが開けない / shell_初心者
mile様、ご回答ありがとうございます。busywaitも記述してみましたが、repeat文で例外エラーが出てきました。
結論としてexe作成ツールでexe化した上で「管理者として実行」する事で解決致しました。
一般アカウントによる、フォルダ参照制限か更新制限がそもそもの原因になっていた模様です。
しかし、IEのタブにサイトを追加するだけのUWSで、「アプリの更新」ダイアログが出てくるのはなんか納得いきませんでした。

No.3268 2016/12/06(Tue) 18:47:14
途中でプログラムを停止したい / まきす
お世話になっております。

タイマーセットなどして動いたプログラム動作中、
停止ボタンまでポインタを動かそうとしても、
プログラムに従ってポインタが動いてしまいます。
なんとかプログラムの動きの合間に停止ボタンを押すのですが、
なんだか苦労しております。
途中で設定したプログラムを停止する方法は無いでしょうか?

No.3242 2016/12/03(Sat) 17:47:15

Re: 途中でプログラムを停止したい / koi
標準ではALT+F2で終了(停止)ですが終了しませんか?
 −>設定でカスタマイズ可能

どうしてもだめならスクリプト上で
HOTKEY指定してプログラム終了する方法もあるかと

スクリプトでマウス操作してしまうと
マウス操作で終了するのに困難なことは確かです(よくやらかします)

No.3243 2016/12/03(Sat) 19:59:15

Re: 途中でプログラムを停止したい / K.Nagatani
上記Alt+F2でもダメな場合は、REPEATの間隔を開けてみては?
REPEAT
SLEEP(0.2)
UNTIL ••••

No.3244 2016/12/03(Sat) 23:55:32

Re: 途中でプログラムを停止したい / まきす
koi様、K.Nagatani様、ありがとうございました。解決しましたm(_ _)m
No.3265 2016/12/06(Tue) 06:46:43
(No Subject) / SEN
もしかして、二桁ずつ区切って数字を入れ替えて、$を足せば良いのか!
なるほど!satochaさんの結うことが言うことがわかりました。

No.3264 2016/12/06(Tue) 00:29:47
BGR値を探す方法を教えて欲しい。 / SEN
いつもお世話になっております。
BGR色についてですが、ヘルプ以外の色を探しています。眠たい詩人の「fukidasi()関数の文字色と背景色のBGR値を生成(UWSC)」を参考に白と紫が見つかったのですが、中々うまく見つかりません。
一覧表みたいなのが掲載されているホームページがありましたら、助かります
何卒よろしくお願い申し上げます。

DIM Excel = XLOPEN()
DIM 色 = "オレンジ"
DIM BGR = ReadIni("BGR",色,"色.INI")
XLSETDATA(Excel,色+"="+BGR,1,1,,,BGR)

//色.INI
[BGR]
白=$FFFFFF
紫=$800080
青=$FF0000
緑=$00FF00
赤=$0000FF
オレンジ=$80FF
黄=$FFFF

No.3249 2016/12/04(Sun) 18:53:24

Re: BGR値を探す方法を教えて欲しい。 / stuncloud
こないだ書いた記事です

https://stuncloud.wordpress.com/2016/11/04/uwsc_color_picker/

色選択ダイアログで好きな色のBGR値が得られますよ

color = 0
if PickColor(color) then // 引数は参照渡し
 print "$" + replace(format(color, 6, -1), " ", "0") // UWSCで使える $BBGGRR 形式の文字列に変換
else
 print "キャンセルしました"
endif

No.3251 2016/12/05(Mon) 09:55:52

Re: BGR値を探す方法を教えて欲しい。 / stuncloud
すいません、眠たい詩人さんとことやってること一緒でしたね…
No.3252 2016/12/05(Mon) 09:58:30

Re: BGR値を探す方法を教えて欲しい。 / satocha
「html 色名 コード」あたりのキーワードで検索すると
http://www.colordic.org/
などのサイトが引っかかります。
htmlの色コードはRGBの順なので、ひっくり返せばUWSCの色コードとして使えます。
たとえば、上記サイトで「hotpink」は#ff69b4なので
UWSC上の色コードは$b469ffになります。

No.3253 2016/12/05(Mon) 10:19:56

Re: BGR値を探す方法を教えて欲しい。 / SEN
出来ました。ありがとうございました。

satochaの言われている「ひっくり返せば」というのも、stuncloudさんや眠たい詩人さんのコードの中身はさっぱり分かりませんが、これで凄く使える色が増えそうです。


↓こんな感じにさせてもらいました。
WriteIni("BGR",input("色"),"$" + replace(format(color, 6, -1), " ", "0"),"色.INI")

↓見る見るうち使える色が増えそうです。
//色.INI
[BGR]
白=$FFFFFF
紫=$800080
青=$FF0000
緑=$00FF00
赤=$0000FF
オレンジ=$80FF
黄=$FFFF
明るいピンク=$FF00FF
薄い黄色=$80FFFF
よもぎ色=$008080
薄い灰色=$C0C0C0

ps.RGBは結構hpがあるのにBGRのhpは全くありません。
  uwscを使っている方は、不自由してないのかな?
  という疑問はあります。

No.3263 2016/12/06(Tue) 00:24:01
html形式のファイルからタグを削除したい / リキュール
ファイルにhtml形式の文章が入っています。
これを、タグを除いたテキスト文章にしたいです。
正規表現を使えば出来るらしいですが方法が分かりません。
よろしくお願いします。

fid = FOPEN("○○.TXT",F_READ)
BUN = FGET(fid,F_ALLTEXT) //全文読み取り
Pattern="○○○○"
TXT= Replace(BUN,Pattern, "")
print TXT
FCLOSE(fid)

//<("[^"]*"|'[^']*'|[^'">])*> 正規表現

No.3241 2016/12/03(Sat) 14:12:36

Re: html形式のファイルからタグを削除したい / satocha
//<("[^"]*"|'[^']*'|[^'">])*> 正規表現
まで調べたのだけれど、これをUWSCでどうやればいいか分からないということでしょうか。

UWSCで正規表現を使う方法はFAQの「正規表現を利用したい  #N26」を見てください。

ここでは別の方法として、正規表現が使えるpowershellを使ってファイルの読み込みから変換まで一気にやってしまう例を示しておきます。行数も短いので。
textblock pssrc
  gc $$$FILE$$$|%{$_ -replace "<(`"[^`"]*`"|'[^']*'|[^'`">])*>", ""}
endtextblock
TXT  =powershell( replace( pssrc, "$$$FILE$$$", "○○.TXT" ) )
print TXT

No.3246 2016/12/04(Sun) 10:51:05

Re: html形式のファイルからタグを削除したい / リキュール
satocha さん、お世話になります。
powershell を使用する参考例でバッチリ動作しました。(私には魔法のようです)
ありがとうございました。

なお、#N26の方法を調べましたがうまくいきません。
fid = FOPEN("○○.TXT",F_READ)
BUN = FGET(fid,F_ALLTEXT) //全文読み取り
regex = CREATEOLEOBJ("VBScript.RegExp")
regex.Global = True
regex.Pattern = "<#DBL><(`"[^`"]*`"|'[^']*'|[^'`">])*><#DBL>"
//<#DBL>の正しい利用方法をまだ理解できません。(初心者)
print regex.Replace(BUN, "") // 置換
FCLOSE(fid)

No.3247 2016/12/04(Sun) 14:05:42

Re: html形式のファイルからタグを削除したい / stuncloud
正規表現だと面倒なので…

doc = createoleobj("htmlfile")
doc.write(BUN)
print doc.body.innerText

No.3248 2016/12/04(Sun) 16:47:02

Re: html形式のファイルからタグを削除したい / リキュール
stuncloud さん、お世話になります。
innerText を使用する方法に気が付きませんでした。
思いどおりに表示できました。
正規表現は私には難しそうです。
ありがとうございました。

No.3250 2016/12/04(Sun) 19:33:42

Re: html形式のファイルからタグを削除したい / miles
解決済みなので、参考になれば...

> なお、#N26の方法を調べましたがうまくいきません。
ダブルコーテイションがあると一発でできないようです(多分)。
別々にすれば、できるようです。

regex = CREATEOLEOBJ("VBScript.RegExp")
regex.Global = True
regex.Pattern = "<#DBL>"     // "ダブルコーテイションのみ処理
BUN = regex.Replace(BUN, "")   // 置換
regex.Pattern = "<(`[^`]*`|'[^']*'|[^'`>])*>" // "を除いた部分を処理
print regex.Replace(BUN, "")    // 置換

No.3254 2016/12/05(Mon) 11:59:44

Re: html形式のファイルからタグを削除したい / リキュール
miles さん、お世話になります。
正規表現を使用して表示できました。
発想の転換で、いろいろな方法があるのですね。
大変勉強になりました。
ありがとうございました。

No.3260 2016/12/05(Mon) 22:03:45
xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / アユミ
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName :="C:\Users\hoge.xlsx")
str1=xlgetdata(excel, "a1:a10", "sheet1")

xlgetdata(excel, "a1:a10", "sheet1")

hoge.xlsxと言うEXCELファイルにa1からa10までテキストと入力されているとします。
このa10が追加入力する事でa11やa12と変動します。これをテキストがあるセルまでセルの位置を取得する方法を探しています。
各セルが空欄かどうかを判断してa1からa100まで、テキストあるセルまでxlgetdataで読み込みをしたいです。

下記のコードが何かヒントになりそうですが、いまいち加工方法が思いつきません。
//下から上に探して最初の空欄がある行番号を返す
function sub_getBlankRowNumber(oSheet, iColumnNumber)
  dim i_bottomRow = oSheet.Rows.Count
  dim o_range   = oSheet.Cells(i_bottomRow, iColumnNumber)
  
  dim xlUp = -4162
  o_range = o_range.End(xlUp)     //Ctrl + ↑ と同じ操作
  
  ifb (empty <> o_range.Value) then  //空欄でなければ
    o_range = o_range.Offset(1, 0)  //一つ下のセル
  endif
  
  result = o_range.Row
fend

No.3255 2016/12/05(Mon) 13:56:41

Re: xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / Nagatani
Excelの最終行を取得するなら
Uwscだと
 Excel=GETACTIVEOLEOBJ("Excel.Application")
 Excel.Visible = True
 Excel.Sheets["Sheet1"].Select
 LonLast = Excel.Cells(100,"A").End(-4162).Row
 MsgBox(LonLast)

ExcelVBAだと(A列に連続して文字列等の入力がある場合)
 LonRowLast=Cells(1,"A").End(xldown).Row

No.3257 2016/12/05(Mon) 21:09:56

Re: xlgetdataでA1からA100までテキストがあるセルまで読み込み方法 / Nagatani
忘れ物・・・
LonRowLast = Excel.Cells(1, "A").End(-4121).Row(下方向)
LonRowLast = Excel.Cells(100, "A").End(-4162).Row(上方向)
LonColLast = Ws01.Cells(1, "A").End(-4161).Column(右方向)
LonColLast = Ws01.Cells(1, "AA").End(-4159).Column(左方向)

No.3258 2016/12/05(Mon) 21:24:56
他窓にいくときにそこにあった窓が・・・ / にょ
操作を実行している窓が別の窓を操作するとき何故か操作していた窓がついてきてしまいます。
No.3245 2016/12/04(Sun) 00:47:51
uwscのcallについて / ゆあ
callを使って別のフォルダにあるファイルを呼び出した時に
「Not Found〜」という画像がありませんというエラーメッセージが出ますが
対処法はありますか?
フォルダ内には画像は入ってます。
call "C:\●\uwsc48e\フォルダ\ファイル名"という感じです。

No.3238 2016/12/02(Fri) 16:53:11

Re: uwscのcallについて / stuncloud
call で呼べるのは拡張子が .uws のファイルだけです
また、callに渡すパスは .uws の部分を省略しても良いことになっています
なので例えば

call "C:\●\uwsc48e\フォルダ\hoge.jpg"

とすると C:\●\uwsc48e\フォルダ\hoge.jpg.uws を探しに行って File not found になります

No.3239 2016/12/02(Fri) 17:05:21

Re: uwscのcallについて / ゆあ
そうなんですね。
回答ありがとうございます。

No.3240 2016/12/02(Fri) 21:58:59


 過去ログ(〜2016/10/02)・検索ツール


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