Тема: ToASCII - C#
Показать сообщение отдельно

  #7  
Старый 26.08.2009, 19:01
QJHoly
Новичок
Регистрация: 28.11.2007
Сообщений: 13
Провел на форуме:
115313

Репутация: 1
По умолчанию

Я вот начал переводить только не очень получается. Можете не много помочь тут сказано что к операндам типа int нельзя применять && ||.
Код:
[DllImport("user32")] 
       public static extern int OemKeyScan(int wOemChar); 
       [DllImport("user32", EntryPoint = "PostMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
       public static extern bool PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

        static byte ORD(char ch)
       {
           return System.Text.Encoding.ASCII.GetBytes(new char[] { ch })[0];
       }

       static char CHR(byte code)
       {
           return System.Text.Encoding.ASCII.GetChars(new byte[] { code })[0];
       }

        public static void SendKey(char Key)
        {
          ushort ScanCode, vKey, wParam;
          int lParam, ConvKey;
          bool Shift, Ctrl;

            ConvKey = OemKeyScan(ORD(Key));

            ScanCode = (ConvKey && 0x000000FF) || 0xFF00;
            vKey = ORD(Key);
            wParam = vKey;
            lParam = (int)ScanCode << 16 || 1;

            if ((ConvKey && 0x00020000) != 0) 
            SendShift(BotContro1l.mem.WindowHandle, true);
            if ((ConvKey && 0x00040000) != 0) 
            SendCtrl(BotContro1l.mem.WindowHandle, true);

            PostMessage(BotContro1l.mem.WindowHandle, WM_KEYDOWN, vKey, lParam);
            PostMessage(BotContro1l.mem.WindowHandle, WM_CHAR, vKey, lParam);
            lParam = lParam || 0xC0000000;
            PostMessage(BotContro1l.mem.WindowHandle, WM_KEYUP, vKey, lParam);

            if ((ConvKey && 0x00020000) != 0)
            SendShift(BotContro1l.mem.WindowHandle, false);
            if ((ConvKey && 0x00040000) != 0)
            SendCtrl(BotContro1l.mem.WindowHandle, false);
        }
 
Ответить с цитированием