[ 掲示板に戻る ]

過去ログ閲覧モード

リモートデスクトップが終了するまで待たせたいのですが / 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
リモートデスクトップへのデータ送信について / oke
お世話になっております

ここでの相談事項とちょっとずれている気もしますが。。

リモートデスクトップにてクリップボードが
許可されていない場合に
ローカルPCから文字列をリモートデスクトップに
流し込むことは可能でしょうか?

疑似的にコピーアンドペースト機能を
実現したいと考えています。

ローカルPCのUWSCスクリプトから
一文字ずつSENDSTRで実現できないかなぁと
考えています。

※リモートデスクトップからローカルPCへの
データ送信は考慮していないです。

No.863 2015/02/18(Wed) 14:02:54

Re: リモートデスクトップへのデータ送信について / oke
自己レスです
KBDでデータ送れましたが
2バイト文字がダメですね。。。

No.864 2015/02/18(Wed) 14:32:20
自分自身の名前 / かずお
スクリプト名を取得する方法はありますか?
C言語でいうところの argv[0] です。
ヘルプには見当たりませんでした。

No.852 2015/02/16(Mon) 07:39:02

Re: 自分自身の名前 / Liners
GET_UWSC_NAME で良いのでは?
No.853 2015/02/16(Mon) 08:19:33
エクセルセル内での改行箇所を文字置換 / yoshi
セル内に改行を使って作成されている数行の文章を、改行部分を
に置換してhtmlファイルに書き込む動作をしたいと思っています。


moji10 = Excel.ActiveSheet.Range["N"+i].Value
moji10 = REPLACE(moji10,"CHAR(10)","
")


上手く置換することができないのですが、お分かりになる方ご教授の程お願いいたします

No.846 2015/02/14(Sat) 17:53:01

Re: エクセルセル内での改行箇所を文字置換 / yoshi
上記の質問にて記述した改行コードが、上記文章でも改行されて表示されているので違うカッコで書き換えました。


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

セル内に改行を使って作成されている数行の文章を、改行部分を(br)に置換してhtmlファイルに書き込む動作をしたいと思っています。


moji10 = Excel.ActiveSheet.Range["N"+i].Value
moji10 = REPLACE(moji10,"CHAR(10)","(br)")


上手く置換することができないのですが、お分かりになる方ご教授の程お願いいたします

No.847 2015/02/14(Sat) 17:58:54

Re: エクセルセル内での改行箇所を文字置換 / Nagatani
moji10 = REPLACE(moji10,CHR(10),"")では如何でしょうか?
No.848 2015/02/14(Sat) 18:47:08

Re: エクセルセル内での改行箇所を文字置換 / yoshi
Nagatani様

できました!!
半日つかって色々と試していましたが、本当にうれしい限りです。
"CHR(10)"は試していたのですが、『"』が不必要だったのですね。

本当にありがとうございました

No.849 2015/02/14(Sat) 19:08:52
webdavに接続 フォルダーで開く / もりた
heteml のwebdavにUWSCで一発でアクセスするために、以下のスクリプトを書いてみました。

hetemlId = "xxxxxxxx"
hetemlPwd = "xxxxxxxx"
folderName = "https://xxxxxxxx.dav.heteml.jp:xxxxx/web/xxxxxx"

wss = createoleobj("wscript.shell")
objrun = wss.run("<#dbl>" + folderName + "<#dbl>")


フォルダーで開きたいのですが、ブラウザーが起動してしまいます。
フォルダーを開くようにするには、どのように記載をすればよいでしょうか?

No.834 2015/02/11(Wed) 01:15:02

Re: webdavに接続 フォルダーで開く / stuncloud
hetemlId = "xxxxxxxx"
hetemlPwd = "xxxxxxxx"
url = "https://xxxxxxxx.dav.heteml.jp:xxxxx/web/xxxxxx"
driveletter = "H" // hetemlなのでHにしてみます

cmd = "net use " + driveletter + ": " + url + " " + hetemlPwd + " /user:" + hetemlId
doscmd(cmd)

これでExplorerを開けばHドライブができているはず?です
onedriveで試した限りでは成功しました

このままだと一時的な接続になりますがコマンドに/PERSISTENTオプションをつければ永続します

No.836 2015/02/11(Wed) 02:03:19

Re: webdavに接続 フォルダーで開く / もりた
stuncloud様

すごい!できた!
こんなことまでできるんですね!
これはかなり重宝します。
ありがとうございます!

No.845 2015/02/13(Fri) 13:52:08
全896件 [ ページ : << 1 ... 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ... 90 >> ]