2013-11-15 3 views
1

Итак, вот мой вопрос? Как открыть файл .exe в панели? Что я использую: Visual Studio. Моя проблема: он открывает файл .exe из моей формы и не помещает его в панель. Код:Vb Открыть файл .Exe в панели?

Public Class Form1 
Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer 
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer 
Private Const WM_SYSCOMMAND As Integer = 274 
Private Const SC_MAXIMIZE As Integer = 61488 
Dim proc As Process 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    proc = Process.Start("C:\WINDOWS\notepad.exe") 
    proc.WaitForInputIdle() 

    SetParent(proc.MainWindowHandle, Panel1.Handle) 
    SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0) 
End Sub 

End Class

+0

Вообще говоря, вы не можете запускать другое оконное приложение внутри вашего окна. Что вы пытаетесь достичь? Если вы объясните реальную проблему, которую пытаетесь решить, возможно, мы сможем помочь вам найти решение. – jdigital

+0

Хорошо Так что я действительно хочу сделать, это запустить файл .Exe внутри моей формы и файл .exe. Это симулятор Cnc. Причина, по которой я хочу запустить это в своей форме, заключается в том, что я хочу создать кнопку воспроизведения для этой программы. На данный момент для запуска программы вам нужно нажать «Страница», чтобы переместить ее пошагово. То, что я собираюсь сделать, - сделать автоматический кликер, чтобы попасть в страницу вверх, как 1 клик каждые 1 сек. Что-то в этом роде. Но мне просто нужна программа для запуска в панели. –

ответ

0

Основываясь на дополнительной информации, я предлагаю другой дизайн. Вам лучше создать собственное приложение с кнопкой, и когда вы нажимаете кнопку, вы посылаете нажатие клавиши для приложения cnc. Вы можете разместить свое приложение рядом с приложением cnc для вашего удобства.

Очень сложно заставить другое приложение работать внутри вашего приложения, и даже если вы можете заставить его работать, оно, вероятно, будет хрупким. Храните два приложения отдельно. SetParent - не решение.

Предлагаю вам ознакомиться с AutoHotKey, программным комплексом (бесплатным) программирования, который люди использовали для автоматизации всех видов вещей. Помимо всего прочего, AutoHotKey очень хорошо имитирует нажатия клавиш для других приложений (это сложнее, просто используя PostMessage/SendMessage).

Для позиционирования окон вы должны иметь возможность написать код, который автоматически позиционирует ваше окно рядом с приложением cnc, и вы даже можете отслеживать движение приложения cnc и соответствующим образом перемещать свое окно (это может немного запутаться, если вы хотите обрабатывать все особые случаи, такие как перемещение приложения на другой край, если не хватает места).

0

PInvoke SetParent, как сделать это, но вы не можете получить точное поведение, которое вы хотите с некоторыми приложениями, а не все приложение будет загружать с этим API.

+0

Итак, как бы выглядел мой код? –

Смежные вопросы