本站首页    管理页面    写新日志    退出


«may 2026»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
================

注会练习软件
http://www.cpasoft.com.cn
我的注会软件官网

http://blog.163.com/abc7105@126/

 

 


哈哈,热爱快“过气”的DELPHI


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:注册会计师(注会)练习软件
日志总数:398
评论数量:116
留言数量:27
访问次数:3303964
建立时间:2005年6月6日




编程资料搜集中..
软件技术

吕向阳 发表于 2006/6/19 13:48:46

1.c#中如何得到一个月的天数(想当初要自己编),其实里面有函数 DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) 2     全局热键的例子 类Hotkey.csusing System;namespace Durius.Generics{public delegate void HotkeyEventHandler(int HotKeyID);/// <summary>/// System wide hotkey wrapper. ///  /// Robert Jeppesen/// Send bugs to robert@durius.com/// </summary>public class Hotkey : System.Windows.Forms.IMessageFilter{  System.Collections.Hashtable keyIDs = new System.Collections.Hashtable();  IntPtr hWnd;  /// <summary>  /// Occurs when a hotkey has been pressed.  /// </summary>  public event HotkeyEventHandler OnHotkey;  public enum KeyFlags  {   MOD_ALT = 0x1,   MOD_CONTROL = 0x2,   MOD_SHIFT = 0x4,   MOD_WIN = 0x8  }  [System.Runtime.InteropServices.DllImport("user32.dll")]  public static extern UInt32 RegisterHotKey( IntPtr hWnd, UInt32 id,    UInt32 fsModifiers, UInt32 vk);  [System.Runtime.InteropServices.DllImport("user32.dll")]  public static extern UInt32 UnregisterHotKey( IntPtr hWnd, UInt32 id);   [System.Runtime.InteropServices.DllImport("kernel32.dll")]  public static extern UInt32 GlobalAddAtom( String lpString );  [System.Runtime.InteropServices.DllImport("kernel32.dll")]  public static extern UInt32 GlobalDeleteAtom( UInt32 nAtom );  /// <summary>  /// Constructor.  Adds this instance to the MessageFilters so that this class can raise Hotkey events  /// </summary>  /// <param name="hWnd">A valid hWnd, i.e. form1.Handle</param>  public Hotkey(IntPtr hWnd)  {   this.hWnd = hWnd;   System.Windows.Forms.Application.AddMessageFilter(this);  }  /// <summary>  /// Register a system wide hotkey.  /// </summary>  /// <param name="hWnd">form1.Handle</param>  /// <param name="Key">Your hotkey</param>  /// <returns>ID integer for your hotkey. Use this to know which hotkey was pressed.</returns>  public int RegisterHotkey(System.Windows.Forms.Keys Key, KeyFlags keyflags)  {    UInt32 hotkeyid = GlobalAddAtom(System.Guid.NewGuid().ToString());    RegisterHotKey( (IntPtr)hWnd, hotkeyid, (UInt32)keyflags, (UInt32)Key);    keyIDs.Add(hotkeyid, hotkeyid);    return (int)hotkeyid;  }  /// <summary>  /// Unregister hotkeys and delete atoms.  /// </summary>  public void UnregisterHotkeys()  {   System.Windows.Forms.Application.RemoveMessageFilter(this);   foreach (UInt32 key in keyIDs.Values)   {    UnregisterHotKey(hWnd, key);     GlobalDeleteAtom(key);   }  }  public bool PreFilterMessage(ref System.Windows.Forms.Message m)   {   if (m.Msg == 0x312) /*WM_HOTKEY*/   {    if(OnHotkey != null)     {     foreach (UInt32 key in keyIDs.Values)     {      if((UInt32)m.WParam == key)      {       OnHotkey((int)m.WParam);       return true;      }     }    }   }   return false;  }}}测试程序Form1.csusing System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using Durius.Generics;namespace TestGenerics{/// <summary>/// Summary description for Form1./// </summary>public class Form1 : System.Windows.Forms.Form{  Hotkey hotkey;  int Hotkey1;  int Hotkey2;  private System.Windows.Forms.Label label1;  private System.Windows.Forms.Label label2;  private System.Windows.Forms.Label label3;  private System.Windows.Forms.Button button1;  /// <summary>  /// Required designer variable.  /// </summary>  private System.ComponentModel.Container components = null;  public Form1()  {   //   // Required for Windows Form Designer support   //   InitializeComponent();   /*    * Initialize our hotkeys. Pass in a handle to the main form in the constructor,    *  then call RegisterHotkey for each of our hotkey combinations and wire up    * the event    */   hotkey = new Hotkey(this.Handle);   Hotkey1 = hotkey.RegisterHotkey(System.Windows.Forms.Keys.D1, Hotkey.KeyFlags.MOD_WIN);   Hotkey2 = hotkey.RegisterHotkey(System.Windows.Forms.Keys.D2, Hotkey.KeyFlags.MOD_CONTROL);   hotkey.OnHotkey += new HotkeyEventHandler(OnHotkey);  }  /// <summary>  /// The hotkey event handler. If you have several hotkeys, you will have to check   /// which one was pressed using HotkeyID.  /// RegisterHotkey returns the HotkeyID that was assigned to your hotkey.  /// </summary>  /// <param name="HotkeyID"></param>  public void OnHotkey(int HotkeyID)  {   this.Activate();   if(HotkeyID == Hotkey1)   {    MessageBox.Show("WIN+1 pressed.");   }    else if(HotkeyID == Hotkey2)   {    MessageBox.Show("CTRL+2 pressed.");   }  }  /// <summary>  /// Clean up any resources being used.  /// </summary>  protected override void Dispose( bool disposing )  {   if( disposing )   {    hotkey.UnregisterHotkeys();    if (components != null)     {     components.Dispose();    }   }   base.Dispose( disposing );  }  #region Windows Form Designer generated code  /// <summary>  /// Required method for Designer support - do not modify  /// the contents of this method with the code editor.  /// </summary>  private void InitializeComponent()  {   this.label1 = new System.Windows.Forms.Label();   this.label2 = new System.Windows.Forms.Label();   this.label3 = new System.Windows.Forms.Label();   this.button1 = new System.Windows.Forms.Button();   this.SuspendLayout();   //    // label1   //    this.label1.Location = new System.Drawing.Point(16, 8);   this.label1.Name = "label1";   this.label1.Size = new System.Drawing.Size(200, 16);   this.label1.TabIndex = 0;   this.label1.Text = "Hotkeys:";   //    // label2   //    this.label2.Location = new System.Drawing.Point(16, 32);   this.label2.Name = "label2";   this.label2.Size = new System.Drawing.Size(208, 16);   this.label2.TabIndex = 1;   this.label2.Text = "Win + 1";   //    // label3   //    this.label3.Location = new System.Drawing.Point(16, 56);   this.label3.Name = "label3";   this.label3.Size = new System.Drawing.Size(208, 16);   this.label3.TabIndex = 2;   this.label3.Text = "Ctrl + 2";   //    // button1   //    this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;   this.button1.Location = new System.Drawing.Point(88, 80);   this.button1.Name = "button1";   this.button1.TabIndex = 3;   this.button1.Text = "About";   this.button1.Click += new System.EventHandler(this.button1_Click);   //    // Form1   //    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);   this.ClientSize = new System.Drawing.Size(168, 123);   this.Controls.AddRange(new System.Windows.Forms.Control[] {                    this.button1,                    this.label3,                    this.label2,                    this.label1});   this.Name = "Form1";   this.Text = "Hotkey";   this.ResumeLayout(false);  }  #endregion  /// <summary>  /// The main entry point for the application.  /// </summary>  [STAThread]  static void Main()   {   Application.Run(new Form1());  }  private void button1_Click(object sender, System.EventArgs e)  {   MessageBox.Show(this, @"System wide hotkey wrapper- Robert Jeppesenhttp://www.durius.com", "Hotkey sample");  }}}更新中...


阅读全文(2019) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.788 second(s), page refreshed 144816783 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号