• 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

  • 相关阅读:
    Android实现摇晃手机的监听
    C#实现目录复制
    c# splitter控件使用简介
    一行代码实现java list去重
    安卓最简通讯录操作样例
    java.lang.ClassNotFoundException错误原因汇总
    在Visual Studio 2013中编译libssh2项目
    VS2013中C++创建DLL导出class类
    c#发送邮件样例
    Linux服务器挂死案例分析
  • 原文地址:https://www.cnblogs.com/xiaoa/p/4308573.html
Copyright © 2020-2023  润新知