none
C# 在WIN8.1下的Sendmessage RRS feed

  • 问题

  • 最近想最大化窗口,在WIN7下可以正常使用,但是WIN8.1发现以下问题:

    1.首先Process.Start启动设备管理器(或者磁盘管理,计算机管理,目前只是测试,随意选了一些外部的窗体)

    2.通过GetForegroundWindow()获取当前窗口的句柄

    3.SendMessage(mydisk, WM_SYSCOMMAND, SC_MAXIMIZE, 0)但是使用SC_MAXIMIZE的时候发现无法对以上最大化,但是函数返回的值是0。而且我用SC_CLOSE,还有SC_MINIMIZE都可以关闭和最小化

    4.执行SendMessage后用IsZoomed判断是没有最大化的

    请问是不是WIN8.1哪里有不一样的地方,还是有别的方法

    2014年6月21日 13:04

答案

  • 从windows vista开始系统的进程权限更加严格,如果你的程序的权限比对方进程的权限低,则你发送的消息会被过滤(除非该目标进程调用ChangeWindowMessageFilterEx指定过滤或不过滤某些消息 ),你可以看看UAC,ACE,UIPI相关的知识。
    • 已标记为答案 doublefire 2014年6月22日 7:24
    2014年6月22日 3:59

全部回复

  • 从windows vista开始系统的进程权限更加严格,如果你的程序的权限比对方进程的权限低,则你发送的消息会被过滤(除非该目标进程调用ChangeWindowMessageFilterEx指定过滤或不过滤某些消息 ),你可以看看UAC,ACE,UIPI相关的知识。
    • 已标记为答案 doublefire 2014年6月22日 7:24
    2014年6月22日 3:59
  • 比较好奇的是只有最大化的信息无法接收,但是感谢给了我方向,等下有空我去看看
    2014年6月22日 7:10
  • 刚才把WIN8换成管理员去发送最大化信息,结果可以了,看来可以向这方面寻找方法了
    2014年6月22日 7:22