zoukankan      html  css  js  c++  java
  • 【Winform】两程序相互调用前置显示

    有A&B两个程序,程序A调用程序B, 如果B已运行时将B前置显示 B未打开时开始运行

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
    		Process[] pps = System.Diagnostics.Process.GetProcessesByName("cmd");
    		var helpw = from pc in pps where pc.MainWindowTitle == "XXX" select pc;
    
    		if (helpw.Count() > 0)
    		{
    			HandleRunningInstance(pps[0]);
    		}
    		else
    		{
    			System.Diagnostics.Process.Start($"cmd");
    		}
        }
        catch (Exception ex)
        {
    		System.Diagnostics.Debug.Assert(false, ex);
        }
    }
    
    private static void HandleRunningInstance(Process instance)
    {
        /*
        https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-showwindow 
        */
        ShowWindowAsync(instance.MainWindowHandle, 1); //调用api函数,正常显示窗口
        SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端
    }
    
    [DllImport("User32.dll")]
    private static extern bool ShowWindowAsync(System.IntPtr hWnd, int cmdShow);
    [DllImport("User32.dll")]
    private static extern bool SetForegroundWindow(System.IntPtr hWnd);
    
    

    如果有错误的地方,还望各位多多指点
    写个博客,来记录自己成长的一些经历,或许也能顺便帮助他人。
  • 相关阅读:
    C# winform判断窗体是否已打开
    对象与json字符串转换类设计
    Redis 操作帮助类
    C# redis客户端帮助类
    RedisHelper Redis帮助类
    Vue.js实现tab切换效果
    Uni-app 使用总结
    C#中的委托和事件(续)
    12小时超级马拉松赛记
    2016年8月份
  • 原文地址:https://www.cnblogs.com/Katakana/p/11743601.html
Copyright © 2011-2022 走看看