怎样获得其它程序子窗口的句柄

怎样获得其它程序子窗口的句柄,第1张

如果窗口是现有程序的,使用vs自带的spy++获取窗口的相关信息,然後使用winapi获取句柄,具体参考spy++的使用方法和winapi的使用

findwindow(

lpclassname,

{窗口的类名}

lpwindowname:

pchar

{窗口的标题}

):

hwnd;

{返回窗口的句柄;

失败返回

0}

//findwindowex

findwindow

多出两个句柄参数:

findwindowex(

parent:

hwnd;

{要查找子窗口的父窗口句柄}

child:

hwnd;

{子窗口句柄}

classname:

pchar;

{}

windowname:

pchar

{}

):

hwnd;

如果窗口是你的程序动态生成的,使用如下语句

form

_form=new

form();

intptr

_p

=

_formhandle;

_p就是你实例化的窗口句柄

你是想把资源管理器或我的电脑里的文件直接拖动到你的程序里然后直接打开吧。

如果你是非对话框的MFC程序,需要在CMainFrame::OnCreate

里添加

DragAcceptFiles();

然后你再拖动文件就能看见变化了。

然后在

Doc的OnOpenDocument里添加处理文件的代码:

例如:

BOOL CXXXDoc::OnOpenDocument(LPCTSTR lpszPathName)

{

if (!CDocument::OnOpenDocument(lpszPathName))

return FALSE;

// TODO: Add your specialized creation code here

CString str;

strFormat("拖动的文件为:%s", lpszPathName);

AfxMessageBox(str);

return TRUE;

}

如果你要得到拖动文件的消息,那么可以在CMainFrame中捕获WM_DROPFILES试试。

例如:响应WM_DROPFILES消息:

void CMainFrame::OnDropFiles(HDROP hDropInfo)

{

// TODO: Add your message handler code here and/or call default

const int fileCount = DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);

ASSERT(fileCount >= 1);

TCHAR fileName[MAX_PATH] = { 0 };

CString strFile;

for (int i = 0; i < fileCount; ++i)

{

DragQueryFile(hDropInfo, i, fileName, MAX_PATH);

strFile += fileName;

strFile += ",";

}

CString str;

strFormat("拖动的文件为:%s", strFile);

MessageBox(str);

CFrameWnd::OnDropFiles(hDropInfo);

}

用win32模块(第三方模块需要下载安装)

方法win32guiFindWindow()#获取每个应用程序的窗口

win32guiFindWindowEx()#获取上面窗口下的控件 获取控件可以用spy++这款软件

win32guiSendMessage()#输入‘字符’

win32guiPostMessage()#按下发送按钮,具体参数网上找找 有问题可以问下

以上就是关于怎样获得其它程序子窗口的句柄全部的内容,包括:怎样获得其它程序子窗口的句柄、如何实时响应鼠标按下后拖动的消息、python获取打开的应用窗口输入字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存