zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Jackson学习资料
    servlet/filter/listener/interceptor区别与联系
    JDBC、JTA、Spring的事务管理
    hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
    Spring MVC如何配置OpenSessionInViewInterceptor并结合Hibernate使用
    SpringMVC中使用Interceptor拦截器
    Hibernate条件查询
    Spring MVC之@RequestBody, @ResponseBody 详解
    Sping Environment为Null的原因和解决方法
    SpringMVC+Thymeleaf如何处理URL中的动态查询参数
  • 原文地址:https://www.cnblogs.com/xiaoa/p/4308573.html
Copyright © 2011-2022 走看看