如何将模态对话框变为非模态

当一个窗口弹出一个模态子对话框时,在模态子对话框未退出时,主对话框是无法访问的。就本质而言,一般是在弹出模态对话框时,将父窗口禁止了。

 

因此,可以采用如下方法,解除模态关系:

1、使用SPY++获取模态窗口的父窗口(即被禁止)句柄

2、使用第三方程序通过该句柄激活窗口即可。

 

因此,一些通过模态对话框强制输入密码进行锁定的程序是不安全的。

 

激活窗口的示例代码

#include <windows.h>

#include <stdio.h>

#include <stdlib.h>

 

void usage()

{

printf("usage:/nenabewindow hwnd/n");

printf("example:/n");

printf("/tenablewindow 0x008B07C2/n");

 

exit(-1);

}

 

int main(int argc, char** argv)

{

unsigned long ul;

 

if (argc != 2)

usage();

 

sscanf(argv[1], "%x", &ul);

if (!IsWindow((HWND)ul))

{

printf("invalid window handle value/n");

exit(-1);

}

 

EnableWindow((HWND)ul, TRUE);

 

return 0;

}

你可能感兴趣的:(如何将模态对话框变为非模态)