我想制作一个小软件,它可以为运行应用程序的Windows提供“始终在顶级功能”,如Linux终端,VLC媒体播放器等。 我在互联网上找到了一些与此相关的应用程序。但我想创建自己的永远在顶级实用程序。
如果你能推荐c#.net代码会更好。和IDE:我更喜欢Visual Studio
我的目标是使应用程序如下所示:
答案 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”,如下所示
您还可以在后面的代码中设置Form的TopMost属性的值:
public Form1(){ this.TopMost = TRUE; }
或在负载上 private void Form1_Load(object sender,EventArgs e){ this.TopMost = TRUE; }