I have an app that is essentially a wizard that goes through some dialog boxes. One of the forms has just a button on it that brings up the common "take picture" dialog.
After that picture functionality is dismissed the little keyboard icon shows up (inconveniently covering over one of my wizard buttons).
I tried setting the covered window to the fron by calling:
nextButton.BringToFront();
But that has no effect. I need to disable the little keyboard icon somehow and not sure how to do it.
Note - it is not the soft keyboard - but the image that the user clicks that will bring that up.
Note - there are no text controls on this form - there are only 4 buttons - one that initiates the CameraCaptureDialog, and a few others that control the user going to the "next" and "previous" screens.
EDIT
Given that two people were very confident their code would work, and looking at the references online I figured they might be right I figured I would elaborate on the issue since neither suggestions fix the problem.
The keyboard item seems to be a remnant left over after I select either the cancel or OK button on the menu in the "take picture"/CameraCaptureDialog.
On exiting the Dialog I seem to have the middle/keyboard menu item left over and there is nothing I seem to be able to do about it.
Here is what it looks like in the emulator (happens on emulator as well)
Note - calling all the following have NO effect on the keyboard icon thingy hiding the button:
// nextButton is the Button on the control hidden by the keyboard icon thingy
nextButton.Focus();
nextButton.BringToFront();
nextButton.Invalidate();
nextButton.Refresh();
nextButton.Show();
I was also looking for the solution to hide the small keyboard icon (SIP icon) and I achieved this by using the FindWindowW
and MoveWindow
or SetWindowPos
functions of coredll.dll
and user32.dll
Declare the function we are interested in:
[DllImport("coredll.dll", EntryPoint = "FindWindowW", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("coredll.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
Then find the handle to keyboard icon and call the SetWindowPos
to hide it:
IntPtr hWnd = FindWindow(Nothing, "MS_SIPBUTTON");
SetWindowPos(hWnd, 1, 0, 0, 0, 0, &H80);
Useful links:
EDIT
I had to modify this slightly to compile.
const int SWP_HIDE = 0x0080;
IntPtr hWnd = FindWindow(null, "MS_SIPBUTTON");
SetWindowPos(hWnd, IntPtr.Zero, 0, 0, 0, 0, SWP_HIDE);