吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 748|回复: 15
收起左侧

[经验求助] C#如何绕过输入法直接输出字符

[复制链接]
mimiwuqi 发表于 2026-2-27 14:15
25吾爱币
想用c#做个用于win11下的账号登陆小工具,程序打开时光标会自动停在账号输入框中,此时若直接用sendkeys.sendwait来输入字符,会自动切换成中文,导致输入失败。在win10中却不是这样,在win10中打开程序时是中文,我可以模拟一下shift来切换成英文来继续后面的输入。有没有什么方法可以直接输出字符,绕过输入法。用go的robotgo的时候就可以,就想知道c#行不行。

最佳答案

查看完整内容

用Windows API直接发消息

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

keiwen27 发表于 2026-2-27 14:15
用Windows API直接发消息
[Asm] 纯文本查看 复制代码
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

const uint WM_CHAR = 0x0102;

// 直接往目标窗口发字符
foreach (char c in "username")
{
    SendMessage(targetHwnd, WM_CHAR, (IntPtr)c, IntPtr.Zero);
    Thread.Sleep(50);
}
 楼主| mimiwuqi 发表于 2026-2-27 14:44
keiwen27 发表于 2026-2-27 14:22
用Windows API直接发消息
[mw_shl_code=asm,true][DllImport("user32.dll")]
static extern IntPtr SendM ...

大神,我用记事本试了一下,但是不好使。。。。
 楼主| mimiwuqi 发表于 2026-2-27 14:48
本帖最后由 mimiwuqi 于 2026-2-27 14:49 编辑

[C#] 纯文本查看 复制代码
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;

class Program
{

    [DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();
    

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    const uint WM_CHAR = 0x0102;

    static void Main()
    {

        Process.Start("notepad.exe");
        Thread.Sleep(2000);
        
        IntPtr targetHwnd = GetForegroundWindow();
        
        string text = "username";
        foreach (char c in text)
        {
            SendMessage(targetHwnd, WM_CHAR, (IntPtr)c, IntPtr.Zero);
            Thread.Sleep(50);
        }
    }
}
 楼主| mimiwuqi 发表于 2026-2-27 15:13
keiwen27 发表于 2026-2-27 14:22
用Windows API直接发消息
[mw_shl_code=asm,true][DllImport("user32.dll")]
static extern IntPtr SendM ...

大神你这个方法是不是要发到具体的控件上,可那个程序是个游戏,如何知道它的控件名称。。。
 楼主| mimiwuqi 发表于 2026-3-5 09:28
看来这个问题是比较复杂,看着问题不大,实际实现起来确实有难度。
博爵 发表于 2026-3-5 09:37
我用py调用驱动键鼠dd,做个账号密码登陆。需要手动放入光标,c#没试过。wga登陆用的,其他没试过
 楼主| mimiwuqi 发表于 2026-3-5 13:14
博爵 发表于 2026-3-5 09:37
我用py调用驱动键鼠dd,做个账号密码登陆。需要手动放入光标,c#没试过。wga登陆用的,其他没试过

不得不说,python的库实在是强大,只有你想不到,没有人做不到的。
博爵 发表于 2026-3-5 14:48
mimiwuqi 发表于 2026-3-5 13:14
不得不说,python的库实在是强大,只有你想不到,没有人做不到的。

py面向ai编程比较简单,c#也可以,我不懂代码,都是ai开发.原来店家发我的软件是易语言版本,可以自动登录,问题他没有勾选保存密码,我就找dd驱动,利用py搞了一个,凑合用
 楼主| mimiwuqi 发表于 2026-3-6 07:34
博爵 发表于 2026-3-5 14:48
py面向ai编程比较简单,c#也可以,我不懂代码,都是ai开发.原来店家发我的软件是易语言版本,可以自动登 ...

哦,你这种的估计是绑定窗口里的控件,那种直接发送,不存在输入法的问题。我这个实是不知道控件是啥,且也没有那个技能去找。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-11-6 05:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表