c#如何调用api函数设置进程的优先级并查看优先级?

cxfcxf8 2008-05-05 05:12:43
由于在wince里边Process没有设置有优先级的函数。只能用api实现。该如何实现??找了下需要几个dll文件,但是不太会用。以前没怎么接触过这方面的内容。
...全文
746 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
曲滨_銘龘鶽 2008-05-06
  • 打赏
  • 举报
回复
不清楚就是知道有一个 SetThreadPriority 可以设置线程的!
.net 是 Thread.Priority

进程的不了解windows 下是 SetPriorityClass
ce 不知道行不?自己google找找吧
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
是不是这个线程的优先级就不用给他调了啊??
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
是啊。上边的文章我也看到过。不过就是不知道该如何调优先级。或者说优先级能调吗?
不知道如何是好了。调的话用什么api函数还是什么其他的啊??
wangsaokui 2008-05-06
  • 打赏
  • 举报
回复
Windows CE.NET不像其他Windows操作系统将进程分为不同的优先级类,Windows CE.NET只将线程分为256个优先级。0优先级最高,255最低,0到248优先级属于实时性优先级。0到247优先级一般分配给实时性应用程序、驱动程序、系统程序。249到255优先级中,251优先级(THREAD_PRIORITY_NORMAL)是正常优先级。255优先级(THREAD_PRIORITY_IDLE)为空闲优先级。249优先级(THREAD_PRIORITY_HIGHEST)是高优先级。248到255优先级一般分配给普通应用程序线程使用。具体分段见下表:
 优先级范围 分配对象
0-96 高于驱动程序的程序
97-152 基于Windows CE的驱动程序
153-247 低于驱动程序的程序
248-255 普通的应用程序
wangsaokui 2008-05-06
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1154
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ericzhangbo1982111 的回复:]
o ~ce阿
mobile6.0?

是不能设置优先级别的
你那三个函数只是取得进程用的,无法设置权限。

而且wince的内核是通过nk.exe访问其他进程的。
你需要提高优先级有用吗?
[/Quote]
不太明白是怎么回事啊??
没法改变优先级吗??那那个优先级是怎么来的啊?
ericzhangbo1982111 2008-05-06
  • 打赏
  • 举报
回复
o ~ce阿
mobile6.0?

是不能设置优先级别的
你那三个函数只是取得进程用的,无法设置权限。

而且wince的内核是通过nk.exe访问其他进程的。
你需要提高优先级有用吗?
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
还好有楼上这些哥们罩着啊。。。
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
我试下啊。看看wince里边SetThreadPriority设置线程优先级行不行.
发现学无止境了。新的问题总是层出不穷....
gomoku 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cxfcxf8 的回复:]
这个我试过了,在windows上边能行。但是在wince上边不行。难道真如9楼哥们所说要设置主线程的优先级??
[/Quote]
进程优先级只是一种提示,具体落实还要到线程上。按boblaw所建议的就很好阿。

cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gomoku 的回复:]
引用 7 楼 cxfcxf8 的回复:
//在帖子里边找了一个,但是不太会用。也不太清楚是不是这几个api函数?

那是用来遍历所有进程的。

你先试试.NET能不能这样:

C# code
System.Diagnostics.Process p = ...;
p.PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal; //<-----




不行的话,或许你可以用这个API:
BOOL SetPriorityClass(HANDLE hProcess,DWORD dwPriorityClass);

[DllIm…
[/Quote]

p.PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal;
这个我试过了,在windows上边能行。但是在wince上边不行。难道真如9楼哥们所说要设置主线程的优先级??
心情解码 2008-05-06
  • 打赏
  • 举报
回复
:)



-
gomoku 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cxfcxf8 的回复:]
//在帖子里边找了一个,但是不太会用。也不太清楚是不是这几个api函数?
[/Quote]
那是用来遍历所有进程的。

你先试试.NET能不能这样:

System.Diagnostics.Process p = ...;
p.PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal; //<-----


不行的话,或许你可以用这个API:
BOOL SetPriorityClass(HANDLE hProcess,DWORD dwPriorityClass);

[DllImport("Kernel32.dll")]
bool SetPriorityClass(IntPtr hProcess,int dwPriorityClass);
boblaw 2008-05-06
  • 打赏
  • 举报
回复
CreateToolhelp32Snapshot與Process32First、 Process32Next結合使用是獲取系統進程快照。與你的問題無關。

wince應該是沒有提供設置進程優先級的API。你可以嘗試提高該進程的主線程的優先級(SetThreadPriority)
ziseliuxingzh 2008-05-06
  • 打赏
  • 举报
回复
顶上去-----
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复

[StructLayout(LayoutKind.Sequential)]
public struct ProcessEntry32
{
public uint dwSize;
public uint cntUsage;
public uint th32ProcessID;
public IntPtr th32DefaultHeapID;
public uint th32ModuleID;
public uint cntThreads;
public uint th32ParentProcessID;
public int pcPriClassBase;
public uint dwFlags
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
public string szExeFile;
};

//返回0的原因是因为dwSize值。
//你在调用Process32First之前给他设置值 1024试试

//另外这3个方法在wince中的toolhelp.dll中。

[DllImport( "toolhelp.dll ")]
public static extern IntPtr CreateToolhelp32Snapshot(uint dwFlags, uint th32ProcessID);
[DllImport( "toolhelp.dll ")]
public static extern int Process32First(int snaph, ref PROCESSENTRY32 lppe);
[DllImport( "toolhelp.dll ")]
public static extern int Process32Next(IntPtr snaph, ref PROCESSENTRY32 lppe);

//在帖子里边找了一个,但是不太会用。也不太清楚是不是这几个api函数?
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
上边的不太行。wince不支持这个。从google找了下也就只有这个api一条道了。不太会用这个。
cxfcxf8 2008-05-06
  • 打赏
  • 举报
回复
看来是不太好解决啊?
cxfcxf8 2008-05-05
  • 打赏
  • 举报
回复
呵呵...
yagebu1983 2008-05-05
  • 打赏
  • 举报
回复
帮你顶了!!

110,534

社区成员

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

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

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