如何获取后台窗口的截图

如何获取后台窗口的截图,第1张

/

获取前台或后台窗口的截图

1使用完之后必须调用::DeleteObject(bitmap); 注:bitmap=GetWindowBitmap(hWnd)

2PrintWindow不能是隐藏窗口。其实如果窗口隐藏了,你可以将其显示在屏幕之外,

再调用此函数获取截图,之后再把它重新隐藏恢复到原来的位置。

3如果是最小化的窗口,必须先还原再调用GetWindowBitmap函数,但此过程中前台窗口的焦点会丢失

4示例代码:

HWND hWnd=::FindWindow("Notepad",NULL);

::SetWindowPos(hWnd,NULL,-8000,-8000,0,0,

SWP_NOSIZE |SWP_NOACTIVATE |SWP_SHOWWINDOW );

HBITMAP bitmap=GetWindowBitmap(hWnd);

DrawBitmap( bitmap ,(HWND)NULL,10,10,1000,1000 );

::DeleteObject(bitmap);

::ShowWindow( hWnd ,SW_HIDE);

/

HBITMAP GetWindowBitmap(HWND hWnd)

{

RECT rect;

::GetWindowRect(hWnd,&rect);

HDC hScrDC=::GetDC(hWnd); //创建屏幕DC

HDC hMemDC=CreateCompatibleDC(hScrDC); //创建内存DC

HBITMAP bitmap=::CreateCompatibleBitmap(hScrDC,rectright-rectleft,rectbottom-recttop); //创建兼容位图

HBITMAP OldBitmap=(HBITMAP)::SelectObject(hMemDC,bitmap); //把位图选进内存DC

::PrintWindow(hWnd,hMemDC,0);

::SelectObject(hMemDC,OldBitmap);

::DeleteDC(hMemDC) ; //删除内存DC

::ReleaseDC(NULL,hScrDC) ; //释放屏幕DC

return bitmap;

}

GetWindowsRect获取的是窗口矩形范围,其中RECT的left和top就是窗口左上角的坐标,也就是你所说的窗口位置

GetWindowsRect返回的是屏幕坐标

楼上的应该是ScreenToClient,将屏幕坐标转换为窗口坐标

ClientToScreen是将窗口坐标转换为屏幕坐标

易语言如何取指定窗口句柄

如下参考:

1.首先,创建一个新程序,如下图所示。

2.在程序中绘制一个“按钮”,两个编辑框,两个标签,然后改变相应的名称来识别。

3.左击以下:剪辑(只有在没有点击的情况下才点击),程序,模块应用回,如下图。

4.在浏览窗口找到下载的超级模块位置,点击“超级模块”打开。

5.在模块下面会有一个额外的“超级模块”。

6.双击button1,在子例程“_button1_isclicked”下新建一个名为“I”的整数变量,然后编写如下代码:I=takehandle2(“记事本”)。编辑框1。Content=对文本的回答(I)。

7.写完以上代码,就可以得到“记事本”了。Exe”窗口句柄,然后,获取窗口标题!继续编码如下:编辑框2。内容=取窗口标题(取句柄2)(“记事本”)。Exe”))。

8.最后,调试并运行程序,就完成了。

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

BOOL WINAPI GetConsoleScreenBufferInfo(

_In_ HANDLE hConsoleOutput,

_Out_ PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo

);

To determine the current size and position of a screen buffer's window, use the

GetConsoleScreenBufferInfo

function This function also returns the maximum size of the window,

given the current screen buffer size, the current font size, and the

screen size The

GetLargestConsoleWindowSize

function returns the maximum window size given the current font and

screen sizes, but it does not consider the size of the console screen

buffer

public void SearchChild(string childName)

{

FormCollection fcs = ApplicationOpenForms;

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

{

if (fcs[i]Name == childName)//搜索子窗口的名字

{

foreach (Control c in fcs[i]Controls)

{

if (c is TextBox)

{

TextBox t = c as TextBox;

//这里你就可以保存t的Text了,你自己写吧,你是保存到某一个地方

}

}

}

}

}

显示器获取就是你显示器显示什么画面,直播间就显示什么画面,你是不是不想让大家看到桌面,这样的话可以用游戏源,如果黑屏你看看游戏里头有没有无边框这个选项,用无边框或者OBS里面用获取窗口

以上就是关于如何获取后台窗口的截图全部的内容,包括:如何获取后台窗口的截图、如何获得窗口位置VC、【易语言】 如何取指定窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存