zoukankan      html  css  js  c++  java
  • Showwindow/FindWindow/PostMessage 转

    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
  • 相关阅读:
    【转】Dalvik虚拟机的启动过程分析
    【转】Android 之ActivityThead、ActivityManagerService 与activity的管理和创建
    【转】应用程序的入口是ActivityThread
    【转】Android中Application类用法
    【转】360浏览器极速与兼容模式的解释
    操作系统学习(七)--操作系统之外设显示器和键盘
    操作系统学习(六)-- 虚拟内存(页面置换算法)
    操作系统学习(五)-- 操作系统之内存管理
    操作系统学习(四)-- 操作系统之进程同步和死锁
    数据库系统学习(八)-SQL语言与数据库完整性和安全性
  • 原文地址:https://www.cnblogs.com/enjoyprogram/p/2779307.html
Copyright © 2011-2022 走看看