如何使Windows始终在顶级应用程序

时间:2014-01-31 08:48:19

标签: c# visual-studio-2010

我想制作一个小软件,它可以为运行应用程序的Windows提供“始终在顶级功能”,如Linux终端,VLC媒体播放器等。 我在互联网上找到了一些与此相关的应用程序。但我想创建自己的永远在顶级实用程序。

如果你能推荐c#.net代码会更好。和IDE:我更喜欢Visual Studio

我的目标是使应用程序如下所示:

http://www.pcworld.com/article/218511/Windows.html

4 个答案:

答案 0 :(得分:4)

为了使它成为任何进程的通用,你必须重载User32.dll的两个方法,这是Win32 API的一部分。

只需使用下面给出的代码并指定您的进程名称,而不指定其扩展名,例如vlc - 指定

processName = "vlc";不喜欢 "vlc.exe"

using System.Runtime.InteropServices;
using System.Diagnostics;

public class ProcessManager
{
    [DllImport("user32.dll")]
    private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle);

    [DllImport("user32.dll")]
    private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

    ProcessManager()
    {
      string processName = "vlc"; /* Your process name here */
      SearchProcessAndModifyState(processName);
    }

    void SearchProcessAndModifyState(string targetProcessName)
    {
        Process specifiedProcess = null;
        Process[] processes = Process.GetProcesses();
        for (int i = 0; i < processes.Length; i++)
        {
            Process process = processes[i];
            if (process.ProcessName == targetProcessName)
            {
                specifiedProcess = process;
                break;
            }
        }
        if (specifiedProcess != null)
        {
          ProcessManager.ShowWindow(specifiedProcess.MainWindowHandle, 1u);
          ProcessManager.SetWindowPos(specifiedProcess.MainWindowHandle, new IntPtr(-1), 0, 0, 0, 0, 3u);
        }
    }
}

答案 1 :(得分:3)

尝试在代码中添加此内容,最好是在加载

myTopForm.TopMost = true;

答案 2 :(得分:0)

尝试在this.TopMost = true;上使用initialization

无论如何,如果你阅读this,那可能会很好。

答案 3 :(得分:0)

转到表单属性并将TopMost属性设置为“True”,如下所示

enter image description here

您还可以在后面的代码中设置Form的TopMost属性的值:

  

public Form1(){       this.TopMost = TRUE; }

     

或在负载上   private void Form1_Load(object sender,EventArgs e){       this.TopMost = TRUE; }