1. 程式人生 > >C#獲取游標位置

C#獲取游標位置

摘自:http://zhidao.baidu.com/question/491979457.html
如果以下的文章都不是你想要的看一下 這裡
我想在一個C#程式執行的時候獲取游標的位置!不管這個游標是在程式內部還是外部都能在游標處輸入文字,就像如果游標在記事本上就在記事本上輸入,在word上就在Word上輸入,在網頁上就在網頁上輸入文字!關鍵是獲取游標的位置。

[DllImport("user32.dll", EntryPoint = "SendMessageA")]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);

[DllImport("user32 ")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

private void button2_Click(object sender, EventArgs e)
{
int EM_LINEINDEX = 0xBB;
int EM_LINEFROMCHAR = 0xC9;
int EM_GETSEL = 0xB0;
int EM_GETLINE = 0xC4;

//通過API完成很簡單的 
//通過向文字框傳遞EM_LINEFROMCHAR訊息可以得到游標所在的行數 
int Row = (int)SendMessage(textBox1.Handle, EM_LINEFROMCHAR, -1, 0);

////通過向文字框傳遞EM_GETSEL訊息可以得到編輯控制元件中一段選定內容的起點與終點字元的個數 
//int s = (int)SendMessage(textBox1.Handle, EM_GETSEL, 0, 0);
////通過向文字框傳遞EM_GETSEL訊息可以得到每一行的第一個字元在全文中的字元序號 
//int li = (int)SendMessage(textBox1.Handle, EM_LINEINDEX, -1, 0);
//int Col = (s & 0xffff) - li + 1;

StringBuilder currentLine = new StringBuilder(256);
SendMessage(textBox1.Handle, EM_GETLINE, Row, currentLine);
MessageBox.Show(currentLine.ToString());
}