• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 8 رای - 3.13 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: نمایش کلید فشرده شده
حالت خطی
#2
راه حل زیاده یکیشو میگم.
باید وضعیت کیبرد رو پیدا کنی یه دستور شرطی بزار اگر رو en بود کارکتر انگلیسی بگیره و اگر fa بود کارکتر a رو به عنوان ش در نظر بگیره

کد:
C# Signature:
[DllImport("user32.dll")]
static extern IntPtr GetKeyboardLayout(uint idThread);


کد:
///For using "imm32.dll"'s functions.

const int GCL_REVERSECONVERSION = 0x0002;

[DllImport("Imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hWnd);

[DllImport("User32.dll")]
public static extern IntPtr GetKeyboardLayout(int idThread);

[DllImport("Imm32.dll")]
public static extern int ImmGetConversionList(
    IntPtr hKL,
    IntPtr hIMC,
    string lpSrc,
    IntPtr lpDst,
    int dwBufLen,
    int uFlag          
    );

[DllImport("Imm32.dll")]
public static extern bool ImmReleaseContext(IntPtr hWnd,IntPtr hIMC);

[StructLayout(LayoutKind.Sequential)]
public class CANDIDATELIST
{
    public int  dwSize;      
    public int  dwStyle;      
    public int  dwCount;      
    public int  dwSelection;  
    public int  dwPageStart;  
    public int  dwPageSize;  
    public int  dwOffset;  
}

public string[] GetReverseConversion(string AText)
{
    string[] strList = null;
    if (AText.Length > 0)
    {
    IntPtr hIMC = ImmGetContext(this.Handle);
    IntPtr hKL = GetKeyboardLayout(0);
    int dwSize = ImmGetConversionList(hKL,hIMC,AText,IntPtr.Zero,0,GCL_REVERSECONVERSION);
    if (dwSize > 0)
    {
        IntPtr BufList = Marshal.AllocHGlobal(dwSize);
        try
        {
        ImmGetConversionList(hKL,hIMC,AText,BufList,dwSize,GCL_REVERSECONVERSION);
        CANDIDATELIST list = new CANDIDATELIST();
        Marshal.PtrToStructure(BufList,list);
        byte[] buf = new byte[dwSize];
        Marshal.Copy(BufList,buf,0,dwSize);
        Marshal.FreeHGlobal(BufList);
        int os = list.dwOffset;
        string str = System.Text.Encoding.Default.GetString(buf,os,buf.Length-os-3);
        char[] par = "\0".ToCharArray();
        strList = str.Split(par);
        }
        finally
        {
        ImmReleaseContext(this.Handle,hIMC);
        }
    }
    }
    return strList;
}

///The example of use of the above code

private void button1_Click(object sender, System.EventArgs e)
{
    listBox1.Items.Clear();
    listBox1.Items.AddRange(GetReverseConversion(textBox1.Text));
}


وضعیتو چک کن میتونی حتی زبان هم کاملا روی فارسی ست کنی در برنامه [/quote]
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
  


پیام‌های این موضوع
نمایش کلید فشرده شده - توسط analyze - 04-16-2012، 03:03 PM
RE: نمایش کلید فشرده شده - توسط Amin_Mansouri - 04-16-2012، 03:18 PM
RE: نمایش کلید فشرده شده - توسط analyze - 04-16-2012، 07:31 PM
RE: نمایش کلید فشرده شده - توسط Amin_Mansouri - 04-16-2012، 10:56 PM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Photo دیدن صفحه نمایش طرف کلاینت از طرف سرور atpf 4 8,896 06-24-2012، 07:04 AM
آخرین ارسال: Amin_Mansouri
  تابعی برای تعمیر و فشرده سازی پایگاه داده Access Ghoghnus 0 3,687 10-31-2011، 03:28 PM
آخرین ارسال: Ghoghnus
  نمایش help با کلید f1 در یک کنترل Ghoghnus 0 3,051 10-31-2011، 03:27 PM
آخرین ارسال: Ghoghnus
Bug قفل کردن صفحه کلید امیر 6 10,718 08-22-2011، 10:14 AM
آخرین ارسال: امیر

پرش به انجمن:


Browsing: 3 مهمان