Tjenare Jag skrev ihop ett mycket kort program som enbart skickar en textsträng till ett redan öppnat notepad fönster så att du har något att börja med.Skriva text till aktivt fält i ett annat program
Någon som sitter på kunskap om hur jag i ett program, skickar text till en specifik inmatnings-ruta i ett annat program (fönster)?
Jag vill koda ett program, i vilket du matar in text i en textruta.
När du sedan klickar på en knapp, skall denna text visas i ett annat fönster.
Går det att kvarhålla fokus på det fönster som är aktivt INNAN jag startar mitt program?
Fast då kanske jag inte kan mata in text i mitt program?
Är detta möjligt?Sv: Skriva text till aktivt fält i ett annat program
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Runtime.InteropServices;
/// C# / NET 2.0 / AUTOGENERATED 10 jul 2006
namespace Zoomware.Examples.ProcessManipulation
{
class Test
{
[DllImport ( "user32.dll" )]
static extern bool SetWindowText ( IntPtr hWnd, string lpString );
[DllImport ( "user32.dll", SetLastError = true )]
public static extern IntPtr FindWindowEx ( IntPtr parentHandle, IntPtr childAfter, string className, IntPtr windowTitle );
[DllImport ( "user32.dll", CharSet = CharSet.Auto )]
static extern IntPtr SendMessage ( IntPtr hWnd, uint Msg, IntPtr wParam, string lParam );
[STAThread]
static void Main ( string [ ] args )
{
Process [ ] p = Process.GetProcessesByName ( "notepad" );
// notepad har en Edit kontroll, fixa en pekare till det fönstret.
IntPtr child = FindWindowEx ( p [ 0 ].MainWindowHandle, IntPtr.Zero, "Edit", IntPtr.Zero );
// skicka WM_SETTEXT (0x000C) till edit fönstret.
SendMessage ( child, 0x000C, IntPtr.Zero, "sendmessage test" );
// kommenterade ut denna rad eftersom notepads edit kontroll inte ville ta emot texten som skickas
// SetWindowText ( child, "setwindowtext test" );
}
}
}