winform内部打开微信或者其他EXE程序
2023-09-27 14:21:27 时间
1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.Linq; 5 using System.Runtime.InteropServices; 6 using System.Threading.Tasks; 7 using System.Windows.Forms; 8 9 namespace WindowsFormsApp1 10 { 11 internal static class Program 12 { 13 /// <summary> 14 /// 应用程序的主入口点。 15 /// </summary> 16 [STAThread] 17 static void Main() 18 { 19 Application.EnableVisualStyles(); 20 Application.SetCompatibleTextRenderingDefault(false); 21 22 // 获取微信的进程 23 var ps = Process.GetProcesses().Where(m=>m.ProcessName=="WeChat").FirstOrDefault(); 24 //Process[] ps2 = Process.GetProcessesByName("WeChat"); 25 // 获取微信的句柄,intClientWndHandle是父窗口的句柄,需要先得到这个句柄 26 var intClientWndHandle = ProcessEx.GetMainWindowHandle(ps.Id); 27 // 父窗体 28 Form1 frm = new Form1(); 29 // 设置当前窗体是微信句柄的父级 30 SetParent(intClientWndHandle, (IntPtr)frm.Handle); 31 // 是否显示控件框 32 frm.ControlBox = false; 33 Application.Run(frm); 34 } 35 36 37 [DllImport("user32.dll", EntryPoint = "SetParent")] 38 public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 39 40 [StructLayout(LayoutKind.Sequential)] 41 public struct ProcessEntry32 42 { 43 public uint dwSize; 44 public uint cntUsage; 45 public uint th32ProcessID; 46 public IntPtr th32DefaultHeapID; 47 public uint th32ModuleID; 48 public uint cntThreads; 49 public uint th32ParentProcessID; 50 public int pcPriClassBase; 51 public uint dwFlags; 52 53 54 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] 55 public string szExeFile; 56 } 57 58 } 59 }
相关文章
- RDIFramework.NET V3.3 WinForm版新增日程管理功能模块
- C# winform窗体应用监听Console日志并写入本地日志
- VS2015创建的Winform项目中添加web引用
- C#WinForm开发:如何将图片添加到项目资源文件(Resources)中
- Winform开发全套31个UI组件开源共享
- cefsharp webBrowser Javascript 打开winForm界面
- c# winform 动态画矩形 矩形大小可以拖动
- Winform的多线程问题
- OpenCvSharp (C# OpenCV) OCR实现中英文识别 文字识别(附WinForm完整源码)
- C#之Winform跨线程访问控件
- WinForm中跨线程调用控件
- C#winform中只允许程序运行一个实例
- C# winform 发布的时候没有app.config去哪儿了?