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位 展开
谢谢2位 不过我想补充下 当我使用了.
CString str;
HWND pWnd =::GetForegroundWindow();
::GetWindowText(pWnd,(LPTSTR)&str,256);
SetDlgItemText(IDC_ADDRESS,str);
捕捉了窗体标题以后窗体被自动强行关闭 不知道是什么原因 答案满意者我这100分就献上了 谢谢 也感谢2位 展开
3个回答
展开全部
----- 试试修改后的 -------
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 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()返回的值。
改用我的那个方法试试看。
//
#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()返回的值。
改用我的那个方法试试看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询