Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using OpenQA.Selenium.Chrome;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Diagnostics;
- using System.Drawing;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace TestProject
- {
- public partial class EmbeddedProgram : Form
- {
- IntPtr EmbeddedWindowHandle;
- public EmbeddedProgram()
- {
- InitializeComponent();
- //----------------------TEST---------------------
- ChromeDriverService service = ChromeDriverService.CreateDefaultService();
- service.HideCommandPromptWindow = true;
- ChromeDriver driver = new ChromeDriver(service);
- Console.WriteLine(driver.CurrentWindowHandle);
- Process chromeDriverProcess = Process.GetProcessById(service.ProcessId);
- //EmbeddedWindowHandle = driver.CurrentWindowHandle;
- //----------------------TEST---------------------
- ProcessStartInfo processInfo = new ProcessStartInfo("notepad.exe");
- Process p = Process.Start(processInfo);
- p.WaitForInputIdle();
- EmbeddedWindowHandle = p.MainWindowHandle;
- SetParent(EmbeddedWindowHandle, panel1.Handle);
- MoveWindow(EmbeddedWindowHandle, 0, 0, panel1.Width, panel1.Height, true);
- SetWindowLong(EmbeddedWindowHandle, GWL_STYLE, WS_VISIBLE);
- }
- private const int GWL_STYLE = -16;
- private const int WS_VISIBLE = 0x10000000;
- private const int WM_CLOSE = 0x10;
- [DllImport("user32.dll")]
- static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
- [DllImport("user32.dll", EntryPoint = "SetWindowLongA", SetLastError = true)]
- private static extern long SetWindowLong(IntPtr hwnd, int nIndex, int dwNewLong);
- [DllImport("user32.dll", SetLastError = true)]
- private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);
- [DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
- private static extern bool PostMessage(IntPtr hwnd, uint Msg, int wParam, int lParam);
- private void EmbeddedProgram_Resize(object sender, EventArgs e)
- {
- MoveWindow(EmbeddedWindowHandle, 0, 0, panel1.Width, panel1.Height, true);
- }
- private void EmbeddedProgram_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (EmbeddedWindowHandle != IntPtr.Zero)
- {
- // Post a close message
- PostMessage(EmbeddedWindowHandle, WM_CLOSE, 0, 0);
- // Delay for it to get the message
- Thread.Sleep(1000);
- // Clear internal handle
- EmbeddedWindowHandle = IntPtr.Zero;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement