最新のPHPニュース

PHPとWindowsでできる5つのクール?なサンプル

2007年06月05日

画像

Jaslabsにて、PHPとWindowsを使ってできる5つのクール?なサンプルスクリプトが紹介されています。

著者のJustin Silverton氏曰く、PHPの多くのサンプルはLinuxまたはUNIX上で動作するようにデザインされているのでWindows環境で動作する面白いサンプルを用意したそうです。

紹介されているサンプルスクリプトは、以下の5つです。

CD-ROMのイジェクト

CD-ROMをイジェクトします。

//Windows Media Playerのインスタンスを作成
$mp = new COM("WMPlayer.OCX");
//ドライブリストの1番目のCD-ROMをイジェクト
$mp->cdromcollection->item(0)->eject();

レジストリの読み書き

Windowsの設定が保存されているレジストリを読み書きします。

function registry_read($folder, $key)
{
$WshShell = new COM("WScript.Shell");
 
$registry = "HKEY_LOCAL_MACHINE\SOFTWARE\\" . $folder . "\\" . $key;
$result = $WshShell->RegRead($registry);
 
return($result);
}
 
$key = registry_read("RegisteredApplications","Firefox");

作成する関数registry_readには引数が二つあり、それぞれフォルダ名とキーになります。

また、レジストリへの書き込みは以下のようになります。

function registry_write($folder, $key, $value,$type="REG_SZ")
{
$WshShell = new COM("WScript.Shell");
 
$registry = "HKEY_LOCAL_MACHINE\SOFTWARE\\" . $folder . "\\" . $key;
$result = $WshShell->RegRead($registry);
$result = $WshShell->RegWrite($registry,$value, $type);
 
return($result);
}

このregistry_write関数の引数は4つあり、フォルダ名とキー、値と種類になります。

PHPスクリプトをWindowsのサービスとして登録・解除

このサンプルではPHPスクリプトをWindowsのサービスとして登録します。

# サービスとして登録
 
win32_create_service(array(
’service’ => ‘myservice’, # the name of your service
‘display’ => ’sample dummy PHP service’, # description
‘params’ => ‘c:\path\to\script.php run’, # path to the script and parameters
));
 
# サービスの解除
 
win32_delete_service(’myservice’);
 
# サービスとしてコードを実行
 
if ($argv[1] == 'run') {
win32_start_service_ctrl_dispatcher('myservice');
 
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
# ここにコードを記述する
# 一般的なルールとしてループ処理30秒未満で
}
}
 

注意する点として、このサンプルではwin32service関数を使うためその拡張モジュールが必要になります。前もってphp_win32service.dllを準備してphp.iniなりに追加しておく必要があります。

印刷

本来であればWindows上で印刷するまでのサンプルと期待したのですが、ネットワーク上のプリンタに接続するだけのようです。

このサンプルでプリンタ関数を使用するため前もってphp_printer.dllを有効にしておいてください。

#ネットワーク上のプリンタを開くため、ホスト・プリンタ名を整形
function getPrinter($host,$SharedPrinterName) {
return “\\\\”.$host.”\\”.$SharedPrinterName;
}
 
#プリンタを開く
$handle = printer_open(getPrinter(”my computer 2″,”my printer”));
 
#ここに印刷のためのコードを記述します
#必要な関数はhttp://us2.php.net/printerを参照
 
# *NIXの場合は以下のようなコード
 
function lpr($string,$printer) {
$prn=(isset($printer) && strlen($printer))?”$printer”:C_DEFAULTPRN ;
$CMDLINE=”lpr -P $printer “;
$pipe=popen($CMDLINE” , ‘w’ );
if (!$pipe) {print “pipe failed.”; return “”; }
fputs($pipe,$string);
pclose($pipe);
}

現在のシステムのプロセス一覧表示

このサンプルでは現在実行しているプロセスの一覧を表示します。

win32ps関数を使用しているので、前もってphp_win32ps.dllを有効にしておく必要があります。

# 現在システムで実行している全てのプロセスのリスト
 
print_r(win32_ps_list_procs());
 
# メモリ使用量の統計情報
print_r(win32_ps_stat_mem());
 
# プロセスの統計情報
print_r(win32_ps_stat_proc(int processid));
 

いかがでしょうか。印刷に関するサンプルは物足りなさを感じますが、ものによっては、もしかすると何かに役立つことがあるかもしれません。

関連リンク

この記事へのトラックバックURL