Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Unattended mode and inkey
Message
De
24/03/2012 15:40:54
 
 
À
23/03/2012 20:26:42
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Database:
Visual FoxPro
Divers
Thread ID:
01539241
Message ID:
01539287
Vues:
96
>>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.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform