HWND句柄与字符串互转

15 篇文章 0 订阅
7 篇文章 0 订阅

  1. HWND -> std::wstring
    wstring hwnd2ws(HWND hWnd)
    	{
    		wchar_t wszHWndView[64] = {};
    		::wnsprintfW(wszHWndView, _countof(wszHWndView), L"%X", hWnd);
    		return wszHWndView;
    	}


  2. std::wstring -> HWND
    HWND ws2hwnd(const wstring& wstr)
    	{
    		__int64 i64tmp = __int64(0);
    		std::wstring wstrWnd = wstr;
    		if (wstrWnd[0] != L'0' && (wstrWnd[0] != L'x' || wstrWnd[0] != L'X'))
    			wstrWnd = L"0x" + wstrWnd;
    		::StrToInt64ExW(wstrWnd.c_str(), STIF_SUPPORT_HEX, &i64tmp);
    		return (HWND)i64tmp;
    	}


可以使用Qt的QWindow类和QRegularExpression类来实现搜索名称包含某个字符串的窗口并获取其窗口句柄的功能,具体代码如下: ```cpp #include <QApplication> #include <QWindow> #include <QRegularExpression> QWindow* findWindow(const QString& name) { QRegularExpression regexp(name, QRegularExpression::CaseInsensitiveOption); QList<QWindow*> windows = QApplication::allWindows(); for (auto window : windows) { if (regexp.match(window->title()).hasMatch()) { return window; } } return nullptr; } int main(int argc, char *argv[]) { QApplication a(argc, argv); // 搜索名称包含"Qt"的窗口 QWindow* window = findWindow("Qt"); if (window) { // 获取窗口句柄 WId hwnd = window->winId(); qDebug() << "Window HWND:" << hwnd; } else { qDebug() << "Window not found."; } return 0; } ``` 此代码首先定义了一个函数`findWindow`,该函数接受一个字符串参数`name`,用于指定要搜索的窗口名称中包含的字符串。函数内部使用`QApplication::allWindows`函数获取所有的Qt窗口,然后遍历所有窗口,如果窗口名称中包含指定的字符串,则返回该窗口的指针。 在main函数中,我们调用`findWindow`函数来搜索名称包含"Qt"的窗口,并获取该窗口的句柄HWND)。如果找到了窗口,则打印出其句柄;否则输出"Window not found."。 需要注意的是,获取窗口句柄的方法在不同的操作系统上是不同的。上述代码中使用的是Windows操作系统下的句柄HWND),如果在其他操作系统上运行,可能需要使用其他方法来获取窗口句柄
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值