Hitachi

JP1 Version 12 JP1/Script(Windows(R)用)


10.3 スクリプト制御インタフェースの記述例

スクリプト制御インタフェースの記述例を次に示します。

<例>

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "sthapi.h"
 
BOOL    TerminateScript ( LPCSTR lpszNetName, LPCSTR lpszFileName, UINT uProcessID )
{
    HKEY            hKey;
    LPCSTR          subKey = "SOFTWARE\\Hitachi\\JP1/Script\\PathName";
    char              valueName[32];
    char              value[_MAX_PATH];
    DWORD          valueSize = sizeof ( value ) ;
    HINSTANCE      hAPIInstance;
    tSPTHOpen       pSPTHOpen;
    tSPTHClose       pSPTHClose;
    tSPTHTerminate   pSPTHTerminate;
    HANDLE          hScript;
 
    // レジストリオープン
    if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, subKey, 0, KEY_QUERY_VALUE, &hKey ) != ERROR_SUCCESS )
    {
        // エラー処理
        return ( FALSE ) ;
    }
 
    // "SPTHL.DLL"のパスを取得
    strcpy ( valueName, "Path01" ) ;
    if ( RegQueryValueEx ( hKey, valueName, 0, NULL, ( LPBYTE ) value, &valueSize ) != ERROR_SUCCESS)
    {
        // エラー処理
        return ( FALSE ) ;
    }
 
    // "SPTHL.DLL"をロード
    strcat ( value, "\\SPTHL.DLL" ) ;
    hAPIInstance = LoadLibraryEx (  value, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ) ;
    if ( hAPIInstance == NULL )
    {
        // エラー処理
        return ( FALSE ) ;
    }
 
    // 各関数のエントリーポイントを取得
    pSPTHOpen      = ( tSPTHOpen )GetProcAddress ( hAPIInstance, "SPTHOpen" ) ;
    pSPTHClose     = ( tSPTHClose ) GetProcAddress ( hAPIInstance, "SPTHClose" ) ;
    pSPTHTerminate = ( tSPTHTerminate ) GetProcAddress ( hAPIInstance, "SPTHTerminate" ) ;
 
    // オープン
    if ( pSPTHOpen ( lpszNetName, NULL, &hScript ) == FALSE )
    {
        FreeLibrary ( hAPIInstance ) ;
        return ( FALSE ) ;
    }
 
    // スクリプト実行の強制終了
    if (pSPTHTerminate ( hScript, lpszFileName, uProcessID, SPTH_TERM_CHILD ) == FALSE )
    {
        pSPTHClose ( hScript ) ;
        FreeLibrary ( hAPIInstance );
        return ( FALSE );
    }
 
    // クローズ
    pSPTHClose ( hScript ) ;
 
    // APIのインスタンスハンドルを解放する
    FreeLibrary ( hAPIInstance ) ;
 
    return ( TRUE ) ;
}