2008年5月25日

開啟「文字服務和輸入語言」對話方塊

今天有個需求,客戶打開電腦的時候,自動跳出選擇輸入法的視窗



讓客人自己手動選擇自己要的輸入法,在網路上搜尋了一下



可以用下面這個命令,直接放在啟動或是批次檔都OK 





rundll32.exe shell32.dll,Control_RunDLL input.dll 



OR 



start rundll32.exe shell32.dll,Control_RunDLL input.dll

2008年5月20日

C# 註冊系統快速鍵

最近在寫一些遊戲的模擬人性化操作小程式...絕對不是外掛= =



碰到了一些問題,就是想要在按特殊按鍵的時候自動執行或關閉程式

在網路上查了一下資料,發現可以用註冊快速鍵的方式來完成



程式碼大概長下面這個樣子



using的部分添加這個鬼

using System.Runtime.InteropServices;



宣告的部分添加四個鬼

[DllImport("user32.dll")] 

public static extern bool RegisterHotKey(IntPtr hWnd, 

        int id, // handle to window

        uint fsModifiers, // key-modifier options

        Keys vk // virtual-key code

);



[DllImport("user32.dll")] 

public static extern bool UnregisterHotKey(IntPtr hWnd,

        int id // hot key identifier 

);




protected override void WndProc(ref Message m)

{

            const int WM_HOTKEY = 0x0312; 



            switch (m.Msg)

            {

                case WM_HOTKEY:

                    ProcessHotkey(m); //按下热键时调用ProcessHotkey()函数

                    break;

            }

            base.WndProc(ref m); //将系统消息传递自父类的WndProc

}


private void ProcessHotkey(Message m)

{

            IntPtr id = m.WParam;

            

            string sid = id.ToString();

            switch (sid)

            {

                case "100": MessageBox.Show("left"); break

                case "200": MessageBox.Show("right"); break

                case "300":

                    this.Visible = true;

                    break;

                case "400":

                    this.Visible = false;

                    break;

            }

}



初始化的部分添加隨便鬼

public Form1()

{

        InitializeComponent();


        RegisterHotKey(Handle, 100, 2, Keys.Left); // Control + 鍵盤左

        RegisterHotKey(Handle, 200, 2, Keys.Right); //Control + 鍵盤右

        RegisterHotKey(Handle, 300, 2, Keys.Up); // Control + 鍵盤上

        RegisterHotKey(Handle, 400, 2, Keys.Down); // Control + 鍵盤下



         ...

}



private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

        UnregisterHotKey(Handle, 100); 

        UnregisterHotKey(Handle, 200); 

        UnregisterHotKey(Handle, 300);

        UnregisterHotKey(Handle, 400); 

}

2008年5月19日

C# 檢查是否輸出數字

一直以來我都不知道原來C#有個char.IsNumber()的東西

超好用的,可以檢查字元是不是數字



以前都用

try

{

        Convert.ToInt32(str);

}

catch(Exception ex)

{}




XDrz 好爛的方法歐...



現在我都改成下面這個方法,在KeyPress的事件裡面加一個判斷就好了...



private void xxx_KeyPress(object sender, KeyPressEventArgs e)

{

        if (!char.IsNumber(e.KeyChar))

        {

                e.KeyChar = '\n';

        }

}




不知道有沒有更好的方法~快來分享吧

C# 自動轉成半型文字

使用.NET 2005開發視窗程式

經常會碰到一個問題,就是輸入法常會莫名其妙變成全型 = =+



所以常常寫出來的程式被朋友嫌得要死

現在暫時找到一個解決的小撇步



就是在TextBox的KeyPress事件中

使用如下的程式片段




e.KeyChar = Strings.StrConv(e.KeyChar.ToString(), VbStrConv.Narrow, 0).ToCharArray()[0];



加入額外參考

Microsoft.VisualBasic



加入額外using


using Microsoft.VisualBasic;



如此一來就無論全型半型,出來的都會變成半型唷