次の例は、Windows のシステム設定が変更された場合に対処する、MAXScript イベント ハンドラを登録する手順を示したものです。
コード:
|
--First we need the SystemEvents DotNet Class:
c = dotNetClass "Microsoft.Win32.SystemEvents"
dotNetClass:Microsoft.Win32.SystemEvents
--Then we get a list of all available events:
showevents c
[static] DisplaySettingsChanged <System.Object>sender <System.EventArgs>e = ( ... )
[static] DisplaySettingsChanging <System.Object>sender <System.EventArgs>e = ( ... )
[static] EventsThreadShutdown <System.Object>sender <System.EventArgs>e = ( ... )
[static] InstalledFontsChanged <System.Object>sender <System.EventArgs>e = ( ... )
[static] LowMemory <System.Object>sender <System.EventArgs>e = ( ... )
[static] PaletteChanged <System.Object>sender <System.EventArgs>e = ( ... )
[static] PowerModeChanged <System.Object>sender <Microsoft.Win32.PowerModeChangedEventArgs>e = ( ... )
[static] SessionEnded <System.Object>sender <Microsoft.Win32.SessionEndedEventArgs>e = ( ... )
[static] SessionEnding <System.Object>sender <Microsoft.Win32.SessionEndingEventArgs>e = ( ... )
[static] SessionSwitch <System.Object>sender <Microsoft.Win32.SessionSwitchEventArgs>e = ( ... )
[static] TimeChanged <System.Object>sender <System.EventArgs>e = ( ... )
[static] TimerElapsed <System.Object>sender <Microsoft.Win32.TimerElapsedEventArgs>e = ( ... )
[static] UserPreferenceChanged <System.Object>sender <Microsoft.Win32.UserPreferenceChangedEventArgs>e = ( ... )
[static] UserPreferenceChanging <System.Object>sender <Microsoft.Win32.UserPreferenceChangingEventArgs>e = ( ... )
true
--We define a global function to be called by the event handler:
fn TimeChanged a1 a2 = format "TimeChanged callback: % : %\n" a1 a2
TimeChanged()
--Finally we add the Event Handler for the event "TimeChanged":
dotnet.addeventhandler c "TimeChanged" TimeChanged
OK
|
これで、Microsoft Windows の[日付と時刻](Date and Time)プロパティを開き、秒数のみを変更(3ds Maxのライセンスに関する問題を回避するために、日付を大幅に変更しないようにしましょう)して変更を適用すると、登録した MAXScript 関数が呼び出され、リスナに出力されます。
TimeChanged callback: dotNetObject:Microsoft.Win32.SystemEvents : dotNetObject:System.EventArgs
イベント リストからわかるように、ユーザはイベント ハンドラを登録することによって、表示の設定が変更されたり、パレットやフォントなどが変更されたりした場合に通知を受けることができます。