读书人

200分求棘手解方案.解决办法

发布时间: 2011-12-29 22:09:38 作者: rapoo

200分求棘手解方案.
是的.偶做一winform程序.生成exe文件.第一次Run程序的候程序,再次Run的候(上次程序有束),上次Run的程序的主窗口提到最上,
[DllImport( "user32.dll ", CharSet = CharSet.Auto)]
public static extern bool BringWindowToTop(IntPtr hwnd);

/// <summary>
/// 用程式的主要入。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Process inst = RunningInstance();

if (inst == null)
{
Application.Run(new EIPNotify());
}
else
{
BringWindowToTop(inst.MainWindowHandle);
}

//Application.Run(new EIPNotify());
}
public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(current.ProcessName);

foreach (Process process in processes)
{
if (process.ProcessName == current.ProcessName && process.Id != current.Id)


{
return process;
}
}
return null;
}

我是做的,再次Run的候,不能把主窗口提到最上.高手看看,出在哪.有有其他的法解.困我一天了.能解的我意另新,200分

[解决办法]
http://www.xrss.cn/Info/11748.Html
[解决办法]
试试这个API

SetForegroundWindow
[解决办法]
BringWindowToTop
VB声明
Declare Function BringWindowToTop Lib "user32 " Alias "BringWindowToTop " (ByVal hwnd As Long) As Long
说明
将指定的窗口带至窗口列表顶部。倘若它部分或全部隐藏于其他窗口下面,则将隐藏的部分完全显示出来。该函数也对弹出式窗口、顶级窗口以及MDI子窗口产生作用
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲带至顶部的那个窗口的句柄
注解
这个函数也许能随同子窗口使用。函数对一个特定的输入线程来说是“本地的”——换言之,倘若某窗口并非前台应用程序的一部分,那么一旦随同该窗口调用本函数,仍会将窗口带至它自己那个应用程序的窗口列表顶部。但是,不会同时使那个应用成为前台应用程序。这意味着在调用了本函数后,窗口仍会保持隐藏状态

读书人网 >C#

热点推荐