c#调用 Win32Api之错误处理
来源:互联网 发布:企业名录数据库 编辑:程序博客网 时间:2024/05/19 11:49
问题:使用c#调用win32 Api时,在32位win7下执行正常。win10 64位下执行无效,不报错。
源代码:
public static void SetWndLong() { Help.DebugWrite(this, "EditPWDWindow..."); Help.DebugWrite(this, "Style Chenge...{0}", Style); Style &= ~Win32Api.ES_PASSWORD; //Win32Api.SetWindowLong(HWnd, Win32Api.GWL_STYLE, Style); this.RunApi(() => Win32Api.SetWindowLongPtr(HWnd, Win32Api.GWL_STYLE, Style)); Help.DebugWrite(this, "Style Chenge.[{0}[{1}]", Style, Win32Api.GetWindowLong(pHWnd, Win32Api.GWL_STYLE)); } public static void RunApi(this object o, Action run) { run(); Help.DebugWrite(null, Help.LongToString(Marshal.GetLastWin32Error(),"err")); }
win7 32位结果如下:
121032.8284 tId[ 1] o[0x116f450,18281552D] Style Change...1073807520121032.8284 tId[ 1] err0x 5, 5D121032.8284 tId[ 1] o[0x116f450,18281552D] Style Change.[1073807488][1073807520][0]
结果显示SetWindowLong并未生效。
解决方案:在win10下使用管理员权限运行visual studio 2017。尽管输入显示未更改,但实际已经可以通过SetWindowText改变Edit内容。
阅读全文
0 0
- c#调用 Win32Api之错误处理
- 关于c#调用win32api
- C#中调用WIN32API函数
- Win32API调用错误号与信息
- 在C#中能否直接调用WIN32API
- C#调用Win32API的常见问题点
- C#调用win32API画图函数示例
- C#可以直接调用的Win32API
- C#引入Win32API:常用Win32API
- Win32API调用错误号与信息(1-999)
- Win32API调用错误号与信息(1000-1999)
- Win32API调用错误号与信息(2000-2999)
- Win32API调用错误号与信息(3000-3999)
- Win32API调用错误号与信息(4000-4999)
- Win32API调用错误号与信息(5000-5999)
- Win32API调用错误号与信息(6000-6999)
- Win32API调用错误号与信息(7000-7999)
- Win32API调用错误号与信息(8000-8999)
- 从一个例子看Python3.x中序列解包
- PHP数组缓存:三种方式JSON、序列化和var_export的比较
- [JAVA]反射机制按顺序获取getDeclaredFields()/getDeclaredMethods()
- 第11周项目5
- Centos 6.x grub 进入系统
- c#调用 Win32Api之错误处理
- 微服务在互联网公司演进过程
- 使用go写了一个简单ini解析器
- Redis之 集合(Sets)
- 小周seo:百度是怎么判断那些是优质内容
- android 解决oppoR9s只请求一次联网权限问题
- Leetcode:628. Maximum Product of Three Numbers
- U盘读写基础知识
- opencv寻找已知物体