Skip to main content
AI Assist is now on Stack Overflow. Start a chat to get instant answers from across the network. Sign up to save and share your chats.
added 740 characters in body
Source Link
SPillai
  • 187
  • 3
  • 7
  • 20

For NSGaga:

 string windowName = "Open Broadcaster Software v0.472b"; IntPtr outerPtr = FindWindow(null, windowName); IntPtr ptrOBS = (IntPtr)527814;//button that im trying to trigger keypress on SetForegroundWindow(outerPtr); SetForegroundWindow(ptrOBS); SetFocus(outerPtr, "OBSWindowClass");//SetFocus(ptrOBS, "Button"); const UInt32 WM_CHAR = 0x0102; const int VK_R = 0x52; // taken from http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx const int VK_S = 0x53; //SetForegroundWindow(ptrOBS); System.Threading.Thread.Sleep(3000); SendKeys.SendWait("{r}"); SendMessage(outerPtr, WM_KEYDOWN, (IntPtr)VK_R, (IntPtr)1); PostMessage(outerPtr, WM_KEYDOWN, VkKeyScan('r'), 0); 

For NSGaga:

 string windowName = "Open Broadcaster Software v0.472b"; IntPtr outerPtr = FindWindow(null, windowName); IntPtr ptrOBS = (IntPtr)527814;//button that im trying to trigger keypress on SetForegroundWindow(outerPtr); SetForegroundWindow(ptrOBS); SetFocus(outerPtr, "OBSWindowClass");//SetFocus(ptrOBS, "Button"); const UInt32 WM_CHAR = 0x0102; const int VK_R = 0x52; // taken from http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx const int VK_S = 0x53; //SetForegroundWindow(ptrOBS); System.Threading.Thread.Sleep(3000); SendKeys.SendWait("{r}"); SendMessage(outerPtr, WM_KEYDOWN, (IntPtr)VK_R, (IntPtr)1); PostMessage(outerPtr, WM_KEYDOWN, VkKeyScan('r'), 0); 
added 1756 characters in body
Source Link
SPillai
  • 187
  • 3
  • 7
  • 20

Tried SetFocus on the parent window (application) and child window (button triggered by keypress im trying to send):

static void SetFocus(IntPtr hwndTarget, string childClassName) { // hwndTarget is the other app's main window // ... IntPtr targetThreadID = GetWindowThreadProcessId(hwndTarget, IntPtr.Zero); //target thread id IntPtr myThreadID = GetCurrentThread(); // calling thread id, our thread id try { bool lRet = AttachThreadInput(myThreadID, targetThreadID, -1); // attach current thread id to target window // if it's not already in the foreground... lRet = BringWindowToTop(hwndTarget); SetForegroundWindow(hwndTarget); // if you know the child win class name do something like this (enumerate windows using Win API again)... IntPtr hwndChild = (IntPtr)1183492;//(IntPtr)EnumAllWindows(hwndTarget, childClassName).FirstOrDefault(); if (hwndChild == IntPtr.Zero) { // or use keyboard etc. to focus, i.e. send keys/input... // SendInput (...); return; } // you can use also the edit control's hwnd or some child window (of target) here SetFocus(hwndChild); // hwndTarget); SendKeys.SendWait("{r}"); } finally { SendKeys.SendWait("{r}"); bool lRet = AttachThreadInput(myThreadID, targetThreadID, 0); //detach from foreground window SendKeys.SendWait("{r}"); } } 

Tried SetFocus on the parent window (application) and child window (button triggered by keypress im trying to send):

static void SetFocus(IntPtr hwndTarget, string childClassName) { // hwndTarget is the other app's main window // ... IntPtr targetThreadID = GetWindowThreadProcessId(hwndTarget, IntPtr.Zero); //target thread id IntPtr myThreadID = GetCurrentThread(); // calling thread id, our thread id try { bool lRet = AttachThreadInput(myThreadID, targetThreadID, -1); // attach current thread id to target window // if it's not already in the foreground... lRet = BringWindowToTop(hwndTarget); SetForegroundWindow(hwndTarget); // if you know the child win class name do something like this (enumerate windows using Win API again)... IntPtr hwndChild = (IntPtr)1183492;//(IntPtr)EnumAllWindows(hwndTarget, childClassName).FirstOrDefault(); if (hwndChild == IntPtr.Zero) { // or use keyboard etc. to focus, i.e. send keys/input... // SendInput (...); return; } // you can use also the edit control's hwnd or some child window (of target) here SetFocus(hwndChild); // hwndTarget); SendKeys.SendWait("{r}"); } finally { SendKeys.SendWait("{r}"); bool lRet = AttachThreadInput(myThreadID, targetThreadID, 0); //detach from foreground window SendKeys.SendWait("{r}"); } } 
edited tags
Link
Cody Gray
  • 246.1k
  • 53
  • 513
  • 591
Source Link
SPillai
  • 187
  • 3
  • 7
  • 20
Loading