| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.InteropServices;
- namespace RFID
- {
- [StructLayout(LayoutKind.Sequential)]
- public struct RECT
- {
- int left;
- int top;
- int right;
- int bottom;
- }
- public class SendMsg
- {
- [DllImport("user32.dll")]
- public static extern IntPtr GetForegroundWindow();
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
- [DllImport("user32.dll")]
- static extern uint GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
- [DllImport("user32.dll")]
- static extern bool GetGUIThreadInfo(uint idThread, ref GUITHREADINFO lpgui);
- [StructLayout(LayoutKind.Sequential)]
- public struct GUITHREADINFO
- {
- public int cbSize;
- public int flags;
- public IntPtr hwndActive;
- public IntPtr hwndFocus;
- public IntPtr hwndCapture;
- public IntPtr hwndMenuOwner;
- public IntPtr hwndMoveSize;
- public IntPtr hwndCaret;
- public RECT rectCaret;
- }
- [StructLayout(LayoutKind.Sequential)]
- public struct RECT
- {
- int left;
- int top;
- int right;
- int bottom;
- }
- public GUITHREADINFO? GetGuiThreadInfo(IntPtr hwnd)
- {
- if (hwnd != IntPtr.Zero)
- {
- uint threadId = GetWindowThreadProcessId(hwnd, IntPtr.Zero);
- GUITHREADINFO guiThreadInfo = new GUITHREADINFO();
- guiThreadInfo.cbSize = Marshal.SizeOf(guiThreadInfo);
- if (GetGUIThreadInfo(threadId, ref guiThreadInfo) == false)
- return null;
- return guiThreadInfo;
- }
- return null;
- }
- public void SendText(string text)
- {
- IntPtr hwnd = GetForegroundWindow();
- if (String.IsNullOrEmpty(text))
- return;
- GUITHREADINFO? guiInfo = GetGuiThreadInfo(hwnd);
- if (guiInfo != null)
- {
- for (int i = 0; i < text.Length; i++)
- {
- SendMessage(guiInfo.Value.hwndFocus, 0x0102, (IntPtr)(int)text[i], IntPtr.Zero);
- }
- }
- }
- }
- }
|