Как я могу сослаться на членов ProcessInfo и ProcessCE в моей утилите Windows CE?

Я нашел этот код от CathalMF здесь:

ProcessInfo[] list = ProcessCE.GetProcesses();

foreach (ProcessInfo pinfo in list)
{
    if (pinfo.FullPath.EndsWith("MyExe.exe"))
        pinfo.Kill();
}

... и изменил его для моих целей (не каламбур) так:

ProcessInfo[] list = ProcessCE.GetProcesses();

foreach (ProcessInfo pinfo in list)
{
    if (pinfo.FullPath.EndsWith("HHS.exe"))
        pinfo.Kill();
    // This should work, too, eh?
    if (pinfo.FullPath.EndsWith("HUtilCE.dll"))
        pinfo.Kill();
}

... но некоторые вещи неразрешимы в этом коде (свойство FullPath ProcessInfo, метод Kill и ProcessCE). На какую сборку [и,y] мне нужно ссылаться, чтобы получить это для компиляции?

Я добавил System.Web, который сделал сам ProcessInfo разрешимым, но этого недостаточно. Это указывает на то, что мне нужен System.Diagnostics.Process, но в моей системе его нет...???

Это небольшая утилита VS 2008, предназначенная для платформы Windows CE.

ОБНОВИТЬ

Очевидно (хотя поиск на жестком диске для "System.Diagnostics.Process.dll" ничего не дал), добавление следующих вариантов принесло свои плоды:

using System.Collections.Generic; using System.Runtime.InteropServices; using System.ComponentModel;

Я добавил это использование в сочетании с этим кодом, который я получил отсюда:

ProcessInfo[] list = ProcessCE.GetProcesses();

foreach (ProcessInfo item in list)
{
    //Debug.WriteLine("Process item: " + item.FullPath);
    MessageBox.Show("Process item: " + item.FullPath);
    if (item.FullPath.EndsWith("HHS.exe"))
    {
        MessageBox.Show("about to kill hhs.exe");
        item.Kill();
    }
    if (item.FullPath.EndsWith("HUtilCE.dll"))
    {
        MessageBox.Show("about to kill hutilce.dll");
        item.Kill();
    }
}

Вызвал ли простой процесс запуска этого кода двоичные файлы резидента в памяти? Я не знаю, но, будучи немного (хотя и не супер), я буду запускать этот код снова, если когда-нибудь снова столкнусь с той же проблемой.

Заметьте, однако, что он никогда не показывал мне мои.exe или.dll в списке запущенных процессов. Все, что я видел, было:

nk.exe
shell.exe
udevice.exe <= 5 times!
RTLogExport.exe
explorer.exe
servicesd.exe
WCLaunch.exe <= this explains a lot -- somebody is apparently launching a water closet on the device
keyicons.exe
repllog.exe
rapisrv.exe
rnaapp.exe
udp2ftp.exe
cerdisp.exe
PrinterCommanderCE.exe <= this is my util that was running this code

Проблема в том, что было пять случаев бездействия?

Почему выполнение этой проблемы решило мою проблему (если это действительно было решением)?

1 ответ

Решение

Этот класс (ProcessInfo), который вы используете, не тот, который определен в System.Web, это совершенно другой класс. Посмотрите код из этой статьи, в котором определены классы ProcessCE и ProcessInfo, вам понадобятся оба.

Другие вопросы по тегам