Optidiy的任务管理器已经开发完毕了。在写“切换”功能的时候遇到了一些小麻烦。
起初,我的思路是利用WM_SYSCOMMAND的SC_RESTORE功能,但是并未达到预期效果,通过MSDN才知道Windows Mobile 对于WM_SYSCOMMAND的支持有限,并不支持SC_RESTORE。
后来,采用ShowWindow这个API函数,思路是:隐藏Optidiy程序而后显示被切换程序,主要利用SW_HIDE来隐藏Optidiy窗口,SW_SHOWNORMAL显示被切换程序窗口。结果Optidiy窗口能够隐藏但是依旧不能唤醒被切换程序。
最后,在多次编码测试未果的情况下,突然想到了一个API函数——SetForegroundWindow
原型:BOOL SetForegroundWindow(HWND hWnd);
MSDN描述:This function puts the thread that created the specified window into the foreground and
activates the window.
C#调用: [DllImport("coredll.dll")]
private static extern Boolean SetForegroundWindow(IntPtr hWnd);
该函数将已知句柄程序的主窗体强制到系统桌面最前显示。