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()
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()
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()
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()
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()
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()
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()