Я создаю консольное приложение, которое должно вызывать приложение 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.
можете ли вы помочь, как написать приведенный выше код в С#
Я предлагаю вам несколько иной подход. Добавьте кнопку быстрого доступа к вашей кнопке. Это делается путем помещения буквы &
перед буквой, которую вы хотите использовать в качестве сочетания клавиш в тексте кнопки. Затем вы можете активировать эту кнопку, введя 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");