相关疑难解决方法(0)

c#将键盘命令发送到另一个窗口/进程

我正在尝试编写一个程序,它将获取一行数据并将其传递到另一个窗口/进程.

这是我到目前为止的代码,但我还没有弄清楚如何将键盘命令发送到OUTLOOK进程.

我希望能够使用Tab命令/键和Enter命令/键.

这是我到目前为止所尝试的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Windows.Forms;

namespace Config
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            System.Threading.Thread.Sleep(30);//300000
            TextReader tr = new StreamReader("config.txt");
            Clipboard.SetText(tr.ReadLine());
            tr.Close();

            var proc = Process.GetProcessesByName("OUTLOOK").FirstOrDefault();
            if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
            {
                SetForegroundWindow(proc.MainWindowHandle);
                //SendKeys.Send("{ENTER}");
                //   Clipboard.GetText();
            }
        }

        [DllImport("user32")]
        private static extern bool SetForegroundWindow(IntPtr hwnd);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# command keyboard-events

12
推荐指数
4
解决办法
6万
查看次数

WPF入队并重放关键事件

我正在尝试提高WPF业务应用程序的响应能力,以便当用户在服务器响应之后等待新屏幕出现的"屏幕之间"屏幕时,他们仍然可以输入数据.我能够对事件进行排队(在后台面板上使用PreviewKeyDown事件处理程序),但是当我加载时,我很难将新事件中的事件抛出.特别是新面板上的Te​​xtBoxes没有拾取文本.我已尝试提升相同的事件(在捕获它们时将Handled设置为true,再次提升时将Handled设置为false)创建新的KeyDown事件,新的PreviewKeyDown事件,执行ProcessInput,在面板上执行RaiseEvent,将焦点设置在右侧TextBox和TextBox上的RaiseEvent做了很多事情.

看起来应该很简单,但我无法弄明白.

以下是我尝试过的一些事情.考虑一个名为EventQ的KeyEventArgs队列:

这是一件不起作用的事情:

        while (EventQ.Count > 0)
        {
            KeyEventArgs kea = EventQ.Dequeue();
            tbOne.Focus(); // tbOne is a text box
            kea.Handled = false;
            this.RaiseEvent(kea);
        }
Run Code Online (Sandbox Code Playgroud)

这是另一个:

        while (EventQ.Count > 0)
        {
            KeyEventArgs kea = EventQ.Dequeue();
            tbOne.Focus(); // tbOne is a text box
            var key = kea.Key;                    // Key to send
            var routedEvent = Keyboard.PreviewKeyDownEvent; // Event to send
            KeyEventArgs keanew = new KeyEventArgs(
                Keyboard.PrimaryDevice,
                PresentationSource.FromVisual(this),
                0,
                key) { RoutedEvent = routedEvent, Handled = false };

            InputManager.Current.ProcessInput(keanew);
        }
Run Code Online (Sandbox Code Playgroud)

而另一个: …

keyboard wpf

11
推荐指数
1
解决办法
4569
查看次数

如何将F4密钥发送到C#中的进程?

我正在从Windows应用程序启动一个进程.当我按下按钮时,我想F4在该过程中模拟按键.我怎样才能做到这一点?

[稍后编辑]我不想F4在我的表单中模拟按键,但在此过程中我开始了.

c# keyboard key process

9
推荐指数
2
解决办法
3万
查看次数

我无法理解如何使用SendMessage或PostMessage调用

我需要在第三方应用程序中模拟按键.假设我有一个需要向Calculator应用程序发送"8"的C#应用​​程序.我不能使用.Net的SendKeys或win32 api的keybd_event,因为它们都要求窗口是最活跃的窗口,这在我的情况下不是这种情况.

这样我就可以调用sendMessage和postMessage.我在过去的三个小时里一直试图获得一些结果,但现在我完全没有希望了.

我有以下内容:

        [DllImport("user32.dll")]
    public static extern int FindWindow(string lpClassName,string lpWindowName);
    [DllImport("user32.dll")]
    public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);

    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool PostMessage(int hWnd, uint Msg, int wParam, int lParam);

    private void button1_Click(object sender, EventArgs e)
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_SYSCOMMAND = 0x018;
        const int SC_CLOSE = 0x053;

        int WindowToFind = FindWindow(null,"Calculator");

        int result = SendMessage(WindowToFind, WM_SYSCOMMAND, SC_CLOSE, 0);
        Boolean result2 = PostMessage(WindowToFind, …
Run Code Online (Sandbox Code Playgroud)

c# postmessage keypress handler sendmessage

7
推荐指数
1
解决办法
4万
查看次数

SendKey.Send()不工作

我正在使用WPF,我导入了System.Windows.Form引用.这是我的代码:

Process[] process = Process.GetProcessesByName("wmplayer");
SetForegroundWindow(process[0].MainWindowHandle);
Thread.Sleep(200);
System.Windows.Forms.SendKeys.Send("^p");
Run Code Online (Sandbox Code Playgroud)

Windows Media Player执行聚焦,但未收到任何击键.为什么?

c# forms wpf

7
推荐指数
1
解决办法
2万
查看次数

使用直接输入向游戏发送键击

我可以使用PostMessageapi 发送任何Windows应用程序键击.但是我无法通过使用将关键笔划发送到游戏窗口PostMessage.

任何人都知道使用直接输入功能从C#向游戏发送密钥.

c#

6
推荐指数
2
解决办法
2万
查看次数

如何模拟按键单击按键 - Unity

我对Unity中的脚本非常陌生,我正在尝试创建一个按钮,一旦点击它就需要模拟按下的'F'键(拿起一个项目)

这是我目前的代码,在写这篇文章之前,我已经看过整个团结论坛,但找不到任何有用的东西.

码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Collections;
public class button : MonoBehaviour {

    public void ButtonToClick(int clickToButton)
    {
        SendKeys.Send("F");
    }
} 
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

5
推荐指数
1
解决办法
6988
查看次数

SendKeys 到特定程序而不是焦点

我正在尝试使用 sendkeys,但将其发送到非重点程序。例如,我想使用 sendkeys 到记事本 - 无标题,而不是聚焦。对不起,如果不清楚,我会详细说明。我目前的代码是这样的:

        string txt = Regex.Replace(richTextBox3.Text, "[+^%~()]", "{$0}");

        System.Threading.Thread.Sleep(1000);
        SendKeys.Send(txt + "{ENTER}");
Run Code Online (Sandbox Code Playgroud)

如果我使用 SendMessage,有人愿意向我展示我应该做什么的例子吗?我没有找到任何我在网上找到的对我的问题非常有用的东西。

c# sendkeys

4
推荐指数
1
解决办法
1万
查看次数

.NET sendkeys到计算器

下面的sendkeys代码适用于记事本,但它不适用于计算器.问题是什么?(与我发送的.NET程序中的Sendkeys问题相比,这是另一个问题)

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("User32")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
    IntPtr calculatorHandle = FindWindow("SciCalc", "Calculator");
    //IntPtr calculatorHandle = FindWindow("Notepad", "Untitled - Notepad");
    if (calculatorHandle == IntPtr.Zero)
    {
        MessageBox.Show("Calculator is not running.");
        return;
    }
    SetForegroundWindow(calculatorHandle);
    System.Threading.Thread.Sleep(1000);
    SendKeys.SendWait("111*11=");
    //SendKeys.SendWait("{ENTER}");
    //cnt++;
    SendKeys.Flush();
}
Run Code Online (Sandbox Code Playgroud)

c# sendkeys

3
推荐指数
1
解决办法
3294
查看次数

C# 中的虚拟键盘

我想编写一个应用程序,根据用户单击的按钮发送各种键码。我如何发送密钥代码?例如,如何模拟按“a”键?修饰键怎么样?

c# keyboard

3
推荐指数
1
解决办法
2万
查看次数

单击sendmessage API中的按钮

如何在C#中的sendmessage API中模拟按钮单击?

c# api native

2
推荐指数
1
解决办法
2万
查看次数

在 C# 中模拟按键

所以我想让我的程序在计时器停止后自动模拟按键。我已经有了计时器和每个设置,我只需要以某种方式模拟按键。在应用程序的 Web 浏览器上弹出下载消息后,我只希望程序模拟为“ESC”键按下以退出下载消息弹出窗口。我将如何模拟按键?

c# escaping key simulate

1
推荐指数
1
解决办法
1万
查看次数

C# 如何每隔几分钟/秒按一次键盘按键?

我正在寻找一个代码,可以每 50 秒按一次键盘上的任意键,假设该键是数字 5 键。

只要确保它不会只输入 5,我希望它自己按下该键。

编辑:我只是想让它按任何键盘键,仅此而已。就像它的转变或大写锁定或其他什么

c#

-1
推荐指数
1
解决办法
4889
查看次数