コード例 #1
0
ファイル: DialogProcess.cpp プロジェクト: simileas/prodo
void CDialogProcess::OnNMRClickListProc(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
	int index = pNMLV->iItem;

	CString szCid;
	CPoint pt;

	DWORD dwCid;

	if( index == -1 )
		return;

	HMENU hMenu = ::CreatePopupMenu();
	AppendMenu( hMenu, MF_STRING, 10001, _T("进程模块") );
	AppendMenu( hMenu, MF_STRING, 10002, _T("结束进程") );
	
	GetCursorPos(&pt);

	UINT Cmd = (UINT)::TrackPopupMenu( hMenu, TPM_LEFTALIGN|TPM_RETURNCMD, pt.x, pt.y, 0, m_hWnd, NULL );

	switch( Cmd )
	{
	case 10001:
		{
			m_DialogDll.ShowWindow(SW_SHOW);

			m_DialogDll.m_ListDll.DeleteAllItems();

			szCid = m_ListProc.GetItemText(index, 0);
			dwCid = _tcstoul(szCid, 0, 10);
			GetDll(dwCid);
		}
		break;
	case 10002:
		{
			szCid = m_ListProc.GetItemText(index, 0);

			dwCid = _tcstoul(szCid, 0, 10);

			if( KillProcess(dwCid) )
			{
				m_ListProc.DeleteItem(index);
			}
			else
			{
				MessageBoxA(NULL, "Kill process failed.","ERROR", MB_OK);
			}
		}
		break;
	}
	*pResult = 0;
}
コード例 #2
0
ファイル: vrml_api.cpp プロジェクト: nixz/covise
BOOL
CallbackTable::GetCallbackMethods(Interface *ip)
{
    int i;
    LPCTSTR lpSection = _T("Dlls");
    LPCTSTR lpKey = NULL;
    LPCTSTR lpDefault = _T("none");
    TCHAR lpBuf[MAX_PATH];
    DWORD nSize = sizeof(lpBuf);

    const TCHAR *maxPlugCfgPath = ip->GetDir(APP_PLUGCFG_DIR);
    TCHAR lpINIFileName[MAX_PATH];
    _stprintf(lpINIFileName, _T("%s\\%s"), maxPlugCfgPath, _T("vrmlexp.ini"));

    // see if the INI files exists.
    WIN32_FIND_DATA file;
    HANDLE findhandle = FindFirstFile(lpINIFileName, &file);
    FindClose(findhandle);
    if (findhandle == INVALID_HANDLE_VALUE)
    {
        /*  if the .ini file is missing assume they aren't using the API
        TSTR buf = "couldn't find INI file";
	    MessageBox(GetActiveWindow(), buf, " ", MB_OK|MB_TASKMODAL);
        */
        return FALSE;
    }

    // get dllKeys
    GetPrivateProfileString(lpSection, lpKey, lpDefault, (LPTSTR)lpBuf, nSize, (LPCTSTR)lpINIFileName);
    TCHAR *tmpPtr = lpBuf;
    while (tmpPtr[0] != '\0')
    {
        TCHAR *dllKey = (TCHAR *)malloc(_tcslen(tmpPtr) * sizeof(TCHAR));
        _tcscpy(dllKey, tmpPtr);
        AddKey(dllKey);
        tmpPtr = _tcschr(tmpPtr, '\0') + 1;
    }

    // check validity of INI file
    if (!lstrcmp(lpBuf, _T("none")))
    {
        TSTR buf = _T("couldn't find [dlls] section in INI file");
        MessageBox(GetActiveWindow(), buf, _T(" "), MB_OK | MB_TASKMODAL);
        return FALSE;
    }

    // get dlls
    for (i = 0; i < GetKeyCount(); i++)
    {
        GetPrivateProfileString(lpSection, GetKey(i), lpDefault, (LPTSTR)lpBuf, nSize, lpINIFileName);
        TCHAR *dllPtr = (TCHAR *)malloc(_tcslen(lpBuf) * sizeof(TCHAR));
        _tcscpy(dllPtr, lpBuf);
        AddDll(dllPtr);
    }

    // load the dlls
    for (i = GetDllCount(); i--;)
    {
        HINSTANCE libInst = (HINSTANCE)LoadLibraryEx(GetDll(i), NULL, 0);
        if (libInst)
        {
            AddDLLHandle(libInst);
            FARPROC lpCallbackType = NULL;
            FARPROC lpProc = NULL;
            TCHAR lpStr[64];
            __int64 CallbackType;

            lpCallbackType = GetProcAddress((HMODULE)libInst, (LPCSTR) "ExportLibSupport");
            if (lpCallbackType)
            {
                CallbackType = (*(lpCallbackType))();
            }

            // Export Lib support for pre-scene export
            if (PreSceneCallback & CallbackType)
            {
                _tcscpy(lpStr, _T("PreSceneExport"));
                DllPreScene lpProc = (DllPreScene)GetProcAddress((HMODULE)libInst, (LPCSTR)lpStr);
                if (!lpProc)
                {
                    TCHAR buf[256];
                    _stprintf(buf, _T("method %s not implimented"), lpStr);
                    MessageBox(GetActiveWindow(), buf, _T("Export Lib"), MB_OK | MB_TASKMODAL);
                }
                AddPreScene(lpProc);
            }

            // Export Lib support for post-scene export
            if (PostSceneCallback & CallbackType)
            {
                _tcscpy(lpStr, _T("PostSceneExport"));
                DllPostScene lpProc = (DllPostScene)GetProcAddress((HMODULE)libInst, (LPCSTR)lpStr);
                if (!lpProc)
                {
                    TCHAR buf[256];
                    _stprintf(buf, _T("method %s not implimented"), lpStr);
                    MessageBox(GetActiveWindow(), buf, _T("Export Lib"), MB_OK | MB_TASKMODAL);
                }
                AddPostScene(lpProc);
            }

            // Export Lib support for pre-node export
            if (PreNodeCallback & CallbackType)
            {
                _tcscpy(lpStr, _T("PreNodeExport"));
                DllPreNode lpProc = (DllPreNode)GetProcAddress((HMODULE)libInst, (LPCSTR)lpStr);
                if (!lpProc)
                {
                    TCHAR buf[256];
                    _stprintf(buf, _T("method %s not implimented"), lpStr);
                    MessageBox(GetActiveWindow(), buf, _T("Export Lib"), MB_OK | MB_TASKMODAL);
                }
                AddPreNode(lpProc);
            }

            // Export Lib support for post-node export
            if (PostNodeCallback & CallbackType)
            {
                _tcscpy(lpStr, _T("PostNodeExport"));
                DllPostNode lpProc = (DllPostNode)GetProcAddress((HMODULE)libInst, (LPCSTR)lpStr);
                if (!lpProc)
                {
                    TCHAR buf[256];
                    _stprintf(buf, _T("method %s not implimented"), lpStr);
                    MessageBox(GetActiveWindow(), buf, _T("Export Lib"), MB_OK | MB_TASKMODAL);
                }
                AddPostNode(lpProc);
            }
        }
        else
        {
            TCHAR buf[256];
            _stprintf(buf, _T("Lib [%s] Load Failed"), GetDll(i));
            MessageBox(GetActiveWindow(), buf, _T("Export Lib"), MB_OK | MB_TASKMODAL);
        }
    }

    return TRUE;
}