과 비슷한 문제가 있지만 여전히 해결할 수 없습니다.sendmessage 및 WM_SETTEXT를 사용하는 동안 textchanged 이벤트를 트리거 할 수 없습니다. 그러나 PostMessage는
내 wpf 프로그램에서 이미지 뷰어 프로그램 내에서 대비를위한 텍스트 상자와 밝기를 편집하려고합니다. 이 두 텍스트 상자 안의 값을 변경하면 이미지가 즉시 변경됩니다. Spy ++를 사용하면 해당 텍스트 상자에 대한 정확한 창 핸들을 얻을 수 있으며 다음 방법을 시도했지만 여전히 C# 프로그램에서 필요한 것을 얻을 수 없습니다.
방법 1 : 이 방법은 나에게 즉시 텍스트 상자의 전체 텍스트를 변경할 수 있지만, 변경 사항이 자동으로 트리거하고 이미지 뷰어에서 이미지의 명암/밝기 변화를 반영하지 않습니다.
IntPtr text = Marshal.StringToCoTaskMemUni(value.ToString());
SendMessage(window, WM_SETTEXT, 0, text);
Marshal.FreeCoTaskMem(text);
방법 2 :. 이 방법은 수동으로 텍스트 상자를 클릭하여 마우스를 설정하고 지속적으로 (특정 번호 키를 보내는 예를 들어 100의 대비 값이 보내드립니다, 텍스트 상자의 RECT의 위치를 가져옵니다 keydown 3 번, 1 번은 vk, 2 번은 0 번). 이 방법은 텍스트 상자의 텍스트를 성공적으로 변경하고 각 숫자가 입력 될 때 대비 이벤트를 트리거합니다. 문제는 숫자의 각 입력과 함께 이미지가 변경된다는 것입니다. 이미지는 key1의 첫 번째 입력 (1에서의 명암)과 key0 (10에서의 명암) 그리고 마지막으로 또 다른 key0 (100의 명암, 우리가 원하는 실제 대비)에 반영됩니다.
RECT hwnd_loc = new RECT();
GetWindowRect(w_hwnd, ref hwnd_loc);
IntPtr lParam = (IntPtr)(((hwnd_loc.Top + 2) << 16) | (hwnd_loc.Left + 2));
PostMessage(w_hwnd, WM_LBUTTONDOWN, 0, (int)lParam);
PostMessage(w_hwnd, WM_LBUTTONUP, 0, (int)lParam);
for (int i = index.Count - 1; i >= 0; i--)
{
PostMessage(w_hwnd, WM_KEYDOWN, key[index.ElementAt(i)], 0);
}
그래서 WM_KEYDOWN를 사용하지 않는 번호의 전체 세트를 PostMessage를 할 수있는 방법이 나 이미지 뷰어 프로그램이 변경 사항을 확인하고 대비 이벤트를 트리거 할 수 있도록 어떻게 든 sendMessage 첨부를 사용하지만 할 수있는 방법이 있는지? 어떤 도움이라도 대단히 감사하겠습니다!