C# 内嵌其他程序到自己程序

写一xxx聊天机器人啊什么的可能会用到这种技术.
比如把QQ窗体嵌入自己的winform中
其实很简单,调用两个API函数即可。

1 [DllImport("User32.dll ", EntryPoint = "SetParent")]
2 private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
3
4 [DllImport("user32.dll ", EntryPoint = "ShowWindow")]
5 public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

调用:

1 Process p = new Process();
2                     p.StartInfo.FileName = "cmd.exe ";
3                     p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;//设置程序样式
4                     p.Start();
5                     SetParent(p.MainWindowHandle, this.Handle); //改变p的父窗口句柄为本程序句柄
6                     ShowWindow(p.MainWindowHandle, 3);//第一个参数窗口句柄,第二个参数 指定窗口如何显示  

参数二API原型:
SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。
SW_HIDE:隐藏窗口并激活其他窗口。
SW_MAXIMIZE:最大化指定的窗口。
SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。
SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。
SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。
SW_SHOWMAXIMIZED:激活窗口并将其最大化。
SW_SHOWMINIMIZED:激活窗口并将其最小化。
SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然维持激活状态。
SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序第一次显示窗口的时候应该指定此标志。

摘自:http://www.msdn5.com/thread-388-1-1.html

时间: 2024-11-03 20:55:26

C# 内嵌其他程序到自己程序的相关文章

[转]内嵌WORD/OFFICE的WINFORM程序——DSOFRAMER使用小结

最近一直想用VC#2005做个内嵌WORD/OFFICE的WINFORM程序,目前主要有以下解决途径: 1.直接通过API把WORD/OFFICE的窗口句柄给放到WINFORM中(感觉较为复杂): 2.通过WEB BROWSER: 3.利用DSOFRAMER. 本人都测试了一下,觉得DSOFRAMER更符合自己的愿望,故决定使用DSOFRAMER来实现. 操作步骤:WinForm 1.从微软网站下载DsoFramer_KB311765_x86.exe,解开将得到dsoframer.ocx: 2.

.NET Core的文件系统[4]:由EmbeddedFileProvider构建的内嵌(资源)文件系统

一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以统一的编程方式来读取内嵌于某个程序集中的资源文件,不过在这之前我们必须知道如何将一个项目文件作为资源并嵌入到生成的程序集中. [ 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一.将项目文件变成内嵌资源二.读取资源文件三.EmbededFileProvider 一.将项目文件变成内嵌资源 在默认情况下,我们添加到一个.NET项目中的静态文件并不会成为项目编译生成的程序集

由EmbeddedFileProvider构建的内嵌(资源)文件系统

由EmbeddedFileProvider构建的内嵌(资源)文件系统 一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以统一的编程方式来读取内嵌于某个程序集中的资源文件,不过在这之前我们必须知道如何将一个项目文件作为资源并嵌入到生成的程序集中. [ 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一.将项目文件变成内嵌资源二.读取资源文件三.EmbededFileProvider 一.将项目文件变成内嵌资源 在默认情况下

【转】WebResource实现在自定义控件中内嵌JS文件

在类库中的资源  其他项目中要使用 需要嵌入才行 参考文献:WebResource实现在自定义控件中内嵌JS文件 1. WebResource简介 ASP.NET(1.0/1.1)给我们提供了一个开发WebControl的编程模型,于是我们摆脱了asp里面的include模式的复用方式.不过1.0/1.1提供的Web控件开发模型对于处理没有image.css等外部资源的组件还算比较得心应手,script虽然很多时候也是外部资源,但在开发控件的时候我们习惯把script使用Page.Registe

panel内嵌程序窗体

function RunAppInPanel(const AppFileName: string; ParentHandle: HWND; var WinHandle: HWND): Boolean; var si: STARTUPINFO; pi: TProcessInformation; begin Result := False; // 启动进程 FillChar(si, SizeOf(si), 0); si.cb := SizeOf(si); si.wShowWindow := SW_S

关于Unity程序在IOS和Android上显示内嵌网页的方式

近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的原理好像是通过调用浏览器内核.然后将网页渲染到mesh的方式完毕的. 但遗憾的是仅仅支持windows桌面版本号.但还是发出来大家假设有须要能够下载  下载地址: http://pan.baidu.com/s/1nt3FVkd unity-webview 这个是在github上找到的. 是一个kei

7.PL_SQL——在PL_SQL程序中内嵌查询语句、DML语句和事物处理语句

在PL/SQL中可以使用的SQL语句主要有以下几类: SELECT 查询语句,DML语句,Transaction 事物处理语句,本文将对这几类语句在PL/SQL中的用法逐一介绍. 一.查询语句-SELECT SELECT 语句用来查询一条或多条语句.虽然SELECT 语句也属于DML语句,但SELECT是只读的,所以单独列出. 在PL/SQL中使用SELECT 语句的格式如下:   SELECT select_list INTO {variable_name[,variable_name]...

Delphi实现窗体内嵌其他应用程序窗体

实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达成了内嵌的效果. 本文实现的是内嵌一个记事本程序,如下图: 在实现细节上需要注意几点: 为了美化程序的嵌入效果,需要隐藏其标题栏 在外部窗体大小变化时,需要内嵌的窗体也随之变化大小 外部程序退出时,内嵌的程序也要退出 下面是例子程序.新建窗体,上面放置一个Panel控件,名为pnlApp,然后按下面代码编写: ? unit frmTestEmbed

小程序内嵌网页的开放是一场创业公司的及时雨吗

11.2晚小程序突然开放两个重磅能力:1.小程序内可直接打开网页,2.小程序可关联500个公众号.通过研究,我们发现这次新能力的开放,促使小程序推动微信的春秋战国时代来临.有开发者感叹,不懂小程序的人,以后就不要出来谈营销啦!接下来,我们就听听萤火新媒萤连长从三个方向为大家解读,为什么新能力的开放是一场创业公司的及时雨.一.对于开发者.运营者有哪些好处1.小程序有了自己的流量用户使用小程序时,可以从小程序直接进入到内嵌网页,同时也支持用户从内嵌网页返回小程序.这样一来,小程序也可以做成小的流量分

测试了小程序的内嵌网页总结几点

11月2日深夜微信团队宣布小程序内嵌页面开放了,很多开发者已经测试了小程序的内嵌网页,他们总结了以下几点: 1.内嵌网页的域名需要在小程序管理后台设置为业务域名,也就是需要先加入白名单 一个小程序最多可以添加 20 个业务域名,且一年只可修改 50 次业务域名. 2.内嵌的网页用起来跟微信内打开体验差不多,下拉也会显示“网页由 XX 域名提供” 3.内嵌的网页可以播放视频,但是视频必须是在白名单域名内的 我测试把视频放在七牛,就无法播放,一直在加载中. 4.内嵌的网页可以嵌入 iframe,而且