using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; namespace PTMedicalInsurance.Forms { public partial class PasswordKeyboardForm : Form { // 导入Windows API函数 [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] private static extern IntPtr GetFocus(); [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); private const uint WM_CHAR = 0x0102; private IntPtr _targetEditBox; public PasswordKeyboardForm(IntPtr targetEditBox) { InitializeComponent(); _targetEditBox = targetEditBox; } public PasswordKeyboardForm() { InitializeComponent(); } private void SendKeyToFocusedControl(char key) { IntPtr focusedHandle = GetFocus(); if (focusedHandle != IntPtr.Zero) { SendMessage(focusedHandle, WM_CHAR, (IntPtr)key, IntPtr.Zero); } } // 处理按钮点击事件 private void btn_1_Click(object sender, EventArgs e) { Button button = sender as Button; if (button != null) { // 使用 SendKeys 将按钮的文本发送到当前焦点控件 SendKeys.Send(button.Text); } } // 处理删除按钮点击事件 private void btn_delete_Click(object sender, EventArgs e) { SendKeys.Send("{BACKSPACE}"); } // 处理关闭按钮点击事件 private void btn_Exit_Click(object sender, EventArgs e) { this.Close(); // 关闭密码键盘 } private void btn_OK_Click(object sender, EventArgs e) { SendTextToEditBox(sender.ToString()); } // 将文本发送到目标编辑框 private void SendTextToEditBox(string text) { if (_targetEditBox != IntPtr.Zero) { foreach (char c in text) { SendMessage(_targetEditBox, WM_CHAR, (IntPtr)c, IntPtr.Zero); } } } private void btn_clear_Click(object sender, EventArgs e) { SendKeys.Send("^{A}"); // 全选 SendKeys.Send("{DEL}"); // 删除 } private void PasswordKeyboardForm_Load(object sender, EventArgs e) { this.TopMost = true; } } }