【发布时间】:2015-08-13 06:33:24
【问题描述】:
我正在尝试使用 win32 API 在按钮单击事件上打开已打开的记事本应用程序的“打开文件对话框”。代码如下:
void onButonClicked()
{
HWND hWnd = ::FindWindow(NULL, L"Untitled - Notepad");
HMENU hWndMenu = ::GetMenu(hWnd);
HMENU hWndSubMenu = ::GetSubMenu(hWndMenu, 0);
SendMessage(hWnd, WM_COMMAND, GetMenuItemID(hWndSubMenu, 1), 0);
}
这可以正常工作并打开“打开对话框”。但它冻结了我的应用程序。如果我尝试用鼠标移动我的应用程序窗口,它会挂起并在标题栏上显示“无响应”。我也尝试在单独的线程中打开此对话框窗口,但没有运气。如何解决这个问题?
【问题讨论】:
-
打开文件对话框不应该是模态对话框吗?
-
我是 win32 API 的新手。是不是想说有更好的打开Open Dialog的方式?
-
打开打开对话框后,我想在没有用户干预的情况下打开一个带有win32代码的文件。但是,由于应用程序在显示打开对话框后冻结,下一段代码不会执行。
-
你在尝试什么。想要控制 NOTEPAD?
-
停止黑客攻击,开始开发可靠的代码。模块 1:向UI Automation 介绍自己。