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

ダウンロードの表示と追跡 / 小村
いつもお世話になっております.

1あるURLからExcelファイルAダウンロードする
2PC上に保管しているExcelファイルBを開く
3AのデータをBに貼り付ける

というプログラムコードを書いていました.
年始にPCを購入し、Winのバージョンを7から10にあげたところ,1の操作の後で「ダウンロードの表示と追跡」というのが毎回出てきまして,「ファイルを開く」というボタンを押す必要が生じました.
この「ファイルを開く」という部分のコードの書き方が分からずお聞きしたいと思います.
今は操作を記憶させ,座標で「ファイルを開く」の部分をクリックする応急処置をとっています.
ご教示いただければ幸いです.

No.4978 2018/01/13(Sat) 20:38:13

Re: ダウンロードの表示と追跡 / トンボ
UWSCの設定画面にて「高度な記録」を選択して記録しましたが、OKでしょうか?

id = GETID("ダウンロードの表示 - Internet Explorer", "#32770", -1)
SLEEP(1)
CLKITEM(id, "ファイルを開く", CLK_ACC)

No.4999 2018/01/17(Wed) 01:06:08
GETDIRで得たI番目のフォルダー名をSENDSTRで送るには? / せきこうじ
●この掲示板でいつも解決して助かっています。
以下のスクリプトで矢印のところがエラーです。
行いたいことは「開いた”フォルダの選択”という記入欄にI番目のフォルダー名を送る」ことです。

n=GETDIR("D:\VSRADfinish", "\", TRUE, 0) //フォルダ数とフォルダー一覧を得る
PRINT N + "個のフオルダーが見つかりました"
SLEEP(1)

FOR i =0 to (LENGTH(GETDIR_FILES) - 1)        //フォルダ数だけLOOPする

//以下BAAD解析する
ACW(GETID("BAAD ver.4.2.1.0","SunAwtFrame"),31,9,1024,768,0)
MOUSEORG(GETID("BAAD ver.4.2.1.0","SunAwtFrame"))

BTN(LEFT,CLICK,738,680,0)
ACW(GETID("DICOM Convert","SunAwtFrame"),395,345,599,191,0)
MOUSEORG(GETID("DICOM Convert","SunAwtFrame"))
BTN(LEFT,CLICK,404,70,0)

SENDSTR("フォルダの選択","D:\VSRADfinish\FILES[i]") ←ここでエラー出ます
KBD(VK_ENTER,CLICK)

BREAK

NEXT

No.4981 2018/01/14(Sun) 21:11:36

Re: GETDIRで得たI番目のフォルダー名をSENDSTRで送るには? / satocha
sendstr関数の第一引数は文字列ではなくウインドウIDです。ヘルプのsendstrの項を参照してください。

もしかして、第二引数の部分でNo.4967と同じミスをしてはいませんか?
せきこうじさんが書いたコードはD:\VSRADfinish\にある「FILES[i]」という名前のフォルダ?ファイル?の意味ですが。

No.4984 2018/01/15(Mon) 07:47:35

Re: GETDIRで得たI番目のフォルダー名をSENDSTRで送るには? / せきこうじ
●投稿者本人からのお礼

SENDSTR("フォルダの選択","D:\VSRADfinish\FILES[i]") の前後を

WID=GETID(GET_ACTIVE_WIN)
SENDSTR(WID,"D:\VSRADfinish\+FILES[i]+")

として解決しそうです。

No.4986 2018/01/15(Mon) 10:56:36

Re: GETDIRで得たI番目のフォルダー名をSENDSTRで送るには? / stuncloud
>SENDSTR(WID,"D:\VSRADfinish\+FILES[i]+")
>として解決しそうです。

…しませんよ!

+ を使うのは「文字列の連結」を行うためです

print "foo" + "bar" + "baz"

とすると "foobarbaz" という文字列になります
文字列と文字列を繋ぐように + を書いているのがわかるでしょうか
数値と数値であれば足し算になりますが、文字列同士であればそれらがくっつきます
これが、文字列の連結です
その応用で文字列の入った変数と文字列の連結もできます

bar = "bar"
print "foo" + bar + "baz"
// foobarbaz

これを踏まえて先程書かれたものを見てみましょう

"D:\VSRADfinish\+FILES[i]+"

+ が書かれていますがこれは連結記号としての + ではありません
"" で括られているのでただの文字列です
当然ただの文字列ですから、連結の機能はありません
また FILES[i] も本来は変数として扱いたかったのでしょうが同じ理由でこれもただの文字列です

正解は以下です

"D:\VSRADfinish\" + FILES[i]

"D:\VSRADfinish\" という文字列と FILES[i] (に入っている文字列)を連結した文字列になります

No.4988 2018/01/15(Mon) 13:49:31

Re: GETDIRで得たI番目のフォルダー名をSENDSTRで送るには? / せきこうじ
●ありがとうございました。諸兄のアドバイスでようやく動きました。
医用画像解析を行っていますが、少しずつ完成に近づいています。

n=GETDIR("D:\VSRADfinish", "\", TRUE, 0) //フォルダ数とフォルダー一覧を得る
PRINT N + "個のフオルダーが見つかりました"
SLEEP(1)

FOR i =1 to n     //フォルダ数だけLOOPする
i=i-1 //カウンター

//以下BAAD解析する
ACW(GETID("BAAD ver.4.2.1.0","SunAwtFrame"),30,10,1024,768,0)
MOUSEORG(GETID("BAAD ver.4.2.1.0","SunAwtFrame"))
SLEEP(1)
BTN(LEFT,CLICK,804,678,0) //DICOM convert開く
ACW(GETID("DICOM Convert","SunAwtFrame"),40,70,599,191,0)
SLEEP(1)
MOUSEORG(GETID("DICOM Convert","SunAwtFrame"))
BTN(LEFT,CLICK,422,71,0)
ACW(GETID("フォルダの選択","#32770"),48,70,734,542,0)
MOUSEORG(GETID("フォルダの選択","#32770")) //選択画面が開く
SLEEP(1)
WID=GETID(GET_ACTIVE_WIN)
SENDSTR(WID,"D:\VSRADfinish\"+GETDIR_FILES[i])
KBD(VK_ENTER,CLICK)
SLEEP(1)

No.4989 2018/01/15(Mon) 20:54:04
ファイルのオープン / との
はじめまして。
UWSCを始めました。
Microsoft製品以外のソフトで作ったファイルを開くことができずに困っています。
ソフトウェアを立ち上げるまではできたのですが、デスクトップ上に作成したPDFファイルやmp4ファイルを開くことができずに困っています。
お手数ですが、方法を教えていただけないでしょうか?
よろしくお願いします。

No.4976 2018/01/13(Sat) 13:23:17

Re: ファイルのオープン / 森
色んな方法がありますが、UWSCの基本的なコマンドでやるとこんな感じです。

// 開きたいファイルがあるフォルダのパス
folder_path = "C:\Users\ton\Desktop"

// ファイル名
file_name = "hoge.pdf"

// アプリのパス
apli_path = "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe"

// アプリを起動してファイルをドロップ
dropfile(exec(apli_path) , folder_path , file_name)

No.4977 2018/01/13(Sat) 15:49:28

Re: ファイルのオープン / との
dropfileというのがあるのですね。
おかげさまでうまくいきました。

追加でお聞きして申し訳ないのですが、ファイルの立ち上げに時間がかかるようなので、次の操作をするまでに待たせておきたいと思っています。
小林シンヤさんの本に載っていたとおり

repeat
sleep(0.1)
until !IE.busy and IE.readyatete = 4

と書いたのですが、エラーが出てしまって。
インターネットエクスプローラーのみ有効なプログラムなんでしょうか?

No.4979 2018/01/14(Sun) 09:56:22

Re: ファイルのオープン / 森
> インターネットエクスプローラーのみ有効なプログラムなんでしょうか?
はい、そうです。
ファイルが開いたかどうかの状態は、アプリ(やファイル)によって異なります。
処理時間を気にしなくてもよいのであれば、適当な時間待機する方法が一番簡単です。
ちなみに、アプリとの関連付けができている拡張子のファイルであれば、このように直接開くことも可能です。
doscmd("C:\Users\myname\Desktop\hoge.pdf" , TRUE) //------ 直接ファイルを開く
sleep(5) //----- これで5秒待機します。

No.4987 2018/01/15(Mon) 11:07:30
特定のフォルダー内の連続ファイル有無と最初のファイルの取得 / せきこうじ
●また障害に突き当たりました。
最初のD:\VBMnewの最初のFolderにDICOMファイル(*.DCM)が多数あるのに認識しません。13行のPRINT NUMでいつも0を返してきます。*.DCMを*.*にしてもファイルの有無を確認しません。どこか間違いがあるでしょうか。

========
//D:\VBMnewにフォルダー(directory)なければ以下の5行目以下は動作はしない。

NUM=GETDIR("D:\VBMnew" , "\")
IFB NUM>0

 getdir("D:\VBMnew" , "\") // GETDIR_FILES[0]に一番若い名前のフォルダ名セット
 FILE0=GETDIR_FILES[0]    //そのフォルダー名をFILE0とする。

 PRINT FILE0          //念のためそのフォルダー名を書き出す。
 SLEEp(2)

 NUM=GETDIR("D:\VBMnew\FILE0\", "*.dcm" ) //最初のフォルダーに*.DCMファイルあるか否か、なければ操作しないで*。DCMはありませんと表示。←ここがうまく動作しない。
 PRINT NUM

 IFB NUM>0


 ELSE
 MSGBOX("*.DCMはありません")
 SLEEP(2)
 ENDIF

ELSE
MSGBOX("症例フォルダーはもうありません")
SLEEP(2)
ENDIF

No.4967 2018/01/11(Thu) 22:56:50

Re: 特定のフォルダー内の連続ファイル有無と最初のファイルの取得 / satocha
>NUM=GETDIR("D:\VBMnew\FILE0\", "*.dcm" ) //最初のフォルダーに*.DCMファイルあるか否か…

の右辺は、「D:\VBMnewフォルダー直下にある”FILE0”という名前のフォルダーからdcmファイルを検索せよ」と書いてあります。
それが意図するところでしょうか。そもそも、D:\VBMnew\FILE0というフォルダーは存在するのでしょうか。

もし、その数行前にある「FILE0=GETDIR_FILES[0]」で値を代入したFILE0変数を使いたいのでしたら"D:\VBMnew\FILE0\"ではなく、

"D:\VBMnew\"+FILE0+"\"

とする必要があります。

UWSCに限らず、プログラム言語は書いてある通りにしか動きません。はやりの「忖度」とは無縁の世界です。
もしかしたら、この文字列中のFILE0はただの文字列じゃなくてさっき代入したFILE0変数のことかな、なんていう「忖度」はしてくれないのです。

No.4969 2018/01/12(Fri) 07:16:36

Re: 特定のフォルダー内の連続ファイル有無と最初のファイルの取得 / せきこうじ
●ありがとうございました。動作しました。

変数は"+変数+”で囲むということでしたか。

連日夜間のパソコン操作から開放される日も近いです。

No.4970 2018/01/12(Fri) 09:55:38

Re: 特定のフォルダー内の連続ファイル有無と最初のファイルの取得 / satocha
>変数は"+変数+”で囲むということでしたか
そうではありません。文字列を二重引用符で囲んでいるのです。「+」記号は文字列の結合を意味しています。例えば

"たくさんの"
"赤い"
"花"

という三つの文字列をつないで"たくさんの赤い花"という一つの文字列を得るとき、
UWSCでは「+」記号を使って次のように書きます。

"たくさんの" + "赤い" + "花"

花の色を変えられるように「赤い」の部分を変数にすることもできます。

color="赤い"
msgbox("たくさんの" + color + "花")
color="白い"
msgbox("たくさんの" + color + "花")

No.4975 2018/01/13(Sat) 08:18:57
SOUND関数のファイル名について / ぽこたん
SOUND関数のファイル名でフォルダの文字数が128文字を超えると指定したファイルではなくビープ音が再生されてしまいます
No.4964 2018/01/10(Wed) 22:08:58

Re: SOUND関数のファイル名について / ぽこたん
SOUND( の部分を含めて数えていたので120前後でした
ファイル名含めて128前後なのかな…?

No.4965 2018/01/10(Wed) 22:16:49

Re: SOUND関数のファイル名について / トンボ
はじめまして。

SOUND関数に限らず他の関数でもパスの文字数に制限がありそうです。
「windows パス 文字数」でググるといくつか参考情報がでます。

試していないので恐縮ですが、解決策はフォルダ名/ファイル名の変更やファイルの移動が良いでしょうね。

No.4968 2018/01/11(Thu) 23:41:17

Re: SOUND関数のファイル名について / umiumi
確認しました。
対処します。

No.4971 2018/01/12(Fri) 23:31:52

Re: SOUND関数のファイル名について / ぽこたん
回答ありがとうございました。

暫定処理として長いパスの場合GetTempPathで取得したtempフォルダにコピーし、スレッドを使用して再生→再生終了後削除…という風に修正しました

No.4974 2018/01/13(Sat) 03:48:18
Debuggerのショートカットキーについて / ぽんぽこ
いつも便利にUWSCProを使わせていただいています。
素晴らしいプログラムをありがとうございます。

Debuggerでコードをぺーストしようとすると、
システムエラー音『一般の警告音』が鳴りペーストができません。
『Ctrl+V』または『コンテキストメニュー→Pastet』のどちらでも同じようにペーストできません。

Debuggerは管理者権限ではなく通常の権限で実行しています。
他常駐プログラムを全て切っても不可能でした。
OSはWindows10 Pro x64 (バージョン1709)です。

コピー・カットは正常に動作しています。
Debuggerでペーストを使用できるようにする方法はないでしょうか。

No.4949 2018/01/08(Mon) 18:29:25

Re: Debuggerのショートカットキーについて / routa
スクリプトが実行中だからではありませんか?
停止させてから張り付けましょう。

No.4951 2018/01/09(Tue) 01:07:46

Re: Debuggerのショートカットキーについて / ぽんぽこ
お返事ありがとうございます。
スクリプトは停止中での事です。

今わかったのですが、Ctrl+V を連打すると10回に1回程度貼り付けができました。
たまに貼り付けに成功するようです。
エラー音はCtrl+Vを押すたびに鳴っています。

No.4959 2018/01/09(Tue) 18:49:37

Re: Debuggerのショートカットキーについて / umiumi
確認しました。
対処します。

No.4972 2018/01/12(Fri) 23:32:21
EXECで新しいウィンドウを開きたい / かん
EXEC("C:\Program Files (x86)\Opera\launcher.exe")

でOPERAを複数起動したいのですが、タブが増える形ではなく、
新しいウィンドウで起動するにはどのように記述すればよいのでしょうか?

No.4958 2018/01/09(Tue) 17:47:37

Re: EXECで新しいウィンドウを開きたい / 森
// OPERAを新規ウインドウで3つ起動
for i = 1 to 3
  doscmd("<#DBL>C:\Program Files (x86)\Opera\launcher.exe<#DBL> --new-window")
next

No.4966 2018/01/11(Thu) 16:01:34
アクセント付き文字の変換 / にゃんこ
アクセント付き文字が入ってあるファイル名を通常のファイル名に変換するにはどうすればいいでしょうか?

例 Ò → O

No.4941 2018/01/06(Sat) 14:43:57

Re: アクセント付き文字の変換 / しゅん
PowerShellを使ってよければ、

MSGBOX(POWERSHELL("[Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding(1250).GetBytes('Ò'))"))

ってところでしょうか。
コードページ番号(1250)は、アクセント文字の所属により変更の必要がある、、、と思われます。
1251の方が無難かな?

No.4943 2018/01/06(Sat) 16:21:10

Re: アクセント付き文字の変換 / にゃんこ
回答ありがとうございました
No.4962 2018/01/09(Tue) 21:08:31

Re: アクセント付き文字の変換 / 森
そういうのあるんじゃないか?と思って検索したら、やっぱりありました。

ファイル名にアクセント記号付きアルファベットを含むファイルをリネーム出来るソフト「Bulk Rename Utility」
http://digitalkaden.blog17.fc2.com/blog-entry-103.html

No.4963 2018/01/09(Tue) 22:54:35
UWSCで特定のドライブの最上段のフォルダだけを移動するには? / せきこうじ
●UWSCに感謝しています。
多くのサイトでファイルの移動の説明は多いが、フォルダーの移動はどのようにするのでしょうか。
特定の名称ではなく、正規表現で選びたいと思います。
<目的の動作>
D:\VBMnew内に複数のフォルダーあり、名称は毎日作業によって若干異なるが、最も最初に表示されるフォルダー(エクスプローラーでは直下の若い名称のフォルダー)だけを
D:\VSRADfinish
に移動したい。

MSDOSBATやVBSでスクリプトを作ってUWSCで開始するしかないのでしょうか。

No.4946 2018/01/08(Mon) 13:47:58

Re: UWSCで特定のドライブの最上段のフォルダだけを移動するには? / 森
なぜ&どこを正規表現にするのかが分らなかったので、正規表現は使っていませんが、これで目的の動作ができるはずです。

getdir("D:\VBMnew" , "\")  // GETDIR_FILES[0]に一番若い名前のフォルダ名がセットされる
from = "D:\VBMnew\" + GETDIR_FILES[0]    // 移動元のパス
to = "D:\VSRADfinish\" + GETDIR_FILES[0]   // 移動先のパス
doscmd("move <#DBL>" + from + "<#DBL> <#DBL>" + to + "<#DBL>") // 移動を実行(フォルダ名にスペースが含まれている時の対策として<#DBL>でパスを囲っている)

No.4948 2018/01/08(Mon) 15:53:30

Re: UWSCで特定のドライブの最上段のフォルダだけを移動するには? / しろまさ
DosCmd("dir D:\VBMnew /OGN /AD-H") でリスト取得、正規表現で絞り、move等で移動。

GetDir後の GETDIR_FILES を Joinして正規表現する手も有り(上に比べて遅い)

No.4952 2018/01/09(Tue) 08:00:10

Re: UWSCで特定のドライブの最上段のフォルダだけを移動するには? / stuncloud
単純なパターンなら * と ? のワイルドカードが使えるのでそちらのほうが早いかも

getdir("D:\VBMnew", "\*hoge*") // hogeを含むフォルダのみ取得

No.4955 2018/01/09(Tue) 12:03:37

Re: UWSCで特定のドライブの最上段のフォルダだけを移動するには? / せきこうじ
●みなさんありがとうございました。

森さんの方法でうまく動作しました。(現在他は試しておりません)
いままで低レベル記録でだらだら行っていましたが一瞬で移動しました。

今後ともこの掲示板にはお世話になりそうです。よろしくお願いします。

No.4957 2018/01/09(Tue) 12:52:16

Re: UWSCで特定のドライブの最上段のフォルダだけを移動するには? / せきこうじ
●また障害に当たりました。移動が終了しFolderがない時に警告が出ます。
警告は
変数:GETDIR_FILES 配列をオーバーしています
2行目:from = "D:\VBMnew\" + GETDIR_FILES[0]

そこで考えたのはIFBとFOPENでフォルダーの有無で分岐させる様にしたのですが、
やはり同様の警告あります。

IFB FOPEN("D:\VBMnew\" , F_EXISTS)
getdir("D:\VBMnew" , "\")  // GETDIR_FILES[0]に一番若い名前のフォルダ名がセットされる
from = "D:\VBMnew\" + GETDIR_FILES[0]    // 移動元のパス
to = "D:\VSRADfinish\" + GETDIR_FILES[0]   // 移動先のパス
doscmd("move <#DBL>" + from + "<#DBL> <#DBL>" + to + "<#DBL>") // 移動を実行(フォルダ名にスペースが含まれている時の対策として<#DBL>でパスを囲っている)
ELSE
ENDIF

以上のどこに問題があるでしょうか。
どなたかまだ見ていたら宜しくお願いします

No.4960 2018/01/09(Tue) 19:04:22

Re: UWSCで特定のドライブの最上段のフォルダだけを移動するには? / せきこうじ
●解決しました。
========
NUM=GETDIR("D:\VBMnew","\")
IFB NUM>0
getdir("D:\VBMnew" , "\")  // GETDIR_FILES[0]に一番若い名前のフォルダ名がセットされる
from = "D:\VBMnew\" + GETDIR_FILES[0]    // 移動元のパス
to = "D:\VSRADfinish\" + GETDIR_FILES[0]   // 移動先のパス
doscmd("move <#DBL>" + from + "<#DBL> <#DBL>" + to + "<#DBL>") // 移動を実行(フォルダ名にスペースが含まれている時の対策として<#DBL>でパスを囲っている)
ELSE
ENDIF
=========

No.4961 2018/01/09(Tue) 21:02:44
ウェブ内容の読み込み / 三枚肉
下記スクリプト、ウェブの内容を取得して表示するだけの物です。
以前は使えていたんですが久々に実行してみたら

COM_Error:例外が発生しました。
13行目:o.send()

というエラーメッセージが出てしまいます。どなたか対処法をご存じないでしょうか?


OS
エディション  Windows 10 Pro
バージョン   1703
OSビルド    15063.850

IE
バージョン   11.850.15063.0
更新バージョン 11.0,50

UWSC Pro ver 5.3.0.2

//----------------------------------------------

wks=web("https://www.google.com")
print wks

//----------------------------------------------

function web(str)

o = CREATEOLEOBJ("MSXML2.XMLhttp")

o.open("GET", str, False)
o.send()
str = o.responseBody
str = DECODE(str, CODE_BYTEARRAY)

result = str

fend

//----------------------------------------------

No.4950 2018/01/09(Tue) 00:42:23

Re: ウェブ内容の読み込み / stuncloud
なんでしょう、www.google.co.jpにリダイレクトしてるからですかね?
MSXML2.XMLhttpはリダイレクトもしてくれるという認識でしたがドメイン変わるのがまずいのかな

// URLを変更したら問題なし
wks=web("https://www.google.co.jp")

// WinHttpRequestオブジェクトだったら問題なし
o = CREATEOLEOBJ("WinHttp.WinHttpRequest.5.1")

No.4953 2018/01/09(Tue) 11:45:15

Re: ウェブ内容の読み込み / stuncloud
ProgIdを WinHttp.WinHttpRequest.5.1 にしたのは僕の環境だと WinHttp.WinHttpRequest がなかったからです
試す場合はご利用の環境に合わせてください
(HKEY_CLASSES_ROOTのWinHttpから始まるキーを確認してください)

No.4954 2018/01/09(Tue) 11:56:16

Re: ウェブ内容の読み込み / 三枚肉
stuncloudさん、ありがとうございます。該当部分を

o = CREATEOLEOBJ("WinHttp.WinHttpRequest.5.1")

に差し替えただけで問題なく動作しました。
Win10やIEのアップデートで動作が変わってしまったのかもしれませんね。

今まで作ったスクリプトもこの部分の変更だけですみそうです。本当に助かりました。
ありがとうございました!

No.4956 2018/01/09(Tue) 12:35:02


 過去ログ(〜2017/08/24)・検索ツール


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