VC关于获得窗体标题的具体做法

我大概知道是用GetForegroundWindow获得最前窗体句柄,再用getwindowtext获取标题可本人水平有限也没有MSDN,不知道函数的具体用法。假如把获得... 我大概知道是用GetForegroundWindow获得最前窗体句柄,再用getwindowtext获取标题 可本人水平有限也没有MSDN,不知道函数的具体用法。假如把获得的窗体标题保存在str字符中 请问具体代码怎么超做?万分感激!假设需要获得的窗体是个VB窗体!
谢谢2位 不过我想补充下 当我使用了.
CString str;
HWND pWnd =::GetForegroundWindow();
::GetWindowText(pWnd,(LPTSTR)&str,256);
SetDlgItemText(IDC_ADDRESS,str);
捕捉了窗体标题以后窗体被自动强行关闭 不知道是什么原因 答案满意者我这100分就献上了 谢谢 也感谢2位
展开
 我来答
6908270270
2008-05-21 · TA获得超过3427个赞
知道小有建树答主
回答量:1988
采纳率:0%
帮助的人:706万
展开全部
CString str;
HWND pWnd =::GetForegroundWindow();
::GetWindowText(pWnd,str.GetBuffer(256),256);
::SetDlgItemText(pWnd,IDC_ADDRESS,str);
悉己n
2008-05-21 · TA获得超过759个赞
知道小有建树答主
回答量:684
采纳率:100%
帮助的人:560万
展开全部
----- 试试修改后的 -------

CString wndtext;
HWND pWnd = GetForegroundWindow();
ShowWindow(pWnd, nCmdShow);
UpdateWindow(pWnd);
GetWindowText(pWnd,(LPTSTR)&wndtext,1000);

1000是要COPY的最多字符数,你可以自己指定

上面是VC,VB的例程如下

Dim len As Integer = API.GetWindowTextLength(hWnd)
If len > 0 Then
Dim b As New System.Text.StringBuilder(ChrW(0), len + 1)
Dim ret = API.GetWindowText(hWnd, b, b.Capacity)
If ret <> 0
Then
Return b.ToString Else
Throw New API.Win32APIException End If Else
Dim ex As New API.Win32APIException
If ex.NativeErrorCode <> 0 Then
Throw New API.Win32APIException Else Return ""
End If
End If
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiuye1pian
2008-05-21 · 超过17用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:32.4万
展开全部
// WindowText.cpp : アプリケーション用のエントリ ポイントの定义
//

#include "stdafx.h"
#include "stdio.h"
#include <malloc.h>

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
// TODO: この位置にコードを记述してください。
int nTextLen;
char *sTitle;
HWND hForegroundWindow;
hForegroundWindow = GetForegroundWindow();
nTextLen = GetWindowTextLength(hForegroundWindow) + 1;
if(nTextLen == 0) return 1;
sTitle = (char *)calloc(sizeof(char),nTextLen);
if(sTitle == NULL) return 1;
GetWindowText(hForegroundWindow,sTitle,nTextLen);
printf("%s",sTitle);
free(sTitle);
return 0;
}

相比前面那位的回答,我这个添加了自动判断长度而已
,他写的1000肯定也够了,但是毕竟常量不如动态的获得长度安全。

------------以下是回复---------
到底是获得结束后,那个窗体被关闭了?被获得的那个么?

--------------------------------------------CString str;
HWND pWnd =::GetForegroundWindow();
::GetWindowText(pWnd,(LPTSTR)&str,256);
SetDlgItemText(IDC_ADDRESS,str);
--------------------------------------------
这段代码有问题,不要用CString对象接收GetWindowText()返回的值。
改用我的那个方法试试看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式