void CServerDlg::OnDropdownServerList2() { CString dname; m_domainName.GetWindowText(dname); if (dname == "") AfxMessageBox("Please enter a domain name."); else { if (domainFlag == FALSE) { m_serverList2.ResetContent(); if (!WTSEnumerateServers((TCHAR *)LPCTSTR (dname), 0, 1, &pServerInfo, &count)) AfxMessageBox("Unable to enumerate servers"); PWTS_SERVER_INFO pServer = pServerInfo; for (DWORD i=0; i < count; i++) { m_serverList2.AddString(pServer->pServerName); pServer++; } domainFlag = TRUE; } /*m_serverList2.AddString("purple"); m_serverList2.AddString("blue"); m_serverList2.AddString("red"); m_serverList2.AddString("orange"); m_serverList2.AddString("yellow");*/ } }
// @pymethod (<o PyUnicode>,...)|win32ts|WTSEnumerateServers|Lists terminal servers in a domain static PyObject *PyWTSEnumerateServers(PyObject *self, PyObject *args, PyObject *kwargs) { static char *keywords[]={"DomainName","Version","Reserved", NULL}; WCHAR *DomainName=NULL; DWORD Reserved=0, Version=1, cnt; PyObject *obDomainName=Py_None, *ret=NULL; PWTS_SERVER_INFO buf=NULL; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|Okk:WTSEnumerateServers", keywords, &obDomainName, // @pyparm <o PyUnicode>|DomainName|None|Use None for current domain &Version, // @pyparm int|Version|1|Version of request, currently 1 is only valid value &Reserved)) // @pyparm int|Reserved|0|Reserved, use 0 if passed in return NULL; if (!PyWinObject_AsWCHAR(obDomainName, &DomainName, TRUE)) return NULL; if (!WTSEnumerateServers(DomainName,Reserved,Version, &buf, &cnt)) PyWin_SetAPIError("WTSEnumerateServers"); else{ ret=PyTuple_New(cnt); if (ret) for (DWORD i=0; i<cnt; i++){ PyObject *tuple_item=PyWinObject_FromWCHAR(buf[i].pServerName); if (!tuple_item){ Py_DECREF(ret); ret=NULL; break; } PyTuple_SET_ITEM(ret, i, tuple_item); } } PyWinObject_FreeWCHAR(DomainName); if (buf) WTSFreeMemory(buf); return ret; }