c# api Showwindow/FindWindow/PostMessage

c#学习 专栏收录该内容
3 篇文章 0 订阅

using System;

using System.Collections.Generic;

using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace test

{

    static class Program

    {

        [DllImport("user32.dll ", CharSet = CharSet.Unicode)]

        public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);

        [DllImport("User32.dll ", EntryPoint = "FindWindow")]

        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]

        public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

        public const int SW_SHOWMAXIMIZED =3;

//Public Const SW_MAXIMIZE = 3

//Public Const SW_SHOWNOACTIVATE = 4

//Public Const SW_SHOW = 5

        private const int WM_CLOSE = 0x0010;

        /// <summary>

        /// 应用程序的主入口点。

        /// </summary>

        [STAThread]

        static void Main(string[] args)

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            IntPtr handle = FindWindow(null, "Form1");

            if (handle != IntPtr.Zero)

            {

                if (args.Length <= 0)

                {

                    MessageBox.Show("已启动!");

                    ShowWindow(handle, 4);

                    return;

                }

                else if (args[0].Contains("start"))

                {

                    PostMessage(handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);

                    // Application.Run(new Form1());

                    //MessageBox.Show("重启");

                    //return;

                }

            }

            Application.Run(new Form1());

        }

          

    }

}

Showwindow 及参数

[DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]

        public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

函数功能:该函数设置指定窗口的显示状态。

    参数:

    hWnd:窗口句柄。

    nCmdShow:指定窗口如何显示。如果发送应用程序程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一:

    SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。

    SW_MIOE:隐藏窗口并激活其他窗口。

    SW_MAXIMIZE:最大化指定的窗口。

    SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。

    SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。

    SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。

    SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序程序传递给CreateProcess函数的。

    SW_SHOWMAXIMIZED:激活窗口并将其最大化。

    SW_SHOWMINIMIZED:激活窗口并将其最小化。

    SW_SHOWMINNOACTIVATE:窗口最小化,激活窗口仍然维持激活状态。

    SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。

    SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。

    SW_SHOWNOMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。

    返回值:如果窗口以前可见,则返回值为非零。如果窗口以前被隐藏,则返回值为零。

    备注:应用程序第一次调用ShowWindow时,应该使用WinMain函数的nCmdshow参数作为它的nCmdShow参数。在随后调用ShowWindow函数时,必须使用列表中的一个给定值,而不是由WinMain函数的nCmdSHow参数指定的值。

Public Const SW_HIDE = 0

Public Const SW_SHOWNORMAL = 1

Public Const SW_SHOWMINIMIZED = 2

Public Const SW_SHOWMAXIMIZED = 3

Public Const SW_MAXIMIZE = 3

Public Const SW_SHOWNOACTIVATE = 4

Public Const SW_SHOW = 5

Public Const SW_MINIMIZE = 6

Public Const SW_SHOWMINNOACTIVE = 7

Public Const SW_SHOWNA = 8

Public Const SW_RESTORE = 9

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值