隐藏程序进程或置顶(进来看看)

gwf25sz 2009-09-28 04:17:48
如题,希望运行WinForm程序后,改程序在 任务管理器 内隐藏进程

不知道是否能做的到, 如果不行,那么就换一个,该窗体永远置顶(无论打开什么窗口,该窗体永远在最顶层)

希望能够给出相应代码,谢谢~!

答出任意一个给20分,

2个都答对 给40分,

抢分,最先答出的得分~!
...全文
275 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwf25sz 2009-09-29
  • 打赏
  • 举报
回复
再次重审,现在需要的是:隐藏进程的方法~!!!!!!!!!!
sohighthesky 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 gwf25sz 的回复:]

难道,真的没办法了???
[/Quote]

/// <summary>
/// 窗体总在前端显示
/// </summary>
/// <param name="hwnd">窗体的句柄</param>
/// <param name="hWndInsertAfter">窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面</param>
/// <param name="x">窗口新的x坐标</param>
/// <param name="y">窗口的新的y坐标</param>
/// <param name="cx">窗口的宽度</param>
/// <param name="cy">窗口的高度</param>
/// <param name="wFlags"></param>
/// <returns></returns>
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern int SetWindowPos(
IntPtr hwnd,
int hWndInsertAfter,
int x,
int y,
int cx,
int cy,
int wFlags
);

public MostTopWindow()
{
InitializeComponent();
}

private void MostTopWindow_Load(object sender, EventArgs e)
{
SetWindowPos(this.Handle, -1, (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2, (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2, this.Width, this.Height, 0);
}


gwf25sz 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yuxuanji 的回复:]
引用 12 楼 yuxuanji 的回复:
  置顶:窗体的TopMost属性设为true;
  隐藏进程: [DllImport("kernel32.dll")]     
  public  static  extern  int  RegisterServiceProcess(int  dwProcessId,  int  dwType);     
   
  void  Button1Click(object  sender,  System.EventArgs  e)   
                 
  {   
  RegisterServiceProcess(Convert.ToInt32(null),1);   
                 
  }   



只适合于Windows98以前系统,NT内核系统无效

[/Quote]


- - |||

难道,真的没办法了???
LutzMark 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yuxuanji 的回复:]
  置顶:窗体的TopMost属性设为true;
  隐藏进程: [DllImport("kernel32.dll")]     
  public  static  extern  int  RegisterServiceProcess(int  dwProcessId,  int  dwType);     
   
  void  Button1Click(object  sender,  System.EventArgs  e)   
                 
  {   
  RegisterServiceProcess(Convert.ToInt32(null),1);   
                 
  }   

[/Quote]

只适合于Windows98以前系统,NT内核系统无效
guyehanxinlei 2009-09-29
  • 打赏
  • 举报
回复
Mark
LutzMark 2009-09-29
  • 打赏
  • 举报
回复
置顶:窗体的TopMost属性设为true;
隐藏进程: [DllImport("kernel32.dll")]
public static extern int RegisterServiceProcess(int dwProcessId, int dwType);

void Button1Click(object sender, System.EventArgs e)

{
RegisterServiceProcess(Convert.ToInt32(null),1);

}
gwf25sz 2009-09-29
  • 打赏
  • 举报
回复
额,不急,分数早晚都是你的,咱们一起等等,说不定来个世外高人呢,哈哈~!
鸭梨山大帝 2009-09-29
  • 打赏
  • 举报
回复
第一題不用答了.沒人會回答的,至少我逛CSDN那么久,沒看到任何一篇帖子能辦到真正把一個WINFORM完全隱藏的.隱藏了也能被查出來

[Quote=引用 9 楼 gwf25sz 的回复:]
8楼兄弟,我都说了,你已经获得20分了,其实你写的那些代码,我已经写好了(在2楼的提示下)

不过你写那么多代码,呵呵,怎么说也得给点苦劳费,呵呵

暂时再给你+10分,也就是30分归你了,今天下班前(5:00)如果没人能答上第1个问题,那么40分全给你了~~~

各位放心,如果有人能答出来我会加分的,大家可以放心,我的信用绝对可信~~~
[/Quote]
gwf25sz 2009-09-29
  • 打赏
  • 举报
回复
8楼兄弟,我都说了,你已经获得20分了,其实你写的那些代码,我已经写好了(在2楼的提示下)

不过你写那么多代码,呵呵,怎么说也得给点苦劳费,呵呵

暂时再给你+10分,也就是30分归你了,今天下班前(5:00)如果没人能答上第1个问题,那么40分全给你了~~~

各位放心,如果有人能答出来我会加分的,大家可以放心,我的信用绝对可信~~~
鸭梨山大帝 2009-09-28
  • 打赏
  • 举报
回复
關鍵代碼:
1.設定最大化/最小化按鍵隱藏
this.MaximizeBox = false;
this.MinimizeBox = false;
2.設定不顯示在任務欄,不顯示系統圖標
this.ShowIcon = false;
this.ShowInTaskbar = false;
3.窗口置頂
this.TopMost = true;
4.調用API移除關閉按鈕
5.調用Timer,判斷本進程是否獲取焦點,如果沒有,設置本進程獲取焦點

注意, timer1.Interval = 2000;別設置太小了,會很煩的

Designer.CS代碼

namespace WindowsFormsApplication1
{
partial class HELL
{
/// <summary>
/// 設計工具所需的變數。
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// 清除任何使用中的資源。
/// </summary>
/// <param name="disposing">如果應該處置 Managed 資源則為 true,否則為 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form 設計工具產生的程式碼

/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改這個方法的內容。
///
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// HELL
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "HELL";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "HELL";
this.TopMost = true;
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.Timer timer1;
}
}




代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;

namespace WindowsFormsApplication1
{
public partial class HELL : Form
{

[DllImport("user32.dll", EntryPoint = "GetForegroundWindow")]
public static extern IntPtr GetForegroundWindow(); //获得当前活动窗体的句柄
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
public static extern bool SetForegroundWindow(IntPtr hWnd);//设置此窗体句柄的窗体为活动窗体

[DllImport("User32.dll", EntryPoint = "RemoveMenu")]
private static extern int RemoveMenu(int hMenu, int nPosition, int wFlags); //移除Menu中的選項

[DllImport("User32.dll", EntryPoint = "GetSystemMenu")]
private static extern int GetSystemMenu(int hwnd, int bRevert); //獲取系統Menu


const int MF_BYPOSITION = 0x0400;


IntPtr ThisHandle; //當前Handle

public HELL()
{
InitializeComponent();
ThisHandle = this.Handle;
}

private void Form1_Load(object sender, EventArgs e)
{
//移除Close按鍵
RemoveCloseButtion();
timer1.Interval = 2000;
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
//取得當前獲取焦點的進程
IntPtr FocusedHandle = GetForegroundWindow();
if (FocusedHandle != ThisHandle) //如果非本進程獲取焦點的進程
{
SetForegroundWindow(ThisHandle); //設置本進程獲取焦點
}
}

//移除關閉按鍵
private void RemoveCloseButtion()
{
int lHwnd = (int)this.Handle ;
RemoveMenu(GetSystemMenu(lHwnd, 0), 6, MF_BYPOSITION);
}
}
}


lzsh0622 2009-09-28
  • 打赏
  • 举报
回复
使用SVCHOST宿主加载
gwf25sz 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dqsh00 的回复:]
WinForm 隐藏进程
好像有点玄~
[/Quote]

我也觉得,只是抱有希望~!
dqsh00 2009-09-28
  • 打赏
  • 举报
回复
WinForm 隐藏进程
好像有点玄~
gwf25sz 2009-09-28
  • 打赏
  • 举报
回复
2楼的仁兄,恭喜你,20分已经到手~!呵呵
gwf25sz 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lost_painting 的回复:]
1.如题,希望运行WinForm程序后,改程序在 任务管理器 内隐藏进程
<-- WINNT架構的系統,該功能很難辦到,除非注入DLL到其他進程(這個C#不擅長,而且沒界面)
<--也可以這樣,寫成服務的形式,用SVCHOST調用(這樣就沒界面了)

2.不知道是否能做的到, 如果不行,那么就换一个,该窗体永远置顶(无论打开什么窗口,该窗体永远在最顶层)
簡單,設置窗體屬性永遠置頂,然后內置一個Timer來檢測,只要自己失去焦點,就自動獲得焦點
[/Quote]
把那两个事件名给我~!
鸭梨山大帝 2009-09-28
  • 打赏
  • 举报
回复
1.如题,希望运行WinForm程序后,改程序在 任务管理器 内隐藏进程
<-- WINNT架構的系統,該功能很難辦到,除非注入DLL到其他進程(這個C#不擅長,而且沒界面)
<--也可以這樣,寫成服務的形式,用SVCHOST調用(這樣就沒界面了)

2.不知道是否能做的到, 如果不行,那么就换一个,该窗体永远置顶(无论打开什么窗口,该窗体永远在最顶层)
簡單,設置窗體屬性永遠置頂,然后內置一個Timer來檢測,只要自己失去焦點,就自動獲得焦點
gwf25sz 2009-09-28
  • 打赏
  • 举报
回复
- -

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧