2014-09-23 3 views
0

초점을 맞춘 창으로 외부 창을 어떻게 시뮬레이트 할 수 있습니까? 메모장 창에 키를 보내려고하고 메모장 창에 포커스가있는 경우에만 작동하기 때문에 필요합니다. 그러나 나는 내 창문에 초점을 잃고 싶지 않다.초점을 맞출 창을 시뮬레이트하십시오.

public IntPtr Find(string taskName, string windowName) 
{ 
    return Fenster.FindWindow(taskName, windowName); 
} 
public void Send(IntPtr hwnd, string text) 
{ 
    if (!hwnd.Equals(IntPtr.Zero)) 
    { 
     SendKeys.Send(text); 
    } 
} 
public bool SetForeground(IntPtr hwnd) 
{ 
    return SetForegroundWindow(hwnd); 
} 

[DllImport("user32.dll", EntryPoint = "FindWindow")] 
private static extern IntPtr FindWindow(string lp1, string lp2); 

[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)] 
[return: MarshalAs(UnmanagedType.Bool)] 
private static extern bool SetForegroundWindow(IntPtr hWnd); 

감사합니다. 직접 SendMessage 또는 PostMessage를 통해 - (응용 프로그램 및 목적에 따라 달라질 수 있습니다 WM_KEY_DOWNWM_KEY_UP 또는 WM_CHAR 중 하나를)

+0

당신은 할 수 없거나 적어도 원하지 않습니다. 메모장에 적절한 메시지를 보내고 SendKeys를 사용하지 마십시오. – CodeCaster

+0

Sendkeys를 사용하지 않는 키를 보내는 다른 방법이 있습니까? – Thomas

+0

이제 올바른 질문을하고 있습니다. 중복을 참조하십시오. :)'SendMessage()'를 사용하면 [윈도우의 메시지 대기열에'WM_CHAR' 메시지를 보낼 수 있습니다] (http://stackoverflow.com/questions/13514820/sendmessage-when-to-use-keydown-syskeydown-etc) 포커스가없는 창에 대해 키 누르기를 시뮬레이트합니다. – CodeCaster

답변

1

가장 좋은 방법은 당신이 제어하고 키 메시지를 보낼 창의 HWND를 얻을 수있을 것이다.

관련 문제