Exemple #1
0
AUT_RESULT AutoIt_Script::F_GUICreate(VectorVariant &vParams, Variant &vResult)
{
	uint	iNumParams = vParams.size();

	int		nStyle		= -1;
	int		nExStyle	= -1;
	int		nW			= -1;
	int		nH			= -1;
	int		nX			= -1;
	int		nY			= -1;
	HWND hParent		= NULL;

	if (iNumParams > 7) hParent = vParams[7].hWnd();
	if (iNumParams > 6) nExStyle = vParams[6].nValue();
	if (iNumParams > 5) nStyle = vParams[5].nValue();
	if (iNumParams > 4) nY = vParams[4].nValue();
	if (iNumParams > 3) nX = vParams[3].nValue();
	if (iNumParams > 2) nH = vParams[2].nValue();
	if (iNumParams > 1) nW = vParams[1].nValue();

	HWND hWnd= g_oGUI.CreateGUI(vParams[0].szValue(), nX, nY,nW, nH, nStyle, nExStyle, hParent);

	if (hWnd == NULL)
	{
		SetFuncErrorCode(1);
		vResult = (HWND)NULL;					// window can not be created
	}
	else
		vResult = hWnd;

	return AUT_OK;

} // GUICreate()
Exemple #2
0
AUT_RESULT AutoIt_Script::F_GUIGetMsg(VectorVariant &vParams, Variant &vResult)
{
	GUIEVENT	Event;
	Variant		*pvTemp;
	Variant		vTemp;


	// If we are in event mode then

	// Don't try and get the message if the OnEvent mode is active
	if ( g_oGUI.m_bGuiEventEnabled == true || g_oGUI.GetMsg(Event) == false)
	{
		// No events - add default values
		Event.nGlobalID	= 0;
		Event.sCallback	= "";
		Event.hWnd		= NULL;
		Event.hCtrl		= NULL;
		Event.nCursorX	= 0;
		Event.nCursorY	= 0;
	}
	if ( g_oGUI.m_bGuiEventEnabled == true)
		SetFuncErrorCode(1);

	if (vParams.size() > 0 && vParams[0].nValue() == 1)
	{
		// Advanced return

		// Setup vResult as an Array to hold the 3 values we want to return
		Util_VariantArrayDim(&vResult, 5);

		pvTemp = Util_VariantArrayGetRef(&vResult, 0);	// First element
		*pvTemp = Event.nGlobalID;

		pvTemp = Util_VariantArrayGetRef(&vResult, 1);
		*pvTemp = Event.hWnd;

		pvTemp = Util_VariantArrayGetRef(&vResult, 2);
		*pvTemp = Event.hCtrl;

		pvTemp = Util_VariantArrayGetRef(&vResult, 3);
		*pvTemp = Event.nCursorX;

		pvTemp = Util_VariantArrayGetRef(&vResult, 4);
		*pvTemp = Event.nCursorY;
	}
	else
	{
		// Simple return
		vResult = Event.nGlobalID;
	}

	return AUT_OK;

} // GUIGetMsg()
Exemple #3
0
AUT_RESULT AutoIt_Script::F_Dec(VectorVariant &vParams, Variant &vResult)
{
	int		nTemp1;

	if (Util_ConvDec(vParams[0].szValue(), nTemp1) == false)
		SetFuncErrorCode(1);			// error
	vResult = nTemp1;

	return AUT_OK;

} // Dec()
Exemple #4
0
AUT_RESULT AutoIt_Script::F_Int(VectorVariant &vParams, Variant &vResult)
{
	// If the variant is already int32 or int64 then leave alone
	// If the variant is a DOUBLE then convert to an int64
	if (vParams[0].type() == VAR_INT32 || vParams[0].type() == VAR_INT64)
	{
		vResult = vParams[0];
	}
	else if (vParams[0].type() == VAR_DOUBLE || vParams[0].type() == VAR_STRING)
	{
		vResult = vParams[0].n64Value();
	}
	else
	{
		SetFuncErrorCode(1);
		vResult = 0;							// Invalid
	}

	return AUT_OK;

} // Int()
Exemple #5
0
AUT_RESULT AutoIt_Script::F_GUIGetCursorInfo(VectorVariant &vParams, Variant &vResult)
{
	HWND	hWnd = NULL;
	int		nX, nY, nPrimary, nSecondary, nGlobalID;

	// Setup vResult as an Array to hold the 5 values we want to return
	Variant	*pvTemp;

	Util_VariantArrayDim(&vResult, 5);

	if (vParams.size() > 0)
		hWnd = vParams[0].hWnd();

	if ( g_oGUI.GuiGetCursorInfo(hWnd, nX, nY, nPrimary, nSecondary, nGlobalID) )
	{
		pvTemp = Util_VariantArrayGetRef(&vResult, 0);	//First element
		*pvTemp = nX;					// X

		pvTemp = Util_VariantArrayGetRef(&vResult, 1);
		*pvTemp = nY;					// Y

		pvTemp = Util_VariantArrayGetRef(&vResult, 2);
		*pvTemp = nPrimary;				// Primary down

		pvTemp = Util_VariantArrayGetRef(&vResult, 3);
		*pvTemp = nSecondary;			// Secondary down

		pvTemp = Util_VariantArrayGetRef(&vResult, 4);
		*pvTemp = nGlobalID;			// Ctrl ID that cursor is over
	}
	else
		SetFuncErrorCode(1);

	return AUT_OK;

} // GUIGetCursorPos()
Exemple #6
0
AUT_RESULT AutoIt_Script::GUICtrlCreate(int nType, VectorVariant &vParams, Variant &vResult)
{
	int i = 0;
	int iNumParams = vParams.size();
	char *szText = NULL;
	int W		= -1;
	int H		= -1;
	int X		= -1;
	int Y		= -1;
	int Style	= -1;
	int exStyle	= -1;
	int id		= -1;
	int nSubType=  0;

	if ((nType == AUT_GUI_DUMMY ) && iNumParams != 0)
	{
		FatalError(IDS_AUT_E_FUNCTIONNUMPARAMS);
		return AUT_ERR;
	}

	switch (nType)
	{
		case AUT_GUI_TREEVIEWITEM:
		case AUT_GUI_LISTVIEWITEM:
			nSubType |= AUT_GUI_NORESIZE | AUT_GUI_NOTEXTSIZE;
			i = 0;
			szText = Util_StrCpyAlloc(vParams[0].szValue());
			break;

		case AUT_GUI_TABITEM:
		case AUT_GUI_MENU:
		case AUT_GUI_TRAYMENU:
		case AUT_GUI_MENUITEM:
		case AUT_GUI_DUMMY:
			nSubType |= AUT_GUI_NORESIZE | AUT_GUI_NOFONT | AUT_GUI_NOTEXTSIZE;

		case AUT_GUI_PIC:
			nSubType |= AUT_GUI_NOFONT | AUT_GUI_NOTEXTSIZE;

		case AUT_GUI_GROUP:
		case AUT_GUI_COMBO:
		case AUT_GUI_LIST:
		case AUT_GUI_EDIT:
		case AUT_GUI_INPUT:
		case AUT_GUI_DATE:
		case AUT_GUI_LISTVIEW:
			nSubType |= AUT_GUI_NOTEXTSIZE;

		case AUT_GUI_LABEL:
		case AUT_GUI_BUTTON:
		case AUT_GUI_CHECKBOX:
		case AUT_GUI_RADIO:
			i = 0;
			szText = Util_StrCpyAlloc(vParams[0].szValue());
			break;

		case AUT_GUI_AVI:
		case AUT_GUI_ICON:
			nSubType |= AUT_GUI_NOFONT | AUT_GUI_NOTEXTSIZE;
			i = 1;
			id = vParams[1].nValue();
			if (id<0) id=0;
			szText = Util_StrCpyAlloc(vParams[0].szValue());
			break;

		case AUT_GUI_PROGRESS:
		case AUT_GUI_SLIDER:
		case AUT_GUI_TAB:
		case AUT_GUI_CONTEXTMENU:
		case AUT_GUI_TREEVIEW:
			nSubType |= AUT_GUI_NOFONT | AUT_GUI_NOTEXTSIZE;
			i = -1;
			break;

		case AUT_GUI_UPDOWN:
			nSubType |= AUT_GUI_NORESIZE | AUT_GUI_NOFONT | AUT_GUI_NOTEXTSIZE;
			char szTemp[10];
			sprintf(szTemp,"%d",vParams[0].nValue());
			szText = Util_StrCpyAlloc(szTemp);
			i = 0;
			break;
	}

	if (iNumParams > i+6) exStyle	= vParams[i+6].nValue();
	if (iNumParams > i+5) Style		= vParams[i+5].nValue();
	if (iNumParams > i+4) H			= vParams[i+4].nValue();
	if (iNumParams > i+3) W			= vParams[i+3].nValue();
	if (iNumParams > i+2) Y			= vParams[i+2].nValue();
	if (iNumParams > i+1) X			= vParams[i+1].nValue();

	vResult = g_oGUI.CtrlCreate(nType, szText, X, Y, W, H, Style, exStyle, id, nSubType);

	if (vResult.nValue() == 0)
		SetFuncErrorCode(1);

	delete [] szText;
	return AUT_OK;


} // GUICtrlCreate()
Exemple #7
0
AUT_RESULT AutoIt_Script::F_GUIRecvMsg(VectorVariant &vParams, Variant &vResult)
{
	uint	iNumParams = vParams.size();
	int nWparam = 0;
	int nLparamType = 0;

	if (iNumParams > 3) nLparamType = vParams[3].nValue();
	if (iNumParams > 2) nWparam = vParams[2].nValue();

	int nX, nY, nRight,nBottom;

	union
	{
		WORD nTemp1;
		char szTemp[AUT_MAX_LINESIZE];
	};

	nTemp1 =  AUT_MAX_LINESIZE;		// to avoid overflow return

	int nTemp = g_oGUI.RecvMsg(vParams[0].nValue(), vParams[1].nValue(), nWparam, nLparamType, nX, nY, nRight, nBottom, szTemp);

	if (nTemp == 0)
	{	// bad return from SendMessage
		vResult = 0;
		SetFuncErrorCode(1);
		return AUT_OK;
	}

	if (nLparamType == 1)
	{
		// string to be returned
		vResult = szTemp;
	}
	else
	{
		// Setup vResult as an Array to hold the n values we want to return
		Variant	*pvTemp;

		nLparamType = nLparamType + 2; //  entry in array

		Util_VariantArrayDim(&vResult, nLparamType);

		pvTemp = Util_VariantArrayGetRef(&vResult, 0);	//First element
		*pvTemp = nX;

		pvTemp = Util_VariantArrayGetRef(&vResult, 1);
		*pvTemp = nY;

		if (nLparamType == 4)
		{
			pvTemp = Util_VariantArrayGetRef(&vResult, 2);
			*pvTemp = nRight;

			pvTemp = Util_VariantArrayGetRef(&vResult, 3);
			*pvTemp = nBottom;
		}
	}

	return AUT_OK;

} // GUIRecvMsg()