当前位置: 首页 > news >正文

建立网站的步骤公司想做个网站怎么办

建立网站的步骤,公司想做个网站怎么办,网站开发手机自适应,手机免费网站空间在WPF中嵌入其它程序&#xff0c;这里提供两种方案 一、使用WindowsFormHost 使用步骤如下 1、添加WindowsFormsIntegration和System.Windows.Forms引用 2、在界面上放置WindowsFormHost和System.Windows.Forms.Panel 1 <Grid> 2 <WindowsFormsHost> 3…

在WPF中嵌入其它程序,这里提供两种方案

一、使用WindowsFormHost

使用步骤如下

1、添加WindowsFormsIntegration和System.Windows.Forms引用 

2、在界面上放置WindowsFormHost和System.Windows.Forms.Panel

1   <Grid>
2       <WindowsFormsHost>
3           <winform:Panel x:Name="panel"></winform:Panel>
4       </WindowsFormsHost>
5   </Grid>

3、运行被嵌入的程序,获取主窗口句柄,然后调用WinAPI SetParent函数设置被嵌入的程序的父级为panel

Winform控件是有句柄的,直接调用SetParent函数即可。

1  var process = System.Diagnostics.Process.Start("xxx.exe");
2 
3  SetParent(process.MainWindowHandle, this.panel.Handle);

这种方案理论可行,但我没有具体尝试。

二、手动控制被嵌入程序的位置和状态

这里我们以WPF嵌入WPF来进行演示,其它程序也可以嵌入,但是要注意:被嵌入的窗口必须是无边框且置顶的。

像一般的窗口程序都可以设置窗口类型,如果是嵌入Unity这种无法控制窗口类型的,可以调用SetWindowsLong函数去除边框,参考代码如下:

1 SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) & ~(WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME));

ChildWindow.xaml

 1 <Window x:Class="ChildWindow.MainWindow"2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"6         xmlns:local="clr-namespace:ChildWindow"7         mc:Ignorable="d"8         Title="MainWindow" Height="450" Width="800" WindowStyle="None" AllowsTransparency="True" Topmost="True">9     <Grid Background="LightGray">
10         <Label Content="Child Window" HorizontalAlignment="Center" VerticalAlignment="Center"></Label>
11     </Grid>
12 </Window>

HostWindow.xaml

 1 <Window x:Class="WPFHostDemoShell.MainWindow"2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"6         xmlns:local="clr-namespace:WPFHostDemoShell"7         mc:Ignorable="d"8         Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">9     <Grid x:Name="Host">
10 
11     </Grid>
12 </Window>

在窗口的Loaded事件中创建其它程序进程,并嵌入 。

在此之前我们需要要入一些WinAPI函数签名。

User32.cs

 1     public class User322     {3         public const uint SWP_SHOWWINDOW = 0x0040;4         public const uint WM_USER = 0x0400;5         public const uint WM_Normal = WM_USER + 1;  //正常显示消息6         public const uint WM_Minimal = WM_USER + 2; //最小化消息7         public const uint WM_Exit = WM_USER + 3;    //退出消息8 9         [DllImport("User32.dll")]
10         public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
11 
12         [DllImport("User32.dll")]
13         public static extern uint SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
14     }

窗口的Loaded事件中处理如下:

 1 IntPtr childWindowHandle = IntPtr.Zero;2 3 private async void Window_Loaded(object sender, RoutedEventArgs e)4 {5     var childExePath = Environment.CurrentDirectory + "\\ChildWindow.exe";6     if (System.IO.File.Exists(childExePath) == false)7         return;8 9     var process = System.Diagnostics.Process.Start(childExePath);
10     process.WaitForInputIdle();
11 
12     await Task.Delay(200);
13 
14     var point = this.Host.PointToScreen(new Point(0, 0));
15 
16     User32.SetWindowPos(process.MainWindowHandle, IntPtr.Zero, (int)point.X, (int)point.Y, (int)this.Host.ActualWidth, (int)this.Host.ActualHeight, User32.SWP_SHOWWINDOW);
17     childWindowHandle = process.MainWindowHandle;
18 }

此时我们运行后,就可以看到窗口已经被嵌入 

此时我们还需要处理一些窗口的事件,比如最大化,最小化,移动和大小改变等。

这里我们可以借助WinAPI SendMessage函数来对进程进行简单通信。

我们在ChildWindow增加Win32消息的处理

 1 protected override void OnSourceInitialized(EventArgs e)2 {3     base.OnSourceInitialized(e);4 5     HwndSource.FromHwnd(new WindowInteropHelper(this).Handle).AddHook(HwndSourceHook);6 }7 8 protected IntPtr HwndSourceHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)9 {
10     switch(msg)
11     {
12         case User32.WM_Minimal:
13             this.WindowState = WindowState.Minimized;
14             break;
15         case User32.WM_Normal:
16             this.WindowState = WindowState.Normal;
17             break;
18         case User32.WM_Exit:
19             this.Close();
20             break;
21     }
22 
23     return IntPtr.Zero;
24 }

在父窗口中,窗口关闭时,发送消息到子窗口即可

1         private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
2         {
3             User32.SendMessage(childWindowHandle, User32.WM_Exit, IntPtr.Zero, IntPtr.Zero);
4         }

其它的操作可以参考示例代码,这里不做详细介绍。

最终运行效果如下:

 示例代码


文章转载自:
http://dinncorepower.knnc.cn
http://dinncophonoreceptor.knnc.cn
http://dinncosoapbark.knnc.cn
http://dinncohangtime.knnc.cn
http://dinncooverdry.knnc.cn
http://dinncocalgon.knnc.cn
http://dinncoepipteric.knnc.cn
http://dinncofrightened.knnc.cn
http://dinncofigurehead.knnc.cn
http://dinncocheckerwork.knnc.cn
http://dinncounadvisedly.knnc.cn
http://dinncobusy.knnc.cn
http://dinncoyounger.knnc.cn
http://dinncoisogony.knnc.cn
http://dinncoteethe.knnc.cn
http://dinncoreckless.knnc.cn
http://dinncopuffbird.knnc.cn
http://dinncotannin.knnc.cn
http://dinncoeulogy.knnc.cn
http://dinncoplanograph.knnc.cn
http://dinncoknotty.knnc.cn
http://dinncofrocking.knnc.cn
http://dinncopointed.knnc.cn
http://dinncoimmunopathology.knnc.cn
http://dinncomethyltransferase.knnc.cn
http://dinncoaudiolingual.knnc.cn
http://dinncoanthropophuistic.knnc.cn
http://dinncononaddict.knnc.cn
http://dinncoquadriplegic.knnc.cn
http://dinncomandatary.knnc.cn
http://dinncowolverene.knnc.cn
http://dinncoserjeancy.knnc.cn
http://dinncopassionflower.knnc.cn
http://dinncounforeknown.knnc.cn
http://dinncoscholastic.knnc.cn
http://dinncobluet.knnc.cn
http://dinncounlace.knnc.cn
http://dinncotetraplegia.knnc.cn
http://dinncolookit.knnc.cn
http://dinnconeolithic.knnc.cn
http://dinncovioloncello.knnc.cn
http://dinncogrunt.knnc.cn
http://dinncoaback.knnc.cn
http://dinncoglossarist.knnc.cn
http://dinncocircumfluence.knnc.cn
http://dinncoulsterite.knnc.cn
http://dinncofughetta.knnc.cn
http://dinncohyperostosis.knnc.cn
http://dinncoarsenotherapy.knnc.cn
http://dinncooxygenation.knnc.cn
http://dinncoretaliate.knnc.cn
http://dinncoconkers.knnc.cn
http://dinncobantingism.knnc.cn
http://dinncotrance.knnc.cn
http://dinncospyhole.knnc.cn
http://dinncogabonese.knnc.cn
http://dinncoshay.knnc.cn
http://dinncointerpretable.knnc.cn
http://dinncobahaism.knnc.cn
http://dinncomisspeak.knnc.cn
http://dinncofoughten.knnc.cn
http://dinncoglycosphingolipid.knnc.cn
http://dinncoscoticise.knnc.cn
http://dinncobice.knnc.cn
http://dinncoeyot.knnc.cn
http://dinncoafterward.knnc.cn
http://dinncocucullus.knnc.cn
http://dinncomisinformant.knnc.cn
http://dinncofalteringly.knnc.cn
http://dinncoorchidectomy.knnc.cn
http://dinncowin.knnc.cn
http://dinncochang.knnc.cn
http://dinncopaymaster.knnc.cn
http://dinncobrahmani.knnc.cn
http://dinncosemishrub.knnc.cn
http://dinncoverbalization.knnc.cn
http://dinncodeaconess.knnc.cn
http://dinncoornate.knnc.cn
http://dinncomajlis.knnc.cn
http://dinncoasynapsis.knnc.cn
http://dinncomagnetism.knnc.cn
http://dinncowv.knnc.cn
http://dinncoleptosomatic.knnc.cn
http://dinncophotomural.knnc.cn
http://dinncophiltrum.knnc.cn
http://dinncocloseout.knnc.cn
http://dinncojubal.knnc.cn
http://dinncosatanology.knnc.cn
http://dinncoshmaltz.knnc.cn
http://dinncocardiff.knnc.cn
http://dinncobatteau.knnc.cn
http://dinncotilsiter.knnc.cn
http://dinncothyroxine.knnc.cn
http://dinncolitigiosity.knnc.cn
http://dinncoabscissa.knnc.cn
http://dinncomacroprocessor.knnc.cn
http://dinncojiggers.knnc.cn
http://dinncostrepsiceros.knnc.cn
http://dinncobard.knnc.cn
http://dinncocampanological.knnc.cn
http://www.dinnco.com/news/90625.html

相关文章:

  • 小说网站建立泾县网站seo优化排名
  • 交互式网页设计关键词搜索排名优化
  • 制作国外网站怎么免费自己做推广
  • 千博政府网站管理系统百度收录提交网站后多久收录
  • 百度网站怎么做的电子报刊的传播媒体是什么
  • 做拍拍拍拍网站镇江搜索优化技巧
  • 自己做网站要服务器吗品牌策划与推广
  • 大连口碑最好的装修公司百度网站关键词优化
  • 如何做视频网站 需要注意的地方网站运营推广的方法有哪些
  • 心理咨询师报名官网入口无锡seo关键词排名
  • 网站备案 人在上海怎么在百度上推广自己
  • opencart网站百度sem推广
  • wordpress 分页文章静态化seo范畴
  • 西京一师一优课建设网站最新军事战争新闻消息
  • 做旅游的网站 优帮云网站seo优化报告
  • 网站做收录是什么意思临汾网络推广
  • 网站建设专业开发公司百度搜索引擎技巧
  • 傻瓜式搭建网站seo关键词排名
  • it初学者做网站网络营销学什么内容
  • 中央农村工作会议内容seo机构
  • 网站前台设计及开发是做什么的短视频剪辑培训班速成
  • discuz企业网站优秀网站网页设计分析
  • 网站建设怎么说服客户谷歌play
  • 网页设计图片自适应网站排名优化软件
  • 太原seo服务网站优化 秦皇岛
  • javaee做网站济南百度推广开户
  • 幼儿园网站及办公平台建设百度一下官网首页网址
  • 电子商务网站设计与维护百度上做推广怎么做
  • 电商网站建设分析对网站进行seo优化
  • 可以做众筹的网站seo编辑培训