tsystem.tpl

来自「在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己」· TPL 代码 · 共 1,165 行 · 第 1/2 页

TPL
1,165
字号
rem TSYSTEM.OPL
rem
rem Copyright (c) 1997-2001 Symbian Ltd. All rights reserved.
rem

include "system.oxh"
include "const.oph"

declare external
external tBackLightOn: 
external tSetBackLightOn:
external tSetBackLightOnTime:
external tSetBacklightBehavior:
external tIsBacklightPresent:
external tSetAutoSwitchOffBehavior:
external tSetAutoSwitchOffTime:
external tResetAutoSwitchOffTimer:
external tSwitchOff:
external tSetSoundEnabled:
external tSetSoundDriverEnabled:
external tSetKeyClickEnabled:
external tSetPointerClickEnabled:
external tSetDisplayContrast:
external tMaxDisplayContrast:

external CreateTestFile:	
external tIsReadOnly:
external tIsHidden:
external tISystem:
external tSetReadOnly:
external tSetHiddenFile:
external tSetSystemFile:
external tVolumeSize:
external tVolumeSpaceFree:
external tVolumeUniqueID:
external tMediaType:
external DeleteTestFile:

external tDisplayTaskList:
external tSetComputeMode:
external tRunApp:
external tRunExe:
external tLogonToThread:
external tTerminateCurrentProcess:
external tTerminateProcess:
external tKillCurrentProcess:
external tKillProcess:

external tMod:
external tXOR:
external tLoadRsc:
external tUnLoadRsc:
external tReadRsc:
external tReadRscLong:
external tCheckUid:
external tSetPointerGrabOn:
external tMachineName:
external tEndTask:
external tKillTask:
external tGetThreadIdFromOpenDoc:
external tGetThreadIdFromAppUid:
external tSetForeground:
external tSetBackground:
external tSetForegroundByThread:
external tSetBackgroundByThread:
external tGetNextWindowGroupName:
external tGetNextWindowId:
external tSendKeyEventToApp:
external tIrDAConnectToSend:
external tIrDAConnectToReceive:
external tIrDAWrite:
external tIrDARead$:
external tIrDAReadA:
external tIrDAWaitForDisconnect:
external tIrDADisconnect:
external tMainBatteryStatus:
external tBackupBatteryStatus:
external tCaptureKey:
external tCancelCaptureKey:
external tSetPointerCapture:
external tClaimPointerGrab:
external tOpenFileDialog:
external tCreateFileDialog:
external tSaveAsFileDialog:
external tIsExternalPowerPresent:

external tGetThreadIdFromCaption:
external tOsVersionMajor:
external tOsVersionMinor:
external tRomVersionMajor:
external tRomVersionMinor:
external tRomVersionBuild:
external tGetFileSize:
external tUniqueFilename:
external tIsPathVisible:
external tKeyClickLoud:
external tKeyClickOverridden:
external tSoundDriverEnabled:

external tBacklightTimer:
external tScreenTimer:
external tPasswordTimer:
external tSaveTimer:

external tGenericTimer:(aTimerId&)

external tRunExeCmd:
external tRunDoc:
external tOPXVersion:
external tLinkEnableWithOptions&:
external _ShowLinkConfig:

const KTestFile$="C:\TSystem.Test"

const KEmptyOwner&=6
const KBlankOwner&=2941
const KStandardDir$="c:\Documents\"
const KBookmark$="c:\Documents\"

proc main:
	global GRunAppRq&
	global GRunExeRq&
	global GTermCurrProcRq&
	global GKillCurrProcRq&

	print "Test the System.OPX"
	print "-------------------"
	print
	print "Note that this code makes assumptions about what machine the code is running on."
	print "For example it's a UK machine."
	print
	print "This may result in false failures on other machines."
	print

	tBacklightTimer:
	tScreenTimer:
	tPasswordTimer:
	tSaveTimer:

	tSetBackLightOn:
	tSetBackLightOnTime:
	tSetBacklightBehavior:
	tIsBacklightPresent:
	tSetAutoSwitchOffBehavior:
	tSetAutoSwitchOffTime:
	tResetAutoSwitchOffTimer:
	tSetSoundEnabled:
	tSetSoundDriverEnabled:
	tSetKeyClickEnabled:
	tSetPointerClickEnabled:
	tSetDisplayContrast:
	tMaxDisplayContrast:

	CreateTestFile:	
	tIsReadOnly:
	tIsHidden:
	tISystem:
	tSetReadOnly:
	tSetHiddenFile:
	tSetSystemFile:
	tVolumeSize:
	tVolumeSpaceFree:
	tVolumeUniqueID:
	tMediaType:
	DeleteTestFile:

	tDisplayTaskList:
	tSetComputeMode:
	tRunApp:
	tRunExe:
	tLogonToThread:
	tTerminateCurrentProcess:
	tTerminateProcess:
	tKillCurrentProcess:
	tKillProcess:

	tMod:
	tXOR:
	tLoadRsc:
	tUnLoadRsc:
	tReadRsc:
	tReadRscLong:
	tCheckUid:
	tSetPointerGrabOn:
	tMachineName:
	tEndTask:
	tKillTask:
	tGetThreadIdFromOpenDoc:
	tGetThreadIdFromAppUid:
	tSetForeground:
	tSetBackground:
	tSetForegroundByThread:
	tSetBackgroundByThread:
	tGetNextWindowGroupName:
	tGetNextWindowId:
	tSendKeyEventToApp:
	tIrDAConnectToSend:
	tIrDAConnectToReceive:
	tIrDAWrite:
	tIrDARead$:
	tIrDAReadA:
	tIrDAWaitForDisconnect:
	tIrDADisconnect:
	tMainBatteryStatus:
	tBackupBatteryStatus:
	tCaptureKey:
	tCancelCaptureKey:
	tSetPointerCapture:
	tClaimPointerGrab:
	tOpenFileDialog:
	tCreateFileDialog:
	tSaveAsFileDialog:
	tIsExternalPowerPresent:

	tGetThreadIdFromCaption:
	tOsVersionMajor:
	tOsVersionMinor:
	tRomVersionMajor:
	tRomVersionMinor:
	tRomVersionBuild:
	tGetFileSize:
	tUniqueFilename:
	tIsPathVisible:
	tKeyClickLoud:
	tKeyClickOverridden:
	tSoundDriverEnabled:
	get
endp

PROC CreateTestFile:
	LOCAL h%
	LOCAL test$(30)
	test$ = "This is a test file" 
	IOOPEN(h%,KTestFile$,2)
	IOWRITE(h%,ADDR(test$)+1,LEN(test$))
	IOCLOSE(h%)
ENDP

PROC DeleteTestFile:
	trap delete KTestFile$
ENDP


PROC tBacklightTimer:
	tGenericTimer:(KSyTimerBacklightTimeout&)
ENDP

PROC tScreenTimer:
	tGenericTimer:(KSyTimerScreenTimeout&)
ENDP

PROC tPasswordTimer:
	tGenericTimer:(KSyTimerPasswordTimeout&)
ENDP

PROC tSaveTimer:
	tGenericTimer:(KSyTimerSaveTimeout&)
ENDP

PROC tGenericTimer:(aTimerId&)
	LOCAL oldDuration&, newDuration&,check&
	SyGetTimer:(aTimerId&,oldDuration&)
	newDuration&=1
	SySetTimer:(aTimerId&,newDuration&)
	SyGetTimer:(aTimerId&,check&)
	if newDuration&<>check&
		RAISE 1
	endif
	newDuration&=100
	SySetTimer:(aTimerId&,newDuration&)
	SyGetTimer:(aTimerId&,check&)
	if newDuration&<>check&
		RAISE 100
	endif
	SySetTimer:(aTimerId&,oldDuration&)
ENDP


PROC tBackLightOn:
	rem Returns either -1 or 0
	rem No leaves

	rem Any Machine
	LOCAL backlightPresent&,backlightState&
	SyGetHAL&:(KSyBacklight&,backlightPresent&)
	IF backlightPresent&=KSyBacklightNone&
		RETURN 0
	ENDIF

	REM Machine has backlight, so set it on.
	SySetHAL&:(KSyBacklightState&,KSyBacklightStateOn&)
	SyGetHAL&:(KSyBacklightState&,backlightState&)
	IF backlightState&<>KSyBacklightStateOn&
		RAISE 101
	ENDIF
ENDP

PROC tSetBackLightOn:
	rem No leaves
	SySetHAL&:(KSyBacklightState&,KSyBacklightStateOn&)
ENDP


PROC tSetBackLightOnTime:
	rem Valid parameters are any positive time
	LOCAL backlightPresent&,backlightState&

	rem Any machine
	SySetTimer:(KSyTimerBacklightTimeout&,KMaxLong&)
	SySetTimer:(KSyTimerBacklightTimeout&,60)
	SySetTimer:(KSyTimerBacklightTimeout&,0)
	onerr err120::
	SySetTimer:(KSyTimerBacklightTimeout&,-1)
	raise 120
err120::
	onerr off

	rem Machines which do have backlight

	SyGetHAL&:(KSyBacklight&,backlightPresent&)
	IF backlightPresent&=KSyBacklightSupported&
		SySetTimer:(KSyTimerBacklightTimeout&,1)

		SySetHAL&:(KSyBacklightState&,KSyBacklightStateOn&)
		SyGetHAL&:(KSyBacklightState&,backlightState&)
		IF backlightState&<>KSyBacklightStateOn&
			raise 121
		endif
	endif
ENDP


PROC tSetBacklightBehavior:
	rem Valid parameters 0 for off or any value for on
	rem No leaves

	rem Any machine
	local backlightPresent&,backlightState&

	rem Machines which do have backlight
	SyGetHAL&:(KSyBacklight&,backlightPresent&)
	IF backlightPresent&=KSyBacklightSupported&
		SySetTimer:(KSyTimerBacklightTimeout&,1)
		SySetHAL&:(KSyBacklightState&,KSyBacklightStateOn&)
		SyGetHAL&:(KSyBacklightState&,backlightState&)
		IF backlightState&<>KSyBacklightStateOn&
			raise 130
		endif
	endif
ENDP

PROC tIsBacklightPresent:
	rem Returns either -1 or 0
	rem No leaves

	local result&,backlightPresent&
	result&=SyGetHAL&:(KSyBacklight&,backlightPresent&)
	IF result&
		raise 140
	ENDIF
	IF backlightPresent&=KSyBacklightSupported& OR backlightPresent&=KSyBacklightNone&
		RETURN
	ENDIF
	RAISE 141
ENDP

PROC tSetAutoSwitchOffBehavior:
	rem Valid parameters are 0,1,2
	print "To Do: SySetAutoSwitchOffBehavior needs testing in interactive test"
	onerr err150::
	SySetTimer:(KSyTimerBacklightTimeout&,-1)
	raise 150
err150::
	onerr err151::
	SySetTimer:(KSyTimerBacklightTimeout&,3)
	raise 151
err151::
	onerr off
ENDP



PROC tSwitchOff:
	print "To Do: SySwithcOff needs testing in interactive test"
ENDP

PROC tSetSoundEnabled:
	rem Valid paramenters are 0 for off or any other value for on
	print "To Do: SySetSoundEnabled needs testing in interactive test"
	SySetSoundEnabled:(0)
	SySetSoundEnabled:(-1234)
	SySetSoundEnabled:(KMaxLong&)
ENDP

PROC tSetSoundDriverEnabled:
	rem Valid paramenters are 0 for off or any other value for on
	print "To Do: SySetSoundDriverEnabled needs testing in interactive test"
	SySetSoundDriverEnabled:(0)
	SySetSoundDriverEnabled:(-1234)
	SySetSoundDriverEnabled:(KMaxLong&)
ENDP

PROC tSetKeyClickEnabled:
	print "To Do: SySetKeyClickEnabled needs testing in interactive test"	
	rem Valid paramenters are 0 for off or any other value for on
	REM SySetKeyClickEnabled:(0)
	REM SySetKeyClickEnabled:(-1234)
	REM SySetKeyClickEnabled:(KMaxLong&)
ENDP

PROC tSetPointerClickEnabled:
	print "To Do: SySetPointerClickEnabled needs testing in interactive test"	
	rem Valid paramenters are 0 for off or any other value for on
	rem SySetPointerClickEnabled:(0)
	rem SySetPointerClickEnabled:(-1234)
	rem SySetPointerClickEnabled:(KMaxLong&)
ENDP

PROC tSetDisplayContrast:
	rem Valid paramenters are between 0 and max display contrast
	rem SySetDisplayContrast:(0)
	rem SySetDisplayContrast:(SyMaxDisplayContrast&:)
	rem onerr err230::
	rem SySetDisplayContrast:(-1)
	rem raise 230
err230::
	rem onerr err231::
	rem SySetDisplayContrast:(SyMaxDisplayContrast&:+1)
	rem raise 231
err231::
	onerr off
ENDP

PROC tMaxDisplayContrast:
	rem if SyMaxDisplayContrast&:<>100
	rem	print "SyMaxDisplayContrast returned:",SyMaxDisplayContrast&:
	rem	raise 240
	rem endif 
ENDP

PROC tIsReadOnly:
	SySetReadOnly:(KTestFile$,KTrue%)
	if not SyIsReadOnly&:(KTestFile$)
		raise 250
	endif
	SySetReadOnly:(KTestFile$,KFalse%)
	if SyIsReadOnly&:(KTestFile$)
		raise 251
	endif
	onerr err252::
	SyIsReadOnly&:("Non-existant file")
	raise 252
err252::
	onerr off
ENDP

PROC tIsHidden:
	SySetHiddenFile:(KTestFile$,KTrue%)
	if not SyIsHidden&:(KTestFile$)
		raise 260
	endif
	SySetHiddenFile:(KTestFile$,KFalse%)
	if SyIsHidden&:(KTestFile$)
		raise 261
	endif
	onerr err262::
	SyIsHidden&:("Non-existant file")
	raise 262
err262::
	onerr off
ENDP

PROC tISystem:
	SySetSystemFile:(KTestFile$,KTrue%)
	if not SyIsSystem&:(KTestFile$)
		raise 270
	endif
	SySetSystemFile:(KTestFile$,KFalse%)
	if SyIsSystem&:(KTestFile$)
		raise 271
	endif
	onerr err272::
	SyIsSystem&:("Non-existant file")
	raise 272
err272::
	onerr off
ENDP

PROC tSetReadOnly:
	onerr err280::
	SySetReadOnly:("Non-existant file",0)
	raise 280
err280::
	onerr off
ENDP

PROC tSetHiddenFile:
	onerr err290::
	SySetHiddenFile:("Non-existant file",0)
	raise 290
err290::
	onerr off
ENDP

PROC tSetSystemFile:
	onerr err300::
	SySetSystemFile:("Non-existant file",0)
	raise 300
err300::
	onerr off
ENDP

PROC tVolumeSize:
	local d%
	local s&
	while d%<=25
		if d%=0 or d%=1 or d%>2 and d%<=24
			onerr errVolumeSize::
		endif
		s&=SyVolumeSize&:(d%)
		if d%=3 or d%=25
			if s&<1000 or s&>&10000000
				raise 310
			endif
		elseif d%=4
			if s&>&10000000
				raise 311
			endif
		else
			if s&>&10000000
				raise 312
			endif
		endif
errVolumeSize::
		onerr off
		d%=d%+1
	endwh
ENDP

PROC tVolumeSpaceFree:
	local d%
	local s&
	while d%<=25
		if d%=0 or d%=1 or d%>2 and d%<=24
			onerr errVolumeSpaceFree::
		endif
		s&=SyVolumeSpaceFree&:(d%)
		if d%=3 or d%=25
			if s&<1000 or s&>&10000000
				raise 320
			endif
		elseif d%=4
			if s&>&10000000
				raise 321
			endif
		else
			if s&>&10000000
				raise 322
			endif
		endif
errVolumeSpaceFree::
		d%=d%+1
	endwh
ENDP

PROC tVolumeUniqueID:
	local d%
	local s&
	while d%<=25
		if d%=0 or d%=1 or d%>2 and d%<=24
			onerr errVolumeUniqueId::
		endif
		s&=SyVolumeUniqueId&:(d%)
		if d%=3 or d%=25
			if s&<1000 or s&>&10000000
				raise 330
			endif
		elseif d%=4
			if s&>&10000000
				raise 331
			endif
		else
			if s&>&10000000

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?