Windows 程序启动在指定屏幕

Windows 在多屏幕的情况下,EnumDisplayMonitors() 枚举所有显示器,通过 GetMonitorInfo() 可以取得指定显示器的相关信息,如物理显示区大小等。MonitorInfo 结构中保存着相应显示器的相关信息,如坐标、是否为主显示器等。该结构体中有个 dwFlags 变量表示该显示器是否为主显示器,当值为 MONITORINFOF_PRIMARY 时就说明是主显示器,根据这个值就可以区分主显示器和副显示器。
示例代码如下:

#include <Windows.h>
#include <iostream>
#include <vector>
 
BOOL CALLBACK EnumMonitor(HMONITOR handle, HDC hdc, LPRECT rect, LPARAM param) {
	std::vector<MONITORINFO> *list = (std::vector<MONITORINFO>*)param;
	MONITORINFO mi;
	mi.cbSize = sizeof(mi);
	GetMonitorInfo(handle, &mi);
	list->push_back(mi);
	return true;
}

int main(void) {
	// 获取当前显示器的数目
	int numbers = GetSystemMetrics(SM_CMONITORS);
	std::cout << "The current number of screens is:" << numbers << "\r\n" << std::endl;
	
	std::vector<MONITORINFO> monitor_list;
	EnumDisplayMonitors(NULL, NULL, EnumMonitor, (LPARAM)&monitor_list);
	for (size_t i = 0; i < monitor_list.size(); ++i) {
		RECT rect = monitor_list[i].rcMonitor;
		std::cout << "MONITORINFOF_PRIMARY:" << monitor_list[i].dwFlags << std::endl;
		std::cout << "left:" << rect.left << ",right:" << rect.right << ",bottom:" << rect.bottom << ",top:" << rect.top << std::endl;
		std::cout << "width:" << (rect.right - rect.left) << std::endl;
		std::cout << "height:" << (rect.bottom - rect.top) << "\r\n" << std::endl;
		if(monitor_list[i].dwFlags == 0){
			HWND hwnd = GetForegroundWindow();
			LONG last_style  = GetWindowLong(hwnd,GWL_STYLE);
			//设置全屏
			SetWindowLong(hwnd,GWL_STYLE,last_style | WS_POPUP | WS_MAXIMIZE);
			//移动到指定屏幕
			MoveWindow(hwnd, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, TRUE);
		}
	}
	getchar();
	return 0;
}

运行结果如下:
运行结果
移动窗口到指定位置的接口为:

BOOL MoveWindow( HWND hWnd,int x, int y, int nWidth, int nHeight,BOOL bRepaint = TRUE);

参数 hWnd 表示窗口的句柄;
参数 x,y 表示窗口的左上角起点坐标;
参数 nWidth,nHeight 表示窗口的高度和宽度;
最后一个参数 bRepaint 表示是否立即重绘。为 true 时系统会立即发送 WM_PAINT 到窗口程序(会调用UpdateWindow()函数),为 false 时则不会发生任何类型的重绘操作。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 如果你想在Windows上使用Nginx部署文件共享服务,你可以按照以下步骤操作: 1. 下载Nginx:从官方网站下载适用于Windows系统的Nginx安装文件。 2. 安装Nginx:双击下载的安装文件,按照屏幕提示进行安装。 3. 配置Nginx:打开Nginx配置文件(通常位于安装目录中的nginx.conf),添加如下代码片段: ``` server { listen 80; server_name localhost; location / { root html; autoindex on; } } ``` 4. 启动Nginx:打开Windows命令提示符,切换到Nginx安装目录,运行“start nginx”命令。 5. 测试服务:在浏览器中访问“http://localhost”,如果能够看到文件共享界面,则表示服务已成功启动。 请注意,以上步骤仅是一个大致的指导,具体操作还请参考Nginx官方文档。 ### 回答2: 在Windows上使用Nginx部署文件共享服务是可行的。以下是详细步骤: 1. 首先,确保已经安装并配置了Nginx。可以从Nginx官方网站下载Windows版本的安装程序,并按照提示进行安装。安装完成后,可以在“C:\nginx”目录下找到Nginx的安装文件。 2. 打开Nginx所在目录下的“conf”文件夹,找到并修改“nginx.conf”文件。在“http”块内添加以下内容来设置文件共享的路径和属性: ``` server { listen 80; server_name localhost; location /files { alias C:/path/to/shared/files; autoindex on; } } ``` 这段配置代码中,“/files”是访问文件共享服务的URL路径,可以根据需要进行修改。同时,“C:/path/to/shared/files”是真实文件存储路径,需要修改为实际存在的文件夹路径。 3. 保存并关闭“nginx.conf”文件。 4. 启动Nginx服务。在Nginx所在目录下打开命令提示符,执行以下命令: ``` start nginx ``` 这将启动Nginx服务并开始监听80端口。 5. 现在可以通过浏览器访问文件共享服务。在浏览器地址栏中输入“http://localhost/files”(或您修改的URL路径)。这将显示存储在指定文件夹中的文件列表,并允许用户下载和查看文件。 以上是在Windows上使用Nginx部署文件共享服务的简要步骤。在实际应用中,还需根据具体需求进行进一步配置和调整。 ### 回答3: 在Windows上使用Nginx部署文件共享服务可以提供可靠、高效的文件共享服务。具体步骤如下: 1. 下载Nginx for Windows:首先,在Nginx官方网站上下载适用于Windows操作系统的Nginx安装包,并解压到目标文件夹中。 2. 配置Nginx.conf文件:打开Nginx安装目录中的nginx.conf文件,根据自己的需求进行配置。在http部分添加如下配置: ``` http { server { listen 80; server_name localhost; location / { autoindex on; root {文件共享目录}; } } } ``` 其中,设置`autoindex on`可以在浏览器中直接访问共享文件夹,`root`指定了文件共享的目录。 3. 启动Nginx服务:双击Nginx安装目录中的nginx.exe文件,或在命令行中执行`nginx`命令,即可启动Nginx服务。 4. 在浏览器中访问:在浏览器中输入`http://localhost`,即可访问Nginx部署的文件共享服务。此时,您可以在浏览器中直接查看、上传和下载共享文件。 通过以上步骤,您就成功在Windows上使用Nginx部署了文件共享服务。您可以根据需要进行进一步的配置和优化,例如添加权限控制、启用HTTPS等,以提高文件共享的安全性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ByteSaid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值