Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Unattended mode and inkey
Message
From
24/03/2012 15:40:54
 
 
To
23/03/2012 20:26:42
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01539241
Message ID:
01539287
Views:
95
>>Even in unattended mode (sys(2335) I want to have a mechanism to escape. So, I test for inkey() in a subroutine. The weird thing is that this causes no error as long as no key is pressed. However, as soon as I press a key, the INKEY() line generates error 2031 'User-interface operation not allowed at this time.'
>>
>>I do not want to turn unattended mode on and off all the time. Who's got a solution? Perhaps some API key test?
>
>I have an icon on my desktop which simply creates an empty file with a special name. So my unattended program regularly checks for this file. If it finds it, it deletes it and then exits.

Smart solution. :)

A solution that I'll gonna try (TRY) tonight is simply test for the error 2031, using TRY/ENDTRY.

I think it is a design flaw (made by the VFP development team) to not even accept tests for key presses in unattended mode. Hmm, it's now too late to ask them to repair it, I guess. :)

UPDATE:
This appears to work...
#DEFINE clVFP9			version( 5 ) >= 900

if clVFP9
	*	25/mar/2012	pdv	
	*	As long as no key is pressed, inkey() does not cause any error in Unattended Mode. 
	*	However, as soon as a key is pressed, it appears to cause error 2031 'User-interface 
	*	operation not allowed at this time'.
	*	In my opinion this is a VFP design flaw.
	*	Anyway, let's use that error to circumvent it.
	TRY
		lnKey = inkey()
	CATCH
		UnattendedServerMode( .F. )
		lnKey = inkey()
		UnattendedServerMode( .T. )
	ENDTRY	
else
	lnKey = inkey()
endif
*	Without parameter		: Returns the current mode (true/false).
*	With parameter (.t./.f.)	: Sets the mode and returns the mode after the change.
*					  Not available in vfp7, and some modes (esp. devmode).
FUNCTION UnattendedServerMode( tlON )

	do case
	case not clVFP9
		RETURN .F.
	case not inlist( _vfp.startmode, 2, 4 ) 
		RETURN .F.
	case pcount() = 0
	case m.tlON
		sys( 2335, 0 )
	case not m.tlON
		sys( 2335, 1 )
	endcase
	
	RETURN sys( 2335 ) == "0"	&& return TRUE if it is unattended server mode
Groet,
Peter de Valença

Constructive frustration is the breeding ground of genius.
If there’s no willingness to moderate for the sake of good debate, then I have no willingness to debate at all.
Let's develop superb standards that will end the holy wars.
"There are three types of people: Alphas and Betas", said the beta decisively.
If you find this message rude or offensive or stupid, please take a step away from the keyboard and try to think calmly about an eventual a possible alternative explanation of my message.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform