WebPenguin のすべての投稿

UWSCを再起動

スケジュールで実行しているスクリプトを修正したら、記述ミスでエラーメッセージが表示されて以降のスケジュールも停止した。

スケジュール設定で、別プロセスで実行にチェックを入れておけば、エラーメッセージが出たスクリプトは、そのままで次のスケジュールが実行できる

エラーメッセージを解除するために、UWSCを再起動する

DosCmd(“uwsc_restart1.bat”) // 再起動batを実行

uwsc_restart1.batは、
@echo off
start “” “C:\ProgramData\tools\uwsc_restart2.bat”

uwsc_restart2.batは
@echo off
ping localhost -n 3 > nul
taskkill /im UWSC.exe /F /T

ping localhost -n 5 > nul
start “” C:\ProgramData\tools\uwsc.exe
exit

※UWSCの特徴として、UWSCスクリプトが終了(本体を終了も同様)させると、実行中のものも終わってしまうことがある

uwsc_restart1.batのみで、uwsc_restart2.batの内容を実行すると、taskkill 以降の処理は実行されずに、batファイルが終わってしまう

そこで、startで別にbatファイルを実行すると、uwsc_restart1.batが終わっても、uwsc_restart2.batは独立して実行されるので、うまくいく

※それぞれのスクリプトは別プロセスで実行すること

この様なBATファイルを使わなくても、UWSCには、POFF( コマンド )という便利な機能があるが、別プロセスで実行しても、該当プロセス以外は対応できない。

同一プロセスだとエラーメッセージにOKをクリックしないと停止したままなので、上記のBATファイルでの処理が必要

// UWSC再起動
POFF(P_UWSC_REEXEC)
// UWSC再起動 スクリプト再実行
POFF(P_UWSC_REEXEC,TRUE)

SOUNDで音を鳴らす時の注意

SOUND(“BEEP”)やSOUND(“音ファイル名.wav”),SOUND(“音ファイル名.mp3”)でuwscは音を鳴らせるが、デフォルトは処理終了を待たないFalseになっている

その為、次の処理でMSGBOXの様に待機コマンドが無いと、再生前にUWSC自体が終了してしまい、再生が止まるので注意

ほとんど場合、TRUE指定が必要

MSGBOXで、OKをクリックするまで、再生が続き、OKをクリックするとUWSCが終了するので、再生が止まることが確認できる例

fileName = “アラーム.wav”
SOUND(fileName)

MSGBOX(“OK”)

IISでActivePerl を利用したCGI

IISでActivePerl を利用したCGI掲示板を動作させる

ActivePerl-5.14
IIS8.5
Windows Server 2012 R2

IISマネージャでサイトを選択し、「ハンドラマッピング」を開き、「スクリプトマップの追加」を選択
以下の項目を入力する
要求パス *.cgi
実行可能ファイル参照して選択 C:\Perl\bin\perlis.dll
名前 Perl(任意)
IISを再起動する

一般に表示されている情報では、perl.exeをマッピングするが、それでは動作しなくて、perlis.dllを指定する必要があった

また、CGI表示の際にContent-type: text/htmlが上部に表示される問題は、CGIの修正で回避できた

以下の行が記載されている場所へ1行追記
print “Content-Type: text/html; charset=utf-8\n\n”;

追記した例
print “HTTP/1.1 200 OK\n”;
print “Content-Type: text/html; charset=utf-8\n\n”;

※上記をコピーすると、”が全角になるので、半角に修正が必要

ショートカットキーで操作

ショートカットキーを登録して操作できるアプリで有用

例 タスクトレイ格納を通常表示に戻して、キー登録したアプリ終了のショートカットキーを操作

ID = GETID(“Tablacus Explorer”)
IFB ID <> -1 Then
CTRLWIN(id, NORMAL)
ENDIF

ACW(GETID(“Tablacus Explorer”))

// 操作中フォルダでタイトルが変化する為か、ID指定で動作しない場合があるので、アクティブにした後で、ID0指定でキーを送る
SCKEY(0, VK_CTRL,VK_ALT,E) // ALT+CTRL+Eで終了

// SCKEY(0,VK_ALT,VK_F4) // ALT+F4キー操作で強制終了

状態が確認出来るまで繰り返す

<条件>

アプリケーションにメニュー画面が通常とコンパクトの表示があり、起動時にコンパクト設定が無い為、スタートアップでコンパクトボタンをクリックする

メニュー画面が表示されても、完全に起動するまで、操作できない

コンパクト表示に出来るまで、繰り返す

// メインメニュー表示待ち
While GETID(“メインメニュー (フル表示)”) = -1
SLEEP(1)
WEnd

// 画像ボタンの為、アドレス指定でコンパクトクリック
// アドレスは記録モードで操作して、調べる
ACW(GETID(“メインメニュー (フル表示)”)
BTN(LEFT,CLICK,800,150,0)

// 実際には、操作可能になるタイミングが不定でSLEEPを入れて繰り返しが必要

// コンパクト表示するまで繰り返し タイトルの違いで識別
// コンパクト表示では、”メインメニュー”にタイトルが変化する
While STATUS( GETID(“メインメニュー”), ST_TITLE ) <> “メインメニュー”
ACW”メインメニュー (フル表示)”)
BTN(LEFT,CLICK,800,150,0)
SLEEP(5)
WEnd

空白を含むパスを記述

<#DBL>記述するとダブルクォーテーションに置き換えられる

ID = GETID(“スライド”)
IFB ID <> -1 Then
DosCmd(“taskkill /F /IM <#DBL>POWERPNT.EXE<#DBL> /T”,TRUE,FALSE)
ENDIF

APP = “C:\Program Files\FastCopy\fcp.exe /cmd=sync /acl=FALSE /force_close /error_stop=FALSE /skip_empty_dir=FALSE /Exclude=<#DBL>Thumbs.db;desktop.ini;<#DBL>  <#DBL>” + “パスを記述” + “\*.ppsx<#DBL> /to=<#DBL>” + “パスを記述” + “<#DBL>”

DosCmd(APP,FALSE,FALSE) // 待つ、プロンプト非表示

表示待ちして、処理

パワーポイントスライドショーファイルを起動して、表示されたら、画面をアクティブ(前面表示)させる

デジタルサイネージ表示を切り替えるのに、スライドショーファイル起動に時間がかかるので、背景をhtmlファイルで作成して、Google Chrome –start-maximizedかGoogle Chrome –kioskで表示させた

上手く、スライドショーファイルが前面表示にならない時があり、起動出来たら、アクティブにする操作ACTIVATE(TOPMOSTより、アクティブの方が安定した)

※注意 下記をコピーするとダブルクォーテーションが全角になるので半角に修正が必要

// ウィンドウ名にスライドを含むものが見つかるまで、1秒待ち
While GETID(“スライド”) = -1
SLEEP(1)
WEnd

// スライドを含むウィンドウをアクティブにして前面表示に
CTRLWIN(GETID(“スライド”),ACTIVATE)