Mam mały program, który symuluje CTR + c & CTR + v (skopiuj & pasta) zdarzeń z użyciem systemu keybd_event
. Problem polega na tym, że po uruchomieniu programu komputer działa tak, jakby kluczzostał naciśnięty, a następnie - jeśli wpiszesz a wybierze cały dokument, jeśli obrócę kółko myszy, zmieni się strona tekstowa, itd. to się dzieje nie tylko w edytorze Visual Studio, ale w każdym innym programie, który został otwarty, podczas gdy program prowadził jako Słowo itp Oto mój kod:klawisz Ctrl przechowywane w dół po symulację klawisz Ctrl klucz zdarzeń i ctrl się zdarzenie
//The system keyboard event.
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_LCONTROL = 0xA2; //Left Control key code
public const int C = 0x43; // C key code
public const int V = 0x56; // V key code
static void Main(string[] args)
{
Thread.Sleep(1000);// So I have time to select something.
//Simulate ctrl+c
keybd_event(VK_LCONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(C, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(C, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
//Simulate ctrl+v
keybd_event(VK_LCONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(V, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(V, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
}
Czy ktoś wie co mogę zrobić, aby rozwiązać ten problem problem?
Nie używaj KEYEVENTF_EXTENDEDKEY, zamiast tego użyj 0. Nie używaj VK_LCONTROL, zamiast tego użyj VK_CONTROL. –