[ 掲示板に戻る ]

過去ログ閲覧モード

Uws2Exeでexe化したファイルバージョンを取得する / hardLv76
いつも便利に使わせて頂いております。初めて質問致します。
タイトルの件、例えば UWSC.exeのバージョンを調べようとしたとき、

***** PowerShell実行 ここから *****
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS C:\> $(Get-ItemProperty D:\uwsc\UWSC.exe).VersionInfo
ProductVersion   FileVersion     FileName
--------------  -----------   --------
5.0.3.0         5.0.3.0       D:\uwsc\UWSC.exe
***** ここまで *****

といったコマンドにて上記のような結果を返すことを確認しています。

これをUws2Exeを使用して UWSCファイル[hogehoge.uws]を
"D:\uwsc\hogehoge.exe"としてバージョン情報を設定した上でexe化した場合、

$(Get-ItemProperty D:\uwsc\hogehoge.exe).VersionInfo

を実行すると、ProductVersion、FileVersion は何も表示されませんでした。
プロパティ等で確認すると、製品バージョンは空欄ですが、
ファイルバージョンの設定は確認できております。

勿論、バージョン取得だけであれば、exe化するプログラムソースに
バージョン記述などして、その情報を返す仕掛けを用意してあげて、
そのお約束に基づいて上位から取得してもらうことは可能ですが、
今回はあえて、Uws2Exeで設定したバージョン取得は出来るか否かの
観点でご質問させて頂きました。

私が知らないだけですので、他にバージョン取得する方法が
あるようであればご教授頂けたら幸いです。
もしくは次期バージョン等で配慮頂けると、今後助かります。
よろしくお願い致します。

No.1362 2015/06/19(Fri) 12:41:28

Re: Uws2Exeでexe化したファイルバージョンを取得する / stuncloud
FSOで取れました

--------------------------------------
//バージョン情報
//_EXEVERSION = 1.2.3.4
//_FILEDESCRIPTION = バージョン取得テスト
//_PRODUCTNAME = バージョン取得テスト
//_LEGALCOPYRIGHT = stuncloud

with createoleobj("Scripting.FileSystemObject")
 exeVersion = .GetFileVersion(GET_UWSC_NAME)
endwith
msgbox(exeVersion) // 1.2.3.4
--------------------------------------

No.1363 2015/06/19(Fri) 13:45:12

Re: Uws2Exeでexe化したファイルバージョンを取得する / hardLv76
stuncloud 様
PowerShellに固執してfsoの存在を失念してました。
ご回答頂きありがとうございました。

PowerShellで取得しにいくバージョン情報(プロパティそのもの?)は
ファイルシステムとは別物(別の参照先)ということなんですね。
オブジェクトが絡むからかもですが。一つ勉強になりました。

No.1365 2015/06/19(Fri) 14:51:50

Re: Uws2Exeでexe化したファイルバージョンを取得する / stuncloud
PowerShellではこんな感じで!
https://stuncloud.wordpress.com/2015/06/19/powershell_get_uwsc_exe_version/
まぁでもPowerShell()関数だと遅いのでFSOがいいと思います

No.1367 2015/06/19(Fri) 17:57:06

Re: Uws2Exeでexe化したファイルバージョンを取得する / hardLv76
stuncloud 様
PowerShell版についてもご回答いただきありがとうございます。
しかも記事にして頂いて恐縮です (^^;

ご指摘のように、PowerShellということもあり速度という意味では
少し難ありそうですが、頑張ればPowerShellでも希望が持てる
ということはよく理解できました(笑)
勉強させていただきありがとうございました。m(_ _)m

No.1368 2015/06/19(Fri) 19:48:50
解決しました。 / Hayato
REPLACE(文字列,CHR(10),"")で解決しました。

大変お騒がせしました。

No.1361 2015/06/19(Fri) 10:31:44
改行文字について / Hayato
初めて質問させて頂きます。

uwscでは、\0Aは改行文字として認識されないのですか?
例えば、文章中に\0Aが埋まってしまっているとして、
REPLACE(文字列,"<#CR>","")では\0Aを取り除けないのでしょうか?
uwscのソースコードを実行する時は、\0Aが改行文字で認識されるようです。

No.1360 2015/06/19(Fri) 10:19:52
createformでのIEショートカットを無効にしたい / トリビア
いつも利用させて頂いております。
さてcreateformで質問なのですが、IEのショートカットを無効にできないでしょうか。
例えばCtrl+OやCtrl+P、Ctrl+「+」、Ctrl+「-」などです。
そもそも難しいでしょうか。ご教示くださいませ。

No.1352 2015/06/15(Mon) 17:19:15

Re: createformでのIEショートカットを無効にしたい / umiumi
SETHOTKEY関数を利用して潰す。
SETHOTKEY(VK_ADD, MOD_CONTROL, "NoneFuc") // Ctrl+「+」
SETHOTKEY(VK_SUBTRACT, MOD_CONTROL, "NoneFuc") // Ctrl+「-」

Procedure NoneFuc()
Fend

No.1353 2015/06/16(Tue) 01:22:00

Re: createformでのIEショートカットを無効にしたい / トリビア
umiumiさん!
いつも便利に使わせて頂いております。

IEショートカットの件、ありがとうございます。
そのように対応致します!

No.1354 2015/06/16(Tue) 13:25:28
このような関係を配列化してソートするには? / ツモリ
"text_A"は"20"
"text_B"は"30"
"text_C"は"10"

このような関係があったとして
数値の部分を昇順にして配列化するには
どうすればよいでしょうか?

配列名[0]→text_C
配列名[1]→text_A
配列名[2]→text_B

イメージとしてはこのように
使用したいと思っていますが、
数値を軸にして対象のtext_○が引張り出せれば
どのような形でも問題ありません。

配列関係の理解が進んでないので
おかしな質問になっているかも知れませんが
ご教授いただけると幸いです。

No.1345 2015/06/10(Wed) 17:23:25

Re: このような関係を配列化してソートするには? / stuncloud
qsort関数でソートが出来ます
qsort関数は基準となる配列のソート順に合わせて別の配列の順序も入れ替えられます

--------------------------------------
// ソートしたい配列と対応する数値の配列を用意
dim arrText[2] = "text_A", "text_B", "text_C"
dim arrNum[2] = 20, 30, 10

qsort(arrNum, QSRT_A, arrText) // 数値の配列を昇順ソートし、その順番でソートしたい配列の順序も入れ替える

for value in arrText
 print value
next

// 結果
// text_C
// text_A
// text_B
--------------------------------------

または、対応する数値が一意であるのであることが確実なのであれば連想配列が楽です

--------------------------------------
hashtbl hash = HASH_SORT // このように指定すると連想配列をキー順で勝手にソートしてくれます

// 数値をキーとして文字列を代入していく
hash[20] = "text_A"
hash[30] = "text_B"
hash[10] = "text_C"

for key in hash
 print hash[key]
next

// 結果
// text_C
// text_A
// text_B
--------------------------------------

No.1346 2015/06/10(Wed) 18:34:35

Re: このような関係を配列化してソートするには? / ツモリ
stuncloud様。
これで今後はスマートにコードが書けそうです。
大変分かりやすいご解説ありがとうございました!

No.1347 2015/06/10(Wed) 18:55:09

Re: このような関係を配列化してソートするには? / しゅん
既に解決済みですが、検索されたときのために、キーが重複した際の安定ソートの例を書いてみました。
http://d.hatena.ne.jp/junjun777/20150611/uwsc_stable_sort

No.1351 2015/06/11(Thu) 23:17:24
おためし期間の設定 / ミジンコ
いつも楽しくスクリプトさせていただいております。
むかし雑誌などに1ヶ月だけは利用できますというようなお試し期間つきのCDなどが
ありましたがUWSCのスクリプトでもそういうのはできるのでしょうか?
gettimeてきなかんじでイケそうな気もするのですが何分生まれたてのミジンコなためすいません。。。

No.1348 2015/06/11(Thu) 11:23:00

Re: おためし期間の設定 / ある
できます。やり方は色々あると思います。
gettimeの引数は1が1日分です。
gettime(10)なら10日後。
ifやexitexitを使うのがスタンダードかなと思います。
一度ご自身でgettimeやifを使った繰り返しなどいじって、テストしてみてはどうでしょう?
内容的には初心者でも充分組めるレベルだと思います。

No.1350 2015/06/11(Thu) 15:37:38
指定時刻まで待機させたいのですが / たか
初心者のため連続投稿、誠にすみません。

過去の質問投稿に「えありさん」が答えていられました。
【当日】指定時刻までスクリプトを停止するコードをコピペして使っていたのですが、せっかく
UWSCという自動化ソフトを使いながら、毎日、時刻設定するのが面倒になってきました。

「えありさん」が過去のページで答えていられましたスクリプトは下記の通りです。

>> 再開時刻 = Input(GetTime(), G_TIME_HH2 +":"+ G_TIME_NN2 +":"+ G_TIME_SS2)
>> // _Break という関数に 2015/05/2711:14:55 のように開始したい日時を送る
>> _Break(G_TIME_YY4 +"/"+ G_TIME_MM2 +"/"+ G_TIME_DD2 + 再開時刻)
>> MsgBox("時間ですよ")
>> 
>> Procedure _Break(再開時刻)
>>  Repeat
>>   GetTime( ); Now = G_TIME_HH2 +":"+ G_TIME_NN2 +":"+ G_TIME_SS2 //*
>>   GetTime(0, 再開時刻); Wait = G_TIME_HH2 +":"+ G_TIME_NN2 +":"+ G_TIME_SS2 //*
>>   Fukidasi(Now + "<#CR>" + Wait); Sleep(1) //* この行含め上記3行は動作に不要 //*
>>  Until GetTime(0, 再開時刻) < GetTime()
>> FEnd


毎日、実行させる時刻は【当日】の同じ時刻なので、スクリプト内に直接、12:00:00 などと
記載して実行させるにはどのようにしたら良いのでしょうか?

ヘルプを見ながら、1行目の
再開時刻 = Input(GetTime(), G_TIME_HH2 +":"+ G_TIME_NN2 +":"+ G_TIME_SS2) を
再開時刻 = GetTime(,12:00:00) とか
再開時刻 = GetTime(), 12:00:00 や
開始時刻 = GetTime(,"12:00:00") など、その他色々

と色々やってみたのですが、いずれもうまく動きません。
【当日の12:00:00】は毎日固定なので、スクリプト内に直接書き込みたいと思います。

どうやったら、うまく動くのかアドバイスを頂ければを思います
誠に申し訳ございませんが、宜しくお願い致します。

No.1339 2015/06/08(Mon) 01:55:43

Re: 指定時刻まで待機させたいのですが / Liners
> スクリプト内に直接、12:00:00 などと記載して実行させるにはどのようにしたら良いのでしょうか?
GetTime(); 再開時刻 = "12:00:00"

考察:
 よく見かけるスクリプトですが、指定時間を過ぎていると待機しません。
 繰り返し使うのなら、指定時間を過ぎているなら次の日まで待機してほしい所です。

 考え方を少し変えて、指定時間までSleepすると考えるなら極端に単純化出来ます。下記に例を挙げます。

指定時刻 = GetTime(0.5); //指定時刻の秒数を86400(1日)で割る "12:00:00"の場合
現在時刻 = Gettime()
待機秒数 = 指定時刻 - 現在時刻 + (指定時刻 < 現在時刻) * 86400
Fukidasi("指定時刻まで " + 待機秒数 + " 秒")
Sleep(待機秒数)
MsgBox("時間ですよ")

// 実際には Sleep(GetTime(0.5) - GetTime() + (GetTime(0.5) < GetTime()) * 86400) と一行程度ですね♪

No.1340 2015/06/08(Mon) 03:02:27

Re: 指定時刻まで待機させたいのですが / たか
Linersさん、たびたびすみません。

ありがとうございます。
教えて頂いた通り開始時刻を素直に、"21:00:00"とかに直に記述しますと無事に動作します。
(当然、過去の時刻でなくて、将来の時刻です)

確かに、再開時刻を過ぎていると待機されずにすぐに実行されますね。
再開時刻を変数に代入させて、変数を参照させると不思議なことにすぐに実行されてしまいます。

Sleep(GetTime(0.5) - GetTime() + (GetTime(0.5) < GetTime()) * 86400)
は、指定時刻を得てから、現在時刻よりも大きかったら待機して実行ですよね。
理論は分かるのですが、12:00なので0.5になると思うのですが、仮にキリの悪い、午前9:00とか
でしたらどうなるのでしょうか?

前記の場合、"12:00:00"を再開時刻という変数に代入していますので、更に12:00:00という変数
を作って、時刻を代入することは無理なのでしょうか?
何か、せっかく回答を頂いたにもかかわらず追加の質問になってしまいまして申し訳ございません。

自分でもいろいろと試しているのですが、初心者のためにうまくいかないうえに、うまい説明が
できなくて申し訳ございません。

No.1341 2015/06/08(Mon) 21:17:29

Re: 指定時刻まで待機させたいのですが / えあり
可用性を含めて関数を呼び出す形にしたのですが
もうこれでいいんじゃないかな

WaitHour = 19 //時間
WaitMinute = 46 //分
WaitSecond = 40 //秒

Repeat
 GetTime()
 Fukidasi("現在[ " + G_TIME_HH2 +":"+ G_TIME_NN2 +":"+ G_TIME_SS2 +"]"+_
 "<#CR>指定[ "+ FORMAT(WaitHour, 2) +":"+ FORMAT(WaitMinute, 2) +":"+ FORMAT(WaitSecond, 2) +"]")
 Sleep(0.3)
Until WaitHour * 3600 + WaitMinute * 60 + WaitSecond = G_TIME_HH * 3600 + G_TIME_NN * 60 + G_TIME_SS



MsgBox("時間ですよ")

No.1343 2015/06/09(Tue) 19:50:48

Re: 指定時刻まで待機させたいのですが / Liners
> 仮にキリの悪い、午前9:00とかでしたらどうなるのでしょうか?
9 * 3600 / 86400 = 0.375

> 更に12:00:00という変数を作って、時刻を代入することは無理なのでしょうか?
12:00:00という変数は作れません。

察するに 待機時刻("09:00:00") の様な関数で面倒な計算等、その全てを押し付けて実行したいのでは?
もちろん、現在時刻よりも大きかったら待機して実行し、PCに負荷のかからないSleep方式。

なお、指定時間に実行させるには、基準時刻が必要でした。訂正を含め、上記関数を作成してみました。


待機時刻("09:00:00")
MsgBox("時間ですよ")

Procedure 待機時刻(指定時刻)
  現在時刻 = gettime(); 基準日= G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " "; 基準時刻 = 基準日 + "00:00:00"
  日数換算 = (gettime(0, 基準日 + 指定時刻) - gettime(0, 基準時刻)) / 86400
  Sleep(GetTime(日数換算, 基準時刻) - 現在時刻 + (GetTime(日数換算, 基準時刻) < 現在時刻) * 86400)
FEnd

No.1344 2015/06/09(Tue) 21:26:34

Re: 指定時刻まで待機させたいのですが / たか
えありさん、Linersさん

すみません返信が遅くなりまして、
お二方とも素晴らしいですね。

作れない(12:00:00)変数を作って一生懸命動かそうとしてもエラーは当たり前ですね。
SleepがPCに負荷がかからないなど勉強になりました。

これからスクリプトの中に組み込んで試してみたいと思います。
どうも有り難うございました。
今後とも宜しくお願い致します。

No.1349 2015/06/11(Thu) 12:08:27
パス上に「!」を含むとエラーとなる / んだ
お世話になります。
読み込むUWSファイルのパスが「D:\!test\UWSC\test.uws」のように「!」を含んでいると、再生時にSyntaxErrorが発生するようです。

No.1335 2015/06/07(Sun) 14:18:04

Re: パス上に「!」を含むとエラーとなる / umiumi
確認しました。
対処します。

No.1342 2015/06/08(Mon) 23:08:05
PCの時刻設定をしたいのですが / たか
いつも参考にさせて頂いております。

Windowsの時刻設定の「いますぐ更新」を一発でやらせたいと思っています。

Windowsのタスクバーの「(時刻と日付が表示されている部分を)クリック」−「日付と時刻の設定の変更」−「インターネット時刻」−「設定の変更」−「今すぐ更新」−「OK」−「OK」を、UWSCで一発でやらせたいのですが、高レベル記録に設定して、自動でスクリプトを記録させた後で再生しても実行されません。

どうすれば良いのか、アドバイスを頂けないでしょうか?
宜しくお願い致します。

No.1334 2015/06/07(Sun) 14:06:07

Re: PCの時刻設定をしたいのですが / Liners
//System関連はセキュリティーの兼合いもあり結構面倒。
//調べて直接書いた方が確実。(Win8.1 x64 で確認)

Exec("control.exe /name Microsoft.DateAndTime")
id = getid("日付と時刻", "#32770", -1)
sckey(id, vk_ctrl, vk_shift, vk_tab, vk_enter)

id2 = getid("インターネット時刻設定", "#32770", -1)
sckey(id2, vk_alt, U) // 間隔を置いてもう一度実行した方が確実かも
sleep(5)
clkitem(id2, "OK")

sleep(1)
clkitem(id , "OK")

// Tips:
// control.exeの指定は昔とちがうな〜今更感(泣)
// 今回は面倒なのでショートカットキー(怠慢)
// デフォルトのNTPサーバーはエラー出まくりなのでntp.nict.jpあたりで…
// http://pc-karuma.net/windows8-datetime-ntp-update/

No.1336 2015/06/07(Sun) 18:25:32

Re: PCの時刻設定をしたいのですが / たか
Linersさん、ありがとうございました。
2回実行しているところが凄いです。
そのまま動きました、どうも有り難うございました。

No.1337 2015/06/07(Sun) 19:25:22
スケジュール設定以外で / Nagatani
お世話になります。
下記の様に、連続するスクリプトがあり、スケジュール設定しているのですが、たまにパソコン側のエラー等途中で止まった場合の対処方法です。現状はパソコンの時間を戻してスケジュールで再度実行しています。

スケジュール設定
 08:00 A.UWS
 08:20 B.UWS
 08:30 C.UWS

この場合、パソコンの時間を忘れたり、外出出来なくて困ってます。何か良い方法は無いでしょうか?
アドバイスよろしくお願いいたします!

No.1325 2015/06/05(Fri) 11:06:04

Re: スケジュール設定以外で / えあり
時間指定は処理分散(もしくはその時刻にならないと何かしらの用意ができない)のためで、
毎日一度は実行したいということでしたら

?@すぐに起動するメインのスクリプトを用意する
?Aメインスクリプト内に指定時刻を【過ぎたら】実行するように A,B,Cをコールするように記載
?BA,B,Cが起動したら、それぞれログファイルを吐き出す
?C当日のログファイルがあれば今日はもう起動しない
?D不要であれば日付が変わったら以前のログを消す

という感じでどうでしょう?

No.1327 2015/06/05(Fri) 12:13:48

Re: スケジュール設定以外で / Nagatani
えありさん、ありがとうございます!
そういえば、UWSC.INIファイルを差し替える手がありましたね!
完全なINIファイルを考えず最低限のINIファイルを挿し込み
RESTART?の直前にDosCmdを使って元に戻せば良いんですね!
そういえば、むかし自分がアドバイスしてたの忘れてました!

No.1332 2015/06/05(Fri) 21:15:39
全1170件 [ ページ : << 1 ... 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 ... 117 >> ]