c# Envoi de commandes au clavier dans une autre fenêtre / processus
Je suis en train d'écrire un programme qui va prendre une ligne de données et de les passer dans une autre fenêtre /processus.
C'est le code que j'ai à ce jour, mais je n'ai pas été en mesure de déterminer la façon dont je voudrais envoyer la commande de clavier pour le processus d'OUTLOOK.
Je voudrais être en mesure d'utiliser l'Onglet de commande et la commande d'Entrée /clé.
C'est ce que j'ai essayé jusqu'à présent
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);
}
}
OriginalL'auteur monkeylumps | 2011-12-22
Vous devez vous connecter pour publier un commentaire.
SendMessage
est ce que vous cherchez.Peut-être que votre question a déjà été résolu ici: Comment faire pour envoyer du texte dans le bloc-notes en C#/Win32?
Vous pouvez définir un indicateur pour les touches. E. g. pour la touche de tabulation:
SendMessage(hwnd, WM_KEYDOWN, VK_TAB, NULL)
OriginalL'auteur arminb
Essayer de qch comme ça.
SendKeys
ne fonctionne pas solide. Prétendre à l'autre fenêtre est au premier plan. Dans ce cas, vous envoyez vos clés à la mauvaise application.C'est pourquoi il est fait avec SendWait, puis rincer.
Désolé pour la résurrection, mais aucune idée de comment je peux faire ça --sur internet? J'ai besoin de faire essentiellement la même chose, mais l'application cible et les processus en cours d'exécution sur une autre machine!
Quelqu'un pourrait-il aider, s'il vous plaît? Je l'ai fait et sa fonctionne mais j'ai un gros problème. Je ne peux pas utiliser le formulaire à nouveau. J'ai créé un formulaire et de le mettre bouton démarrer et arrêter. Mais je ne peux pas sélectionner le formulaire cliquez sur arrêter... Tout conseil, s'il vous plaît? Ty!!!!
OriginalL'auteur Elastep
J'ai écrit un couple de programmes qui envoyer des séquences de touches à l'arrière-plan de windows, j'généralement mis en œuvre PostMessage/SendMessage. J'ai documenté tous mes conclusions ici!
Mais vous fondamentalement être à l'aide d'un faible niveau c appel pour mettre les messages dans le message de windows file d'attente pour permettre à l'application de ramasser les touches.
PostMessage
SendMessage
S'il vous plaît laissez-moi savoir si vous avez des questions, ma bibliothèque est écrite en C# et je serais heureux de le partager. Cette méthode permet également l'utilisation de la souris dans une fenêtre d'arrière-plan 🙂
Tout le code a été vérifié dans GitHub: https://github.com/EasyAsABC123/Keyboard
OriginalL'auteur abc123
Considérant que vous savez quand et ce clavier de commande que tu vas envoyer à Outlook, vous devez utiliser SendMessage fonction Windows API.
Juste un exemple
OriginalL'auteur Tigran