c#调用 Win32Api之错误处理

问题:使用c#调用win32 Api时,在32位win7下执行正常。win10 64位下执行无效,不报错。源代码: public static void SetWndLong() { Help.DebugWrite(this, "EditPWDWindow..."); Help.DebugWrite(this, "Style Chenge...{0}", St
摘要由CSDN通过智能技术生成

问题:使用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...1073807520
121032.8284    tId[ 1]    err0x  5,  5D
121032.8284    tId[ 1]    o[0x116f450,18281552D]    Style Change.[1073807488][1073807520][0]

结果显示SetWindowLong并未生效。

解决方案:在win10下使用管理员权限运行visual studio 2017。尽管输入显示未更改,但实际已经可以通过SetWindowText改变Edit内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值