See my Clicking a Button in Another Application. The general idea is that it sends a button clicked message to the window that contains the button; in other words, instead of sending a mouse click or a keyboard Enter key it sends the message that such action would result in. The concepts in that article can help you; you can use Spy++ to determine what messages (message id and dialog id as relevant) are the result of up and down arrow keys. If you can determine that then using SendMessage can be very reliable.
With hWnd being set to the edit control in a Notepad instance the following moves the cursor down a line in it. Notepad is not the active window because I execute the following from VS without activating the Notepad instance. It works even if Notepad is minimized.
uint lParam = (0x00000001 | (MapVirtualKey(0x30, 0) << 16));
SendMessage(hWnd, WM_KEYDOWN, (IntPtr)VK_DOWN, (IntPtr)lParam);