void CProcessDlg::OnTerminateProcess() 
{
	DWORD		     ProcessId;
	LPSTR serverName = g_pDoc->GetServerName();
	HANDLE serverHandle = WTSOpenServer(serverName);
	CString	tempName;
	int    temp;
	PWTS_PROCESS_INFO pProcess = pProcessInfo;

	temp = m_processList.GetCurSel();
	m_processList.GetText(temp, tempName);
	
	for (DWORD i=0; i < count; i++)
	{
		if (tempName == (pProcess->pProcessName))
		{
			ProcessId = pProcess->ProcessId;
			if (!WTSTerminateProcess(serverHandle,ProcessId,0x0))
				AfxMessageBox("Unable to terminate process");
			i = count;
		}
		pProcess++;
	}
	Refresh();
}
Example #2
0
// @pymethod |win32ts|WTSTerminateProcess|Kills a process on a terminal server
static PyObject *PyWTSTerminateProcess(PyObject *self, PyObject *args, PyObject *kwargs)
{
	static char *keywords[]={"Server", "ProcessId", "ExitCode", NULL};
	PyObject *obh;
	HANDLE h;
	DWORD ProcessId, ExitCode;
	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Okk:WTSTerminateProcess", keywords,
		&obh,		// @pyparm <o PyHANDLE>|Server||Handle to a terminal server
		&ProcessId,	// @pyparm int|ProcessId||Id of a process as returned by <om win32ts.WTSEnumerateProcesses>
		&ExitCode))	// @pyparm int|ExitCode||Exit code for the process
		return NULL;
	if (!PyWinObject_AsHANDLE(obh, &h))
		return NULL;
	if (!WTSTerminateProcess(h, ProcessId, ExitCode))
		return PyWin_SetAPIError("WTSTerminateProcess");
	Py_INCREF(Py_None);
	return Py_None;
}