PDA

View Full Version : سوال: مشکل با SendKeys



sa.mousavi
یک شنبه 27 دی 1388, 12:39 عصر
سلام.

من یه برنامه نوشتم که فوکوس می کنه روی یه پنجره و با فرمان SendKeys یه رشته رو اونجا وارد می کنه. اما مشکل اینه که از هر کاراکتر چندتا (به تعداد نامعلوم) وارد می کنه! مثلا:


SendKeys.Send("Ali");
رو که می دم متنی که وارد میشه اینجوریه:



AAAAAAlllllliiiiiiiii
مشکل مال چی می تونه باشه؟

سیستم عاملم Win 7 هست.

FastCode
یک شنبه 27 دی 1388, 15:42 عصر
از sendmessage استفاده کن.

sa.mousavi
یک شنبه 27 دی 1388, 17:45 عصر
ممنون، میشه یه رشته رو به عنوان پارامتراش قرار داد؟ ممنون میشم اگه یه نمونه کوتاه ازش رو برام بذاری.

FastCode
یک شنبه 27 دی 1388, 22:56 عصر
توی یه کد فایل:

namespace Win32API
{
public class Windows
{
const int WM_SETTEXT = 12;
const int WM_KEYDOWN = 256;
const int WM_KEYUP = 257;
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
private static extern bool SetControlTextSendMessage(Int32 hWnd, Int32 wMsg, Int32 wParam, string lParam);
public static void SetControlText(System.Windows.Forms.IWin32Window Control, string Text)
{
SetControlTextSendMessage(Control.Handle.ToInt32() , WM_SETTEXT, 0, Text);
}
public static void SetControlText(System.Windows.Forms.TextBoxBase Control, string Text)
{
SetControlTextSendMessage(Control.Handle.ToInt32() , WM_SETTEXT, 0, Control.Text.Substring(0, Control.SelectionStart) + Text + Control.Text.Substring(Control.SelectionStart + Control.SelectionLength));
}
}
}
توی فرم Load :

txtbox1.Text="AB";
Win32API.Windows.SetControlText(this, "Hello");
txtbox1.SelectionStart = 0; Win32API.Windows.SetControlText(this.txtbox1, "1");
txtbox1.SelectionStart = 2; Win32API.Windows.SetControlText(this.txtbox1, "2");
txtbox1.SelectionStart = 4; Win32API.Windows.SetControlText(this.txtbox1, "3");