예제 #1
0
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");*/
	}
}
예제 #2
0
// @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;
}