如何根据控件名称获取句柄和控件属性。
使用C++Builder 6如何根据控件名称获取句柄。并且根据获取到的句柄,获取控件的TEXT,CAPTION,DATETIME等属性,把获取出的内容添加到一个MEMO里面
[解决办法]
为什么不能通过句柄?
既然你已经知道了控件的名称什么的
那就用findwindow 那些去抓句柄 然后给上面的控件填值
[解决办法]
函数原型:
HWND FindWindow ( LPCSTR lpClassName, LPCSTR lpWindowName );
编辑本段参数表:
lpClassName 指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。 如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。 lpWindowName 指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
编辑本段返回值:
如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。 如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。
编辑本段如何在C#中使用
导入库:user32.lib 头文件:winuser.h ***.Net 中运用 命名空间 using System.Runtime.InteropServices; 导入库 [DllImport("user32.dll")] 函数原型 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 参数说明 lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类 lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收 任何窗口标题 返回值 :句柄
编辑本段如何在C++中使用
头文件:afxwin.h 例子: // activate an application with a window with a specific class name BOOL CMyApp::FirstInstance() { CWnd *pWndPrev, *pWndChild; // Determine if a window with the class name exists... pWndPrev = CWnd::FindWindow(_T("MyNewClass"), NULL); if(NULL != pWndPrev) { // If so, does it have any popups? pWndChild = pWndPrev->GetLastActivePopup(); // If iconic, restore the main window if(pWndPrev->IsIconic()) pWndPrev->ShowWindow(SW_RESTORE); // Bring the main window or its popup to the foreground pWndChild->SetForegroundWindow(); // and you are done activating the other application returnFALSE; } returnTRUE; }
[解决办法]
要用
EnumChildWindows
BOOL EnumChildWindows( HWND hWndParent,
WNDENUMPROC lpEnumFunc,
LPARAM lParam
);
[解决办法]
呵呵呵呵,呵呵呵呵。
楼主是通过什么手段知道另外进程中的控件的名称的?