ASP のテストで、同時最大セッション数を超えるとエラー表示する、みたいな項目があったが、最大セッション数分手でブラウザを起動するのが面倒だった。セッション数だけ稼げれば別にブラウザは何でも良かったので、IE でいいやって WSH スクリプトを作成。
// NavMaxSess.js
var MAX_SESSION = 100;
for ( var i = 0; i < MAX_SESSION; i++ ) {
var oIE = WScript.CreateObject( "InternetExplorer.Application" );
oIE.Visible = true;
oIE.Navigate2( "http://aspserver/target.asp" );
}
小品ですが、結構重宝してます。
サービスプログラムのデバッグがしたくて、 ServiceMain と、Handler 関数をエクスポートしてみた。
// MyService.def
EXPORTS
ServiceMain
Handler
さらに、テストプロを書いてみる
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#define MODULE_NAME "MyService.exe"
#define FUNCNAME_MAIN "ServiceMain"
#define FUNCNAME_HANDLER "Handler"
int main(
int argc,
char **argv )
{
HMODULE hModule = NULL;
char szCurrent[MAX_PATH];
char szModule[MAX_PATH];
DWORD dwRet = 0;
LPSERVICE_MAIN_FUNCTION lpfnServiceMain = NULL;
LPHANDLER_FUNCTION lpfnHandler = NULL;
ZeroMemory( szCurrent, sizeof szCurrent );
dwRet = GetCurrentDirectory( sizeof szCurrent, szCurrent );
if ( !dwRet ) {
fprintf( stderr, "GetCurrentDirectory err -->(%d)\n", GetLastError() );
}
else {
ZeroMemory( szModule, sizeof szModule );
wsprintf( szModule, "%s\\%s", szCurrent, MODULE_NAME );
hModule = LoadLibrary( szModule );
if ( !hModule ) {
fprintf( stderr, "LoadLibrary err -->(%d)\n", GetLastError() );
}
else {
lpfnServiceMain = (LPSERVICE_MAIN_FUNCTION)GetProcAddress( hModule, FUNCNAME_MAIN );
if ( !lpfnServiceMain ) {
fprintf( stderr, "GetProcAddress(ServiceMain) err -->(%d)\n", GetLastError() );
}
else {
lpfnHandler = (LPHANDLER_FUNCTION)GetProcAddress( hModule, FUNCNAME_HANDLER );
if ( !lpfnHandler ) {
fprintf( stderr, "GetProcAddress(Handler) err -->(%d)\n", GetLastError() );
}
else {
// とりあえず Handler をコールしてみた
lpfnHandler( SERVICE_CONTROL_CONTINUE );
}
}
FreeLibrary( hModule );
}
}
return 0;
}
結果は・・・呼び出せた。そんで動けば面白かったんだけど、サービスモジュール側でログ出力の処理がアクセスヴァイオレーションになってしまった。まあ、そううまくはいかないよね。一応、失敗談として。
MTBlogTimes のサイトに書いてある、月ごとのファイル名で生成する方法ですが、実際にはうまくいかないんだよね。あれを真に受けて悩んだ人も多いのでは。で、ぐぐってみたらMTTagInvoke を MTBlogTimes に使う というステキな Tips を見つけた。早速、 Date-Based Archive に次のように追加して Rebuild した。
<!-- BlogTimes -->
<MTTagInvoke tag_name="MTBlogTimes" fillcolor="#999999" textcolor="#999999" linecolor="#ffffff" bordercolor="#ffffff" width="170" height="12" save_dir="images" show_text="on">
<MTTagAttribute name="month"><$MTArchiveDate format="%Y%m"$></MTTagAttribute>
<MTTagAttribute name="name"><$MTArchiveDate format="blogtimes-%Y-%b"$></MTTagAttribute>
<MTTagContent><a href="http://nilesh.org/mt/blogtimes/" target="_blank"><img src="<$MTBlogTimesFileURL$>" width="<$MTBlogTimesWidth$>" height="<$MTBlogTimesHeight$>" border="0" alt="B L O G T I M E S" title="B L O G T I M E S" /></a></MTTagContent>
</MTTagInvoke>
出力結果は月別アーカイブ参照。