Нажатие кнопки в приложении Visual Basic из .NET

1

Я создаю консольное приложение, которое должно вызывать приложение MyProj.exe VB и запускает событие нажатия кнопки на том же самом.

На данный момент я могу запустить исполняемый файл проекта VB, но я хотел запустить конкретное событие нажатия кнопки из консольного приложения.

System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = @"C:\New\MyProj.exe";
System.Diagnostics.Process.Start(startInfo);

я попытался с приведенной ниже ссылкой - это не работает для меня http://www.codeproject.com/Articles/14519/Using-Windows-APIs-from-C-again

- hwndChild после выполнения каждого утверждения приходит как "ноль",

    //Get a handle for the "5" button
            hwndChild = FindWindowEx((IntPtr)hwnd,IntPtr.Zero,"Button","5");

            //send BN_CLICKED message
            SendMessage((int)hwndChild,BN_CLICKED,0,IntPtr.Zero);

            //Get a handle for the "+" button
            hwndChild = FindWindowEx((IntPtr)hwnd,IntPtr.Zero,"Button","*");

            //send BN_CLICKED message
            SendMessage((int)hwndChild,BN_CLICKED,0,IntPtr.Zero);

            //Get a handle for the "2" button
            hwndChild = FindWindowEx((IntPtr)hwnd,IntPtr.Zero,"Button","2");

            //send BN_CLICKED message
            SendMessage((int)hwndChild,BN_CLICKED,0,IntPtr.Zero);

            //Get a handle for the "=" button
            hwndChild = FindWindowEx((IntPtr)hwnd,IntPtr.Zero,"Button","=");

            //send BN_CLICKED message
            SendMessage((int)hwndChild,BN_CLICKED,0,IntPtr.Zero);

Большое спасибо codecaster - но я бы потребовал немного больше помощи

     #define AMP_PAUSE 40046
    HWND hwnd = FindWindow("Winamp v1.x", 0);
    if(hwnd) SendMessage(hwnd, WM_COMMAND, AMP_PAUSE, 0);

button1 - идентификатор кнопки; и Call_Method() - это процедура, вызываемая при нажатии кнопки1.

можете ли вы помочь, как написать приведенный выше код в С#

  • 0
    Я проверил эту утилиту - но я не могу понять, как вызвать событие нажатия кнопки моего vb.exe - что я тоже хочу, чтобы это было в фоновом режиме.
  • 0
    Пожалуйста, покажите фактический код, который вы использовали. «Не работает для меня» не достаточно ясно, чтобы вновь открыть ваш вопрос. Использование API SendMessage - способ сделать это.
Показать ещё 2 комментария
Теги:
c#-4.0
c#-3.0

1 ответ

2
Лучший ответ

Я предлагаю вам несколько иной подход. Добавьте кнопку быстрого доступа к вашей кнопке. Это делается путем помещения буквы & перед буквой, которую вы хотите использовать в качестве сочетания клавиш в тексте кнопки. Затем вы можете активировать эту кнопку, введя Alt-X, где X - это комбинация клавиш.

[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

С помощью этого объявления вы можете отправить ярлык в приложение:

// Start your process
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\New\MyProj.exe";
Process process = Process.Start(startInfo);

// Wait for your process to be idle, sometimes an additional
// Thread.Sleep(...); is required for the application to be ready.
process.WaitForInputIdle();

// Make the started application the foreground window.
IntPtr h = process.MainWindowHandle;
SetForegroundWindow(h);

// Send it Alt-X
SendKeys.SendWait("%x");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню