比如我只知道用户打开了"test.txt"文件,但不知道是word,wordpad还是notepad,如何找到这个进程,并且强制关掉它?给出全部源码的另给200分!

解决方案 »

  1.   

    word,wordpad还是notepad Process[] curProcesses = Process.GetProcesses();
    foreach (Process pro in curProcesses)
    {
        if ((pro.ProcessName == "word")||(pro.ProcessName == "wordpad")||(pro.ProcessName == "notepad"))
           {
               pro.Kill ();
            }
    }
      

  2.   

    你这样会杀掉所有word或者是Nodepad的进程哦
      

  3.   

    Process[] curProcesses = Process.GetProcesses();
    foreach (Process pro in curProcesses)
    {
        if ((pro.ProcessName == "word")||(pro.ProcessName == "wordpad")||(pro.ProcessName == "notepad") && pro.StartInfo.FileName.IndexOf("test.txt")>-1 )
           {
               pro.Kill ();
            }
    }
      

  4.   

    哈哈,那还不简单。
    // ProcessLookup.cpp
    // Author by Yzl#include < iostream>
    #using < mscorlib.dll>
    #using < System.dll>
    #using < System.Management.dll>
    using namespace System;
    using namespace System::Management;
    using namespace std;#pragma managed
    int main()
    ...{
        ManagementObject *xdictObject = NULL;
            
        ManagementClass *processClass = new ManagementClass(S"Win32_Process");    
        
        ManagementObjectCollection* processCollection = processClass->GetInstances();
        ManagementObjectCollection::ManagementObjectEnumerator* processEnumerator 
                                = processCollection->GetEnumerator();
        
        
        while (processEnumerator->MoveNext())
        ...{
            ManagementObject *mObject = dynamic_cast(processEnumerator->Current);
            // 罗列当前进程信息
            Console::WriteLine("{0}\t{1}",mObject->get_Item(S"Name")->ToString(),
                         mObject->get_Item(S"ProcessId")->ToString());
            
            int iFound = String::Compare(mObject->get_Item(S"Name")->ToString(),S"xdict.exe");
            if (!iFound)
                xdictObject = mObject;
        }
        
        // 关闭金山词霸
        if (xdictObject == 0)
        ...{
            cout << "未找到该进程"    << endl;
            return 0;
        }
        
        //Object *args __gc[] = new Object *__gc[]{__box(0)};
        Object *o = xdictObject->InvokeMethod("Terminate",0);
        int iRet = Int32::Parse(o->ToString());
        
        switch(iRet)
        ...{
            case 0: cout << "金山词霸正常关闭" << endl;break;
            case 2: cout << "访问拒绝" << endl;break;
            case 3: cout << "权限不足" << endl;break;
            case 8: cout << "未知错误" << endl;break;
            case 9: cout << "路径未找到" << endl;break;
            case 21: cout << "无效参数" << endl;break;
        }
    }参考:http://blog.csdn.net/yuzl32/archive/2007/03/13/1528276.aspx
      

  5.   

    来个cs版本的参阅;http://blog.csdn.net/yuzl32/archive/2007/03/12/1527384.aspx
      

  6.   

    要求精确性的话,可以针对它的路径来确定.具体参阅Win32_Process.绝对可以满足你的要求.