백그라운드 애플리케이션으로 키 보내기
제공된 코드는 "k" 키를 메모장으로 보내려고 시도하지만 문제가 발생합니다. 이 문제를 해결하려면 코드의 여러 측면을 해결해야 합니다.
올바른 프로세스 처리:
코드에서는 메모장이 이미 실행 중이라고 가정합니다. 이를 정확하게 처리하려면 다음을 사용하여 첫 번째 메모장 프로세스를 가져와야 합니다.
Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
메모장이 현재 실행 중이 아닌 경우 다음을 사용하여 시작할 수 있습니다.
Process p = Process.Start("notepad.exe");
메모장 가져오기 전경으로:
메모장 프로세스가 있으면 해당 기본 창을 전경:
IntPtr h = p.MainWindowHandle; SetForegroundWindow(h);
입력 안정성 대기:
키를 보내기 전에 애플리케이션이 입력 루프를 안정화할 때까지 기다려야 합니다.
p.WaitForInputIdle();
보내기 키:
마지막으로 원하는 키를 보낼 수 있습니다:
SendKeys.SendWait("k");
관리자 권한 관련 가능한 문제:
언급할 가치가 있습니다 메모장이 관리자 권한으로 실행 중이고 응용 프로그램이 그렇지 않은 경우 이 방법은 작동하지 않을 수 있습니다.
수정된 코드:
필요한 수정 사항을 포함하는 수정된 코드는 다음과 같습니다.
[DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); Process p = Process.GetProcessesByName("notepad").FirstOrDefault(); if (p != null) { IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); } else { p = Process.Start("notepad.exe"); p.WaitForInputIdle(); IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); }
위 내용은 메모장과 같은 백그라운드 애플리케이션에 키를 안정적으로 보낼 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!