Обновить Windows CE - Панель задач - PullRequest
1 голос
/ 20 декабря 2011

Есть ли возможность обновить панель задач в Windows CE с помощью C #?

В моем программном обеспечении я убиваю некоторые процессы с помощью OpenNETCF.ToolHelp.ProcessEntry.Kill (). Это работает нормально, значок удаляется изпанель задач, но место для значка все еще осталось.После некоторых тестов я убил около 20 процессов, и теперь он нажал кнопку запуска с панели задач.

Пустое пространство удаляется при нажатии на него.

Как я могу обновить панель задачиз моей C # -программы?

РЕДАКТИРОВАТЬ: в настоящее время я работаю над CE 4.2

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Попробуйте получить дескриптор окна панели задач P / Invoking FindWindow, найдите «HHTaskBar» в качестве имени класса.Затем сделайте окно недействительным.

0 голосов
/ 31 мая 2017

Основываясь на предложении Damon8or, вот пример кода, который делает то, что вам нужно:

[DllImport("coredll.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("coredll.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, int nMsg, IntPtr wParam, IntPtr lParam);

private const int WM_MOUSEMOVE = 0x0200;

public static void RefreshTrayArea()
{
    // The client rectangle can be determined using "GetClientRect" (from coredll.dll) but
    // does require the taskbar to be visible. The values used in the loop below were
    // determined empirically.
    IntPtr hTrayWnd = FindWindow("HHTaskBar", null);
    if (hTrayWnd != IntPtr.Zero)
    {
        int nStartX = (Screen.PrimaryScreen.Bounds.Width / 2);
        int nStopX = Screen.PrimaryScreen.Bounds.Width;
        int nStartY = 0;
        int nStopY = 26;    // From experimentation...
        for (int nX = nStartX; nX < nStopX; nX += 10)
            for (int nY = nStartY; nY < nStopY; nY += 5)
                SendMessage(hTrayWnd,
                    WM_MOUSEMOVE, IntPtr.Zero, (IntPtr)((nY << 16) + nX));
    }
}

Надеюсь, что поможет.

...