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);
    
    

    如果有错误的地方,还望各位多多指点
    写个博客,来记录自己成长的一些经历,或许也能顺便帮助他人。
  • 相关阅读:
    Goflyway
    amd 阉割理论
    wget命令下载页面里所有资源文件
    linux fpcup-Lazarus_fpcupdeluxe TEncoding 乱码
    Error: (lazbuild) 不能加载包 fpcupdeluxe 手工干预卸载问题模块
    集合 数据 指针方法操作集合
    cmake windows pthread
    4 bit all 15
    Parser b2c
    Offline Explorer 规则
  • 原文地址:https://www.cnblogs.com/Katakana/p/11743601.html
Copyright © 2011-2022 走看看