Giriş
İlk klavye yazısı tuş basılmasını almak içindi. Bu örnekte kendimiz tuş basılmış gibi yapıyoruz.
1. SendKeys Yöntemi
SendKeys Sınıfı yazısına taşıdım.
2. Interop Yöntemi
Tüm bu metod çağrıları için Interop yapmak gerekiyor.Şöyle yaparız.
1. Önce tuş göndermek istediğimiz pencereyi SetForegroundWindw ile ön plana alıyoruz.
2. Daha sonra SendMessage ile WM_KEYDOWN ve WM_KEYUP mesajlarını gönderiyoruz.
İlk klavye yazısı tuş basılmasını almak içindi. Bu örnekte kendimiz tuş basılmış gibi yapıyoruz.
1. SendKeys Yöntemi
SendKeys Sınıfı yazısına taşıdım.
2. Interop Yöntemi
Tüm bu metod çağrıları için Interop yapmak gerekiyor.Şöyle yaparız.
1. Önce tuş göndermek istediğimiz pencereyi SetForegroundWindw ile ön plana alıyoruz.
2. Daha sonra SendMessage ile WM_KEYDOWN ve WM_KEYUP mesajlarını gönderiyoruz.
using System.Runtime.InteropServices;
namespace KeySendTest2
{
class Program
{
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg,
IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
public static void SendKeyStroke(IntPtr window, ushort key)
{
const uint WM_KEYDOWN = 0x100;
const uint WM_KEYUP = 0x0101;
SendMessage(window, WM_KEYDOWN, ((IntPtr)key), (IntPtr)0);
SendMessage(window, WM_KEYUP, ((IntPtr)key), (IntPtr)0);
}
static void Main(string[] args)
{
IntPtr hWnd = FindWindow("the class here", null);
SetForegroundWindow(hWnd);
System.Threading.Thread.Sleep(3000);
while (true)
{
SendKeyStroke(hWnd, (ushort)Keys.F3); // Doesn't work
//SendKeys.SendWait(Keys.F3); -- Also doesn't work
}
}
}
}
Hiç yorum yok:
Yorum Gönder