• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现老板键功能的代码

C#实现老板键功能的代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了老板键的功能,c#快捷键,c#快捷键设置,c#注释快捷键,c#代码对齐快捷键等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C#设置热键隐藏指定窗口的代码

using System;
using System.Text;
using System.Collections;
using System.Runtime.InteropServices;
 
namespace WindowHider
{
  /// <summary>
  /// Object used to control a Windows Form.
  /// </summary>
  public class Window
  {
    /// <summary>
    /// Win32 API Imports
    /// </summary>
    [DllImport("user32.dll")] private static extern 
      bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
    [DllImport("user32.dll")] private static extern 
      bool SetForegroundWindow(IntPtr hWnd);
    [DllImport("user32.dll")] private static extern 
      bool IsIconic(IntPtr hWnd);
    [DllImport("user32.dll")] private static extern 
      bool IsZoomed(IntPtr hWnd);
    [DllImport("user32.dll")] private static extern 
      IntPtr GetForegroundWindow();
    [DllImport("user32.dll")] private static extern 
      IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
    [DllImport("user32.dll")] private static extern 
      IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, int fAttach);
 
    /// <summary>
    /// Win32 API Constants for ShowWindowAsync()
    /// </summary>
    private const int SW_HIDE = 0;
    private const int SW_SHOWNORMAL = 1;
    private const int SW_SHOWMINIMIZED = 2;
    private const int SW_SHOWMAXIMIZED = 3;
    private const int SW_SHOWNOACTIVATE = 4;
    private const int SW_RESTORE = 9;
    private const int SW_SHOWDEFAULT = 10;
 
    /// <summary>
    /// Private Fields
    /// </summary>
    private IntPtr m_hWnd;
    private string m_Title;
    private bool m_Visible = true;
    private string m_Process;
    private bool m_WasMax = false;
 
    /// <summary>
    /// Window Object's Public Properties
    /// </summary>
    public IntPtr hWnd
    {
      get{return m_hWnd;}
    }
    public string Title
    {
      get{return m_Title;}
    }
    public string Process
    {
      get{return m_Process;}
    }
 
    /// <summary>
    /// Sets this Window Object's visibility
    /// </summary>
    public bool Visible
    {
      get{return m_Visible;}
      set
      {
        //show the window
        if(value == true)
        {
          if(m_WasMax)
          {
            if(ShowWindowAsync(m_hWnd,SW_SHOWMAXIMIZED))
              m_Visible = true;
          }
          else
          {
            if(ShowWindowAsync(m_hWnd,SW_SHOWNORMAL))
              m_Visible = true;
          }
        }
        //hide the window
        if(value == false)
        {
          m_WasMax = IsZoomed(m_hWnd);
          if(ShowWindowAsync(m_hWnd,SW_HIDE))
            m_Visible = false;
        }
      }
    }
 
    /// <summary>
    /// Constructs a Window Object
    /// </summary>
    /// <param name="Title">Title Caption</param>
    /// <param name="hWnd">Handle</param>
    /// <param name="Process">Owning Process</param>
    public Window(string Title, IntPtr hWnd, string Process)
    {
      m_Title = Title;
      m_hWnd = hWnd;
      m_Process = Process;
    }
 
    //Override ToString() 
    public override string ToString()
    {
      //return the title if it has one, if not return the process name
      if (m_Title.Length > 0)
      {
        return m_Title;
      }
      else
      {
        return m_Process;
      }
    }
 
    /// <summary>
    /// Sets focus to this Window Object
    /// </summary>
    public void Activate()
    {
      if(m_hWnd == GetForegroundWindow())
        return;
 
      IntPtr ThreadID1 = GetWindowThreadProcessId(GetForegroundWindow(),
                            IntPtr.Zero);
      IntPtr ThreadID2 = GetWindowThreadProcessId(m_hWnd,IntPtr.Zero);
       
      if (ThreadID1 != ThreadID2)
      {
        AttachThreadInput(ThreadID1,ThreadID2,1);
        SetForegroundWindow(m_hWnd);
        AttachThreadInput(ThreadID1,ThreadID2,0);
      }
      else
      {
        SetForegroundWindow(m_hWnd);
      }
 
      if (IsIconic(m_hWnd))
      {
        ShowWindowAsync(m_hWnd,SW_RESTORE);
      }
      else
      {
        ShowWindowAsync(m_hWnd,SW_SHOWNORMAL);
      }
    }
  }
 
  /// <summary>
  /// Collection used to enumerate Window Objects
  /// </summary>
  public class Windows : IEnumerable, IEnumerator
  {
    /// <summary>
    /// Win32 API Imports
    /// </summary>
    [DllImport("user32.dll")] private static extern 
       int GetWindowText(int hWnd, StringBuilder title, int size);
    [DllImport("user32.dll")] private static extern 
       int GetWindowModuleFileName(int hWnd, StringBuilder title, int size);
    [DllImport("user32.dll")] private static extern 
       int EnumWindows(EnumWindowsProc ewp, int lParam); 
    [DllImport("user32.dll")] private static extern 
       bool IsWindowVisible(int hWnd);
 
    //delegate used for EnumWindows() callback function
    public delegate bool EnumWindowsProc(int hWnd, int lParam);
 
    private int m_Position = -1; // holds current index of wndArray, 
                   // necessary for IEnumerable
     
    ArrayList wndArray = new ArrayList(); //array of windows
     
    //Object's private fields
    private bool m_invisible = false;
    private bool m_notitle = false;
 
    /// <summary>
    /// Collection Constructor with additional options
    /// </summary>
    /// <param name="Invisible">Include invisible Windows</param>
    /// <param name="Untitled">Include untitled Windows</param>
    public Windows(bool Invisible, bool Untitled)
    {
      m_invisible = Invisible;
      m_notitle = Untitled;
 
      //Declare a callback delegate for EnumWindows() API call
      EnumWindowsProc ewp = new EnumWindowsProc(EvalWindow);
      //Enumerate all Windows
      EnumWindows(ewp, 0);
    }
    /// <summary>
    /// Collection Constructor
    /// </summary>
    public Windows()
    {
      //Declare a callback delegate for EnumWindows() API call
      EnumWindowsProc ewp = new EnumWindowsProc(EvalWindow);
      //Enumerate all Windows
      EnumWindows(ewp, 0);
    }
    //EnumWindows CALLBACK function
    private bool EvalWindow(int hWnd, int lParam)
    {
      if (m_invisible == false && !IsWindowVisible(hWnd))
        return(true);
 
      StringBuilder title = new StringBuilder(256);
      StringBuilder module = new StringBuilder(256);
 
      GetWindowModuleFileName(hWnd, module, 256);
      GetWindowText(hWnd, title, 256);
 
      if (m_notitle == false && title.Length == 0)
        return(true);
 
      wndArray.Add(new Window(title.ToString(), (IntPtr)hWnd, 
                  module.ToString()));
 
      return(true);
    }
     
    //implement IEnumerable
    public IEnumerator GetEnumerator()
    {
      return (IEnumerator)this;
    }
    //implement IEnumerator
    public bool MoveNext()
    {
      m_Position++;
      if (m_Position < wndArray.Count)
{
return true;
}
else
{
return false;
}
}
public void Reset()
{
m_Position = -1;
}
public object Current
{
get
{
return wndArray[m_Position];
}
}
}
}

</div>

再给大家分享一个其他网友的方法,也非常不错,详情请看注释。

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace drmaple
{
  class HotKey
  {
    //如果函数执行成功,返回值不为0。
    //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool RegisterHotKey(
            IntPtr hWnd,        //要定义热



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#实现老板键功能的代码

相关文章

  • 2017-05-28C#实现的调用DOS命令操作类实例
  • 2017-05-28C#适用于like语句的SQL格式化函数
  • 2017-05-28C# 灵活使用类的方法
  • 2017-05-28c#中合并DataTable重复行的值
  • 2017-05-28详解C#中的接口属性以及属性访问器的访问限制
  • 2017-05-28.net使用Aspose.Words进行Word替换操作的实现代码
  • 2017-05-28使用Deflate算法对文件进行压缩与解压缩的方法详解
  • 2017-05-28c#剪切板操作的简单实例
  • 2017-05-28C#中的lock、Monitor、Mutex学习笔记
  • 2017-05-28C#实现绘制面形图表的方法详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#探秘系列(二)——IsXXX 系列方法
    • 解析C#设计模式编程中备忘录模式的运用
    • 使用C#正则表达式获取必应每日图片地址
    • 轻松学习C#的预定义数据类型
    • c# 关闭窗体时提示的小例子
    • C#飞行棋小程序设计代码
    • C#实现带百分比的进度条功能示例
    • C#中静态构造函数的几点说明介绍
    • C#简单输出日历的方法
    • 理解C#中的事件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有