T>>Я бы предложил в таком сулчае сделать тестовое приложение и проэмулировать ситуацию, т.е. зажимать клавишу и смотреть какие WindowsMessages прилетают, а потом их повторить...
TT>Его даже создавать не надо, достаточно воспользоваться Spy++, эта тулза вместе со студией уже много лет живет. Натравить ее можно непосредственно на жертву твоей проги, она тебе лог по всем мессагам пришедшим окну выдаст.
спасибо, проблемму решил, посмотрев что отправляется программе при реальном нажатии кнопки на клавиатуре
public partial class MainForm : Form
{
const int WM_KEYDOWN = 256;
[DllImport("User32.dll")]
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern void PostMessage(IntPtr hWnd, int msg, Keys k);
public MainForm()
{
IntPtr hWnd = FindWindow(null, "program name");
Keys k = Keys.Oem4; //это кнопка '['
PostMessage(hWnd, WM_KEYDOWN, k);
...
}
}
но осталась одна проблема, при реальном нажатии этой кнопки на клавиатуре, программное нажатие пропадает =)