[ 掲示板に戻る ]

過去ログ閲覧モード

powershell関数で文字化けする場合がある / pnck
>UWSC ver 5.0.4
>powershell関数にて戻り値にBOM(文字コード)が付加された場合に BOMを削除


これに関連すると思うのですが、
どうもBOMが残る気がします。
print powershell("ipconfig<#CR>dir")
print powershell("help")

OSはWin7、PowerShellは2.0です。

No.897 2015/02/20(Fri) 07:25:47

Re: powershell関数で文字化けする場合がある / umiumi
確認しました。
修正します。

No.904 2015/02/21(Sat) 00:06:35
通知領域のアイコン制御 / taro
プロセスを終了するコマンドラインプログラム(TskillとかPskillとか)が
通知領域のアイコン表示を更新(消去)してくれません、解決法は?(XP_sp3)

No.872 2015/02/18(Wed) 19:53:23

Re: 通知領域のアイコン制御 / koi
私も昔扱いに悩んだことがありますが
強制終了した場合通知領域のアイコンが残るのはOSの仕様と思った方がいいでしょう

どうしても消したいなら
1.通知領域上をくまなくマウス移動させる
2.アイコン表示させてるプロセス([explorer.exe)を再起動
のどちらかしかないと思います

可能であればCTLWINなどでCLOSE(正常なクロース)を行った方がいいでしょう

No.873 2015/02/18(Wed) 20:11:52

Re: 通知領域のアイコン制御 / しろまさ
> 2.アイコン表示させてるプロセス([explorer.exe)を再起動

Ifb GetID("", "TUMain_uwsc") > 0
  DosCmd("Tskill explorer")
  DosCmd("Tskill uwsc")
  DosCmd("start explorer")
EndIf

No.885 2015/02/19(Thu) 13:20:03

Re: 通知領域のアイコン制御 / taro
しろまささんのexplorerプロセス再起動が簡単そうで良かったのですが
私の環境依存かもしれませんが、スタートアップ起動したプログラムの
なかには通知領域アイコンが消えてしまうものや再実行してもアイコンが
表示されなくなって結局ログオフするしかありませんでした
(プロセス終了から再起動までsleep(5)を入れてみましたがダメでした)

koiさんの >1.通知領域上をくまなくマウス移動させる を検討してみます
koiさん、しろまささん、どうもありがとうございましたm(..)m

No.901 2015/02/20(Fri) 18:56:50
(No Subject) / sato
win8.1でウィンドウズマークを右クリックしてコマンドプロンプト(管理者)(A)をクリックして出てくる管理者:コマンドプロンプトにコマンドを送るにはどのようにすればよいでしょうか。管理者のコマンドプロンプト以外のコマンドプロンプトではsckeyやkdbを使ってできるのですが。
uwscを使ってやる方法ならばどんなものでもいいでのお願いします。

No.882 2015/02/19(Thu) 11:02:58

Re: / stuncloud
UWSCも管理者権限で実行すればよいです
https://gist.github.com/stuncloud/9660072

UAC.Elevate() // UWSCが管理者権限でなかったら管理者権限で再実行する
id = exec("cmd") // 管理者権限のUWSCで起動したコマンドプロンプトは管理者モードになる
sckey(id, VK_D, VK_I, VK_R, VK_RETURN)

No.884 2015/02/19(Thu) 11:18:07

Re: / sato
stuncloud 様
また回答ありがとうございます。
URLは見れなかったのですが,管理者権限で実行したらうまくいきました。
コマンドプロンプトも管理者になり一挙に解決しました。

No.890 2015/02/19(Thu) 15:41:41
ウィンドウキー 押しながら エックス / sato
ウィンドウキー 押しながら エックスのときに出てくる一覧をだしたいのですが(管理者でコマンドプロンプトを立ち上げたいので)
sckey(0,VK_WIN,X)
でもだめで
kbd(VK_WIN,DOWN)
kbd(VK_X,CLICK)
kbd(VK_WIN,UP)
でもだめです。
win8.1です。よろしくお願いします。

No.870 2015/02/18(Wed) 19:24:51

Re: ウィンドウキー 押しながら エックス / stuncloud
Win+Xの解決にはなりませんが
> 管理者でコマンドプロンプトを立ち上げたい
でしたら、
sh = CreateOleObj("Shell.Application")
sh.ShellExecute("cmd", "", "", "runas", 1)

No.880 2015/02/19(Thu) 10:48:09

Re: ウィンドウキー 押しながら エックス / sato
ありがとうございます。
私が思っていたより,とてもスマートな回答でした。
うまくいきました。

No.889 2015/02/19(Thu) 15:25:35
リモートデスクトップが終了するまで待たせたいのですが / midori1146
WindowsXPはEXEC("mstsc",TRUE)でリモートデスクトップが終了するまで待っているのですがWindows7ではまってくれません。Windows7では同期フラグ TRUE:そのアプリが終了するまで待つはきかないのでしょうか。Helpには※ 注:Explorer等の別プロセスを呼ぶものは、期待どおりに戻値を返さない事があると記載されていますがこれに該当するのでしょうか。(UWSC Pro Ver5.1.0.0)
リモートデスクトップが終了するまで待たせたいのですがよい方法があれば教えて下さい。

No.887 2015/02/19(Thu) 14:18:17

Re: リモートデスクトップが終了するまで待たせたいのですが / koi
検証などはしてません
安直な一案としてプロセス一覧取得して該当プロセスが検出できなくなるまでループする

No.888 2015/02/19(Thu) 15:08:10
自然順ソートを実装して欲しい / pnck
文字列を自然順ソートさせたいです。
たとえば
file8.txt
file9.txt
file10.txt
file11.txt
のような並び順です。

某所で質問したところshlwapi.dllのStrCmpLogicalW関数を使えばいいと
教えてもらいましたがソート処理を書かなければなりません。

別の方法として、PowerShellで数値を正規表現で書き換えればソートまで出来るのですが
既に存在するQSORT関数を拡張してもらったほうが楽なので可能であれば
対応をお願いします。

No.874 2015/02/18(Wed) 21:07:26

Re: 自然順ソートを実装して欲しい / umiumi
考慮しときます。
No.877 2015/02/19(Thu) 00:15:51

Re: 自然順ソートを実装して欲しい / stuncloud
textblock data
file9.txt
file11.txt
file8.txt
file10.txt
endtextblock

arr = split(data, "<#CR>")
qsort2(arr)
for value in arr
 print value
next

// 結果
// file8.txt
// file9.txt
// file10.txt
// file11.txt

procedure qsort2(var array)
 tmp = safearray(0, resize(array))
 re = createoleobj("VBScript.RegExp")
 re.pattern = "\d+"
 for i = 0 to resize(array)
  n = format(val(re.execute(array[i]).item(0).value), 8)
  tmp[i] = re.replace(array[i], n)
 next
 qsort(tmp, 0, array)
fend


今のqsortでやるとしたら、こんな感じ?

No.883 2015/02/19(Thu) 11:11:55
ウインドウのアクティブでCOM_Error / しき
下のサンプルで、最後の「b = reg.Test("")」の行でエラーになります。
↓エラー内容↓
COM_Error:Access violation at address 65F5315E in module 'vbscript.dll'. Read of address 0072F000 9行目: B = REG.Test("")

確認環境 UWSC 5.1.0.0 Win7x64, WinXP

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━
id = getid("", "notepad", 0.01)
if (id < 0) then id = exec("notepad.exe")

print 3 //ログウインドウを出す。#1
ctrlwin(id, activate) //メモ帳をアクティブにする。#2

reg = CreateOleObj("VBScript.RegExp")
reg.Pattern = "abc" //3文以上。#3
b = reg.Test("")   //COM_Error。#4
msgbox(b)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#1 printを出さなければエラーにならない
#2 メモ帳をアクティブにしなければエラーにならない
#3 Patternが2文字以下ならエラーにならない
#4 対象文字が空文字でないならエラーにならない


初めに発生したのは Scripting.Dictionary でのエラーでしたが、
原因特定のために print 入れると VBScript.RegExp でも同様のエラーと
なったので、上記のサンプルにたどり着きました。

1. アクティブウインドウを変える
2. COMに空文字を渡す
がキーのようです

No.861 2015/02/17(Tue) 18:19:26

Re: ウインドウのアクティブでCOM_Error / umiumi
修正します。
No.876 2015/02/19(Thu) 00:15:24
不具合報告:call で file not found ○○.uws / jb14
お世話になります。
cドライブルートにa.uwsというファイルを作り、
それを別のuwsファイルから

call c:\a.uws

としてcallしようとしましたところ、

File not Found :C:\A.UWS

とダイアログが表示され、読み込まれないというバグらしきものが
見つかりましたのでご報告いたします。

C:\a.uwsは確かに存在しており、保存して閉じた状態です。
スクリプトには、パスをコピーで貼り付けていますので、
スペースが混ざっているとか、全角半角の入力ミス等は考えにくいのですが、
いろいろ試しても、やはりダイアログでメッセージが表示されます。
UWSC本体を再起動したり、PCを再起動しても同じでした。

なお、a.uwsの中身は

public giNrlXPos = 1232

と1行あるだけです。

他のスクリプトのcall文はうまく作動しています。

ネット上で検索したところ他の方も同様の現象が発生している方がおられるようで、
その方は「同一フォルダ内でも発生した」と述べているので、関係あるかはわかりませんが、
今回は、増設HDDのJドライブのジャンクションから上記Cドライブのファイルをcallしています。


Win8 64bit
UWSC Pro 5.1.0.0
です。
よろしくお願い致します。

No.850 2015/02/15(Sun) 11:51:21

Re: 不具合報告:call で file not found ○○.uws / routa
uwsc側の問題ではなく、VirtualStoreのせいです。
通常Cドライブのルートにはファイルは置けません。
管理者権限が必要ですし、一般にはVirtualStoreにより別な所に保管されてしまいます。
ですのでルートにファイルを置くのはやめましょう。

No.851 2015/02/15(Sun) 17:58:55

Re: 不具合報告:call で file not found ○○.uws[解決] / jb14
ありがとうございます。
別フォルダで代用いたしましたところ、うまく動作いたしました。

program files等がそのような仕組みになっていることはなんとなく知っておりましたが、
まさかルートディレクトリさえもそのようになっているとは思いもせず盲点でした。

助かりましたとともに、勉強にもなりました。
ありがとうございました。

No.867 2015/02/18(Wed) 17:17:57
IEの通知バー「名前を付けて保存」を押したい / ざろん
お世話になっております。

IEの通知バーの「名前をつけて保存」を実行したいと思っております。
IE9を使用しておりますが、今後もしかしたらバージョンをあげる可能性もあります…

-------------
id = GETID("TEST - Windows Internet Explorer", "IEFrame")
while True
  CTRLWIN(id, ACTIVATE)
  Sleep(1)
  msgid = HNDtoID(GETCTLHND(id,"DirectUIHWND",2))
  ifb CLKITEM(msgid, "保存", CLK_ACC, False)
  SCKEY(id, VK_DOWN)
KBD(VK_DOWN)
    CLKITEM(GETID("","#32768"),"名前を付けて保存(A)", CLK_ACC or CLK_BACK or CLK_MUSMOVE or CLK_LEFTCLK)
    if GETID("名前を付けて保存", "#32770", 1) > 0 then break
  endif
wend

id = GETID("名前を付けて保存", "#32770")
Sleep(1)
SendStr(id, GET_UWSC_DIR+"TEST.csv", 2, True) // パス\ファイル名 //GET_UWSC_DIR\Data.csv

CLKITEM(id, "保存(S)", CLK_BTN)

If GETID("名前を付けて保存の確認", "#32770")>0 then
id=GETID("名前を付けて保存の確認", "#32770")
SLEEP(1)
CLKITEM(id, "はい(Y)", CLK_BTN)
endif

//Repeat
//  Sleep(1)
//Until Pos("ダウンロードが完了", GETSTR(msgid, 1, STR_ACC_STATIC))>0 // 完了待ち
//CLKITEM(msgid, "閉じる", CLK_ACC)
//  Sleep(4)

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

色々調べて、この段階までたどり着きました。
通知バー(ダウンロードダイアログ)が出ている前提で作ってます。
[保存▼]の ▼がどうしても押せません。
このソースの場合、
[▼]を押せば、名前を付けて指定の場所に保存してくれます。
高度な記録等で、どのような操作になっているのかを
確認してみましたが、それをコピペしても状況は変わりませんでした。

通知バーの[保存▼]自体が、チカチカ?するだけで、
▼が押されることはありません。
どのようにしたら、押されますでしょうか?

分かりにくい質問で大変申し訳ないですが、
よろしくお願い致しますorz

No.854 2015/02/16(Mon) 14:12:57

Re: IEの通知バー「名前を付けて保存」を押したい / しろまさ
これ?
http://www.uwsc.info/sample.html#n58

No.855 2015/02/16(Mon) 15:26:27

Re: IEの通知バー「名前を付けて保存」を押したい / ざろん
ソースの
while部分を
while True
CTRLWIN(IEid, ACTIVATE)
Sleep(1)
msgid = HNDtoID(GETCTLHND(IEid,"DirectUIHWND",2))
ifb CLKITEM(msgid, "保存", CLK_ACC or CLK_BACK, False)
KBD(VK_DOWN)
CLKITEM(GETID("","#32768"),"名前を付けて保存", CLK_ACC or CLK_BACK)
if GETID("名前を付けて保存", "#32770", 3) > 0 then break
endif
wend
と変更してみても、保存ボタンがチカチカするだけでした…。

No.856 2015/02/16(Mon) 16:04:01

Re: IEの通知バー「名前を付けて保存」を押したい / Nagatani
私はIE11ですが下記のようにして処理しました。

//保存をクリック(名前を付けて保存を選択)
ACW(GetID("","IEFrame"))
CLKITEM(GetID("","IEFrame"), "保存", CLK_ACC or CLK_BACK, False)
KBD(VK_DOWN)
REPEAT
 SLEEP(0.2)
UNTIL GETID("","#32768")
SLEEP(2)
CLKITEM(GETID("","#32768"),"保存", CLK_ACC or CLK_BACK)

No.857 2015/02/16(Mon) 21:00:32

Re: IEの通知バー「名前を付けて保存」を押したい / しろまさ
ほんとですねぇ。あまりに言うこときかないんで禁断の神ツールに手を出しました。。

Call  Image.uws  //  http://d.hatena.ne.jp/junjun777/20131002/uwsc_clipboard_image
ID  = HNDtoID(GetCtlHND(GetID("", "IEFrame"), "DirectUIHWND", 2))  //  GetID("", "IEFrame") ← これだけでも動く。
IDx  = Status(ID, ST_X);  IDy  = Status(ID, ST_Y)
Image.Set(▼)
If  CHKIMG(,-1,IDx,IDy,IDx + Status(ID, ST_WIDTH),IDy + Status(ID, ST_HEIGHT))  _
  Then BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
CLKITEM(GETID("","#32768",3),"名前を付けて保存(A)")

TextBlock  ▼
  KAAAAAcAAAAEAAAAAQAgAAMAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA/wAA
  /wAAAOrq6gDq6uoAo6OjAAAAAACjo6MA6urqAOrq6gDq6uoAo6OjAAAAAAAAAAAA
  AAAAAKOjowDq6uoApKSkAAAAAAAAAAAAAAAAAAAAAAAAAAAApKSkAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAA=
EndTextBlock

No.858 2015/02/17(Tue) 10:28:43

Re: IEの通知バー「名前を付けて保存」を押したい / ざろん
Nagatani様、しろまさ様、
回答頂きありがとうございます。

何故か上手く行ってしまいました。
私のソースは二度手間?動作をさせており、それも悪いのかもしれませんが…
回答頂きありがとうございました!返信おくれて大変申し訳ありませんでした。
下記、上手く動作したコードになります。

id = GETID("TEST - Windows Internet Explorer", "IEFrame")
while True
  CTRLWIN(id, ACTIVATE)
  Sleep(1)
  msgid = HNDtoID(GETCTLHND(id,"DirectUIHWND",2))
  ifb CLKITEM(msgid, "保存(S)", CLK_ACC or CLK_BACK, False)
KBD(VK_DOWN)
    CLKITEM(GETID("","#32768"),"名前を付けて保存(A)", CLK_ACC or CLK_BACK or CLK_MUSMOVE or CLK_LEFTCLK)
    if GETID("名前を付けて保存", "#32770", 1) > 0 then break
  endif
wend


id = GETID("名前を付けて保存", "#32770", -1)
SLEEP(1)
CLKITEM(id, "保存(S)", CLK_BTN)
id = GETID("名前を付けて保存の確認", "#32770", -1)
SLEEP(1)
CLKITEM(id, "はい(Y)", CLK_BTN)


id = GETID("名前を付けて保存", "#32770")
Sleep(1)
SendStr(id, GET_UWSC_DIR+"\test.csv", 2, True) // パス\ファイル名 //GET_UWSC_DIR\Data.csv

CLKITEM(id, "保存(S)", CLK_BTN)

If GETID("名前を付けて保存の確認", "#32770")>0 then
id=GETID("名前を付けて保存の確認", "#32770")
SLEEP(1)
CLKITEM(id, "はい(Y)", CLK_BTN)
endif

No.866 2015/02/18(Wed) 16:01:43
IEの特定URLの存在チェック / ほて
おせわになっております。

IR11で特定のURLが存在していたらダウンロードしたいのですが、
URLの存在チェックの仕方についてサンプル等ございましたら、
ご教授お願いたします。

No.859 2015/02/17(Tue) 12:32:35

Re: IEの特定URLの存在チェック / koi
参考)
http://www.atmarkit.co.jp/fdotnet/dotnettips/817httpstatus/httpstatus.html

はっきり言ってそのチェック自体をUWSCで何とかしたいというのが間違ってる気がします

No.860 2015/02/17(Tue) 17:57:19

Re: IEの特定URLの存在チェック / しろまさ
// 確認せずに落とした方が早い。
URL = "http://www.uwsc.info/"
Path = GET_CUR_DIR + "\test.html"
DEF_DLL URLDownloadToFileA(Long, String, String, Long, Long) :Long :Urlmon
If URLDownloadToFileA(0, URL, Path, 0, 0) <> 0 Then MsgBox("存在しないよ。")

No.862 2015/02/17(Tue) 18:56:22

Re: IEの特定URLの存在チェック / ほて
koi様、しろまさ様

お返事ありがとうございます。
直近7営業日のみ保持するファイルをダウンロードするため、
その日付だけのDLを取得したいため、このような質問をさせていただきました。
コメント参考になりました。ありがとうございます。
対応策としては、特定URLにてGETITEM(ID,ITM_ACCCLK)からDL対象のクリッカブルな日付情報を取得し、直接DL(URLDownloadToFileA)するように対処してみました。
以上、ありがとうございました。

No.865 2015/02/18(Wed) 15:52:29
全1170件 [ ページ : << 1 ... 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 ... 117 >> ]