c # 初学者 win32 API转型者,c# 的winform的消息机制是啥?以及它的主线,为啥没有消息循环??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c # 初学者 win32 API转型者,c# 的winform的消息机制是啥?以及它的主线,为啥没有消息循环??相关的知识,希望对你有一定的参考价值。

麻烦各位大神说的明白些,最好贴一些代码,本人c语言出身,比较接受不了很封装的东西,还望各位不要嫌我笨,本人MFC就学了很长时间。。。。。。。

参考技术A C#的消息是被封装成事件来处理的,面向对象处理所以不是循环机制。
一般可以用窗体变量属性来获取设置传递消息。来自:求助得到的回答
参考技术A winform就是win32,控件有个ProcessMessage就是用来处理消息的,只不过被封装的很底层而已,有一个NativeWindow可以包装控件接受消息并代理。

消息循环在Application类处理了,你不需要处理。本回答被提问者和网友采纳
参考技术B 正如上面所说。不用消息循环。在各种事件里面写就行了。比如单击 双击等事件里面 双击既可写自己的代码

C# .NET Framework API(非 Win32 API)中的 CreateProcessAsUser()

【中文标题】C# .NET Framework API(非 Win32 API)中的 CreateProcessAsUser()【英文标题】:CreateProcessAsUser() in C# .NET Framework API (NOT Win32 API) 【发布时间】:2015-06-26 01:20:46 【问题描述】:

当我使用 Win32 API CreateProcessAsUser() 在我的 C# .NET 项目中使用模拟用户执行程序时,它是成功的。

但我想使用 .NET Framework API 来实现。

有类似 System.Diagnostics.Process.Start() 的方法 但它与 CreateProcessAsUser() 并不完全相同。

函数 CreateProcessAsUser() 在第一个参数处接收“hToken”。因此,当我复制一个令牌并将其用于该功能时,我可以模拟一个用户并与该用户一起执行一个程序。

但是 System.Diagnostics.Process.Start() 方法没有提供这样的参数。

如果有人知道这个,请告诉我吗? 谢谢

【问题讨论】:

【参考方案1】:

ProcessStartInfo 在 NET 2.0 或更高版本中具有 UserName 和 Password 属性。

【讨论】:

我想使用另一个进程的进程令牌执行一个程序。我已经使用了你说的那个覆盖,但是因为权限被拒绝而失败了。【参考方案2】:

没有本地解决方案。很抱歉让你失望了。

正如 Microsoft 知识库所建议的那样,您只能通过 P/Invocation 来执行此操作(就像您所做的那样): https://support.microsoft.com/en-us/kb/889251

【讨论】:

以上是关于c # 初学者 win32 API转型者,c# 的winform的消息机制是啥?以及它的主线,为啥没有消息循环??的主要内容,如果未能解决你的问题,请参考以下文章

C# .NET Framework API(非 Win32 API)中的 CreateProcessAsUser()

如何使用 C# 拦截 Win32 API 调用?

C++ Win32 中的 C# DateTime.ToUniversalTime() [关闭]

C#调用Win32 api时的内存操作

C#调用Win32 api学习总结

C#调用Win32 API 的方法