- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我不太明白 GetWindowText
如何在与调用者相同的线程上为窗口工作。如果 GetWindowText
阻塞直到消息被处理,线程如何调用 DispatchMessage
?它已在 GetWindowText
中被阻止。这是否意味着 GetWindowText
必须始终从与操作消息循环的线程不同的线程调用?
最佳答案
GetWindowText
只是 SendMessage(WM_GETTEXT)
的薄包装。
发送到窗口的消息总是在创建窗口的线程中处理(窗口具有“线程关联”)。发送消息不经过DispatchMessage
,而是GetMessage
(或PeekMessage
或MsgWaitForMultipleObjects
)直接调用窗口过程, 对于从另一个线程发送的消息。如果消息是从同一个线程发送的,SendMessage
将调用窗口过程。
The
SendMessage
function calls the window procedure for the specified window and does not return until the window procedure has processed the message.
和the GetMessage
documentation says :
Retrieves a message from the calling thread's message queue. The function dispatches incoming sent messages until a posted message is available for retrieval.
来自 the PeekMessage
docs :
Dispatches incoming sent messages, checks the thread message queue for a posted message, and retrieves the message (if any exist).
发送消息的行为之前已经在Raymond Chen's excellent blog, The Old New Thing上高亮显示了,所有 Win32 开发人员都应该订阅:
If you use any of the above send-type functions to send a message to a window that belongs to the sending thread, the call is made synchronously.
Recall that
SendMessage
delivers the message directly to the window procedure; the message pump never sees it.
当然,在 StackOverflow 上可以找到相关问题:
关于windows - 同步使用 GetWindowText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346508/
我尝试了以下代码,但它没有从前景窗口检索文本! procedure TForm1.Button1Click(Sender: TObject); var title : pansichar;
我正在编写一个小应用程序,我希望从 Chrome 浏览器中获取 URL。 为了首先检查 Chrome 浏览器是否打开,我使用以下代码: IntPtr WindowTitleTextPtr = Get
我正在尝试学习如何使用 visual studio 为 C++ 制作 GUI。但是我在使用 GetWindowText() 函数时遇到了一些问题。它不会将 LPTSTR 标题更改为文本框中的文本,并且
我想显示对话框的标题: HWND hWnd = ::GetActiveWindow(); char cc[101]; ::GetWindowText(hWnd,cc,100); MessageBox(
我在全局 CBT Hook 过程中使用以下代码: TCHAR title[256]; int getT = GetWindowText(hWnd, title, 256); if (getT == 0
我想弄清楚 GetWindowText 背后的系统调用是什么。我编写了一个简单的程序来调用 GetWindowText,并使用不同进程中的窗口句柄。 int CALLBACK WinMain(HINS
HWND ForeWindow = GetForegroundWindow(); wchar_t WindowTxt[1024] = { L'\0' }; GetWindowTextW(ForeWin
我不太明白 GetWindowText 如何在与调用者相同的线程上为窗口工作。如果 GetWindowText 阻塞直到消息被处理,线程如何调用 DispatchMessage?它已在 GetWind
我试图在我的 Win32 C++ 应用程序的 dialog 中获取 textedit 控件的文本。我正在使用以下代码块来获取它,并对其进行测试。 HWND hCarRegNo = GetDlgItem
我正在尝试使用以下代码获取当前事件窗口的名称: HWND winHandle = GetActiveWindow(); wchar_t buffer[512] = L""; i
如何通过GetWindowText获取不同语言的文本?我修改了一个白板项目。当用户在白板上输入时,onchange 函数将被调用并将文本显示在白板上。但是,当我键入日语文本(非系统默认语言)时,它显示
主窗口上有两个项目和按钮的组合框。组合框: HWND hCombo; hCombo = CreateWindow(L"COMBOBOX", L"combobox", WS_CHILD |
我试图在 C++/Java 中从外部窗口列出并获取编辑控件的内容,不幸的是没有成功。 当我调用 GetWindowText 或 GetWindowTextA 时,它在编辑控件上返回一个空值,我知道 G
我是 Windows 编程的新手。我正在尝试检索窗口的名称。 char NewName[128]; GetWindowText(hwnd, NewName, 128); 我需要使用 char[] 但它
我有这样的代码: IntPtr hwndGetValue = new IntPtr(67904); List windows = GetChildWindows(hwndGetValue); int
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
GetWindowText 函数的返回值为 documented as follows : If the function succeeds, the return value is the leng
我正在用 C 构建一个 Sudoku Win32 应用程序。我猜我对 GetWindowText() 有一些问题,它在未定义的次数内正常工作,但随后应用程序卡住,没有挂起(进程的状态是正常,没有“ap
我正在为我的“正在播放”插件获取 Spotify 的窗口标题,其功能为: GetWindowText(spotify_window_handle, title, title_length) 但输出包含
使用下面的代码 [DllImport("user32.dll", EntryPoint = "GetWindowText", ExactSpelling = false, CharSet =
我是一名优秀的程序员,十分优秀!