我在Android 程序的xml文件中加载的自定义ImageView控件中如何访问Activity中的其他控件的句柄

我在Android 程序的xml文件中加载的自定义ImageView控件中如何访问Activity中的其他控件的句柄,第1张

用着个试试:

mTextView01 = (TextView)TalkRoundSpinViewthisfindViewById(RidtextView01);

自己想办法传进来一个Activity或Context

View view = Viewinflate(context或Activity, Rlayout, null);再

mTextView01 = (TextView)viewfindViewById(RidtextView01);

#include <Windowsh>

#include <vector>

using namespace std;

//用于EnumWindows的回调函数

BOOL CALLBACK EnumProc(HWND hwnd,LPARAM lparam)

{

vector<HWND> pvec = (vector<HWND>)lparam;

pvec->push_back(hwnd);

return TRUE;

}

void main()

{

vector<HWND> vec;

EnumWindows(EnumProc,(LPARAM)&vec);

}

这个是win32控制台程序项目里写的,如果要在MFC下的话,只需包含

#include <vector>并using namespace std;

EnumProc定义在前面,按钮响应函数里添加main函数里的那两句就可以了。

我这里测试获取到了407个句柄

句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息、处理程序):0。获取所在类窗口的句柄:this->m_hwnd1。主窗口的句柄:无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:AfxGetMainWnd()->m_hWnd,如:::SendMessage(AfxGetMainWnd()->m_hWnd , WM_MY_DOSOME , 0 ,(LPARAM)i);在窗口类中this->m_hWnd或者this->GetSafeHwnd()2。子窗口句柄:用FindWindow,(只要知道子窗口的名字即可)如: ::FindWindow(NULL,WindowsName) 返回找到的窗口的句柄寻找当前窗口是否在运行windowname的程序,该名字为窗口名字,如:CWnd pWnd=FindWindow(NULL,_T("清芝--支票机"));//GetSafeHwnd函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。通过下面的例子来看其理由

先写一个定时获取前台窗口的程序运行着,然后打开游戏运行一下再退出,接着看看记录下来的窗口类,排除那些你认识的比如资源管理器等,再从剩下的中找一个最像的,期间最好不要打开别的窗口,然后写一个后台程序,再运行游戏,试着对它进行一些 *** 作看有没有效果。

通过WindowsAPI函数可以获取光标所在处的窗口的句柄。在Windows *** 作系统中,可以使用API函数“HWNDWindowFromPoint(POINTPoint)”获取当前虚拟光标的位置,返回值是一个BOOL类型,表示函数执行是否成功。如果函数执行成功,就可以获取到虚拟光标的位置,可以通过该位置来获取句柄。

上一篇文章和大家聊到了IMS在SystemServer进程native层中的原理,本文来聊聊App进程是怎么监听IMS分发出来的输入信号的

还记得我写过WMS系列文章 WMS在Activity启动中的职责 添加窗体(三) 中,提到了App第一次渲染的时候会通过ViewRootImpl的addWindow方法,在WMS中为当前的Activity中的PhoneWindow添加一个对应的WindowState进行管理。

让我们先看看ViewRootImpl中做了什么。

如果遇到什么问题,欢迎来到本文 >

[DllImport("user32dll", EntryPoint = "FindWindow", CharSet = CharSetAuto)]

static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

/// <summary>

/// 获取有名字窗体句柄

/// </summary>

/// <param name="caption">窗体名</param>

/// <param name="delay">循环查询次数</param>

/// <param name="maxTries">停顿时间</param>

/// <returns>句柄 IntPtr</returns>

static IntPtr FindMainWindowHandle(String caption,int delay,int maxTries)

{

IntPtr mwh = IntPtrZero;

bool foundWindow = false;

int attempts = 0;

do

{

mwh = FindWindow(null, caption);

if (mwh == IntPtrZero)

{

ConsoleWriteLine("Form not yet found\n");

ThreadSleep(maxTries);

++attempts;

}

else

{

ConsoleWriteLine("Form has been found");

foundWindow = true;

}

}

while(!foundWindow && attempts<delay);

if(mwh != IntPtrZero)

return mwh;

else

throw new Exception("Coule not find Main Window");

//调用FindMainWindowHandle()方法以获取窗体句柄,例:

IntPtr wHandle= FindMainWindowHandle("窗体名",10,100);

ConsoleWriteLine("窗体句柄: " + wHandle);

以上就是关于我在Android 程序的xml文件中加载的自定义ImageView控件中如何访问Activity中的其他控件的句柄 全部的内容,包括:我在Android 程序的xml文件中加载的自定义ImageView控件中如何访问Activity中的其他控件的句柄 、50分,如何获取桌面所有窗口的句柄、如何获得这个窗口的CWnd类或HWND句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9423008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存