c#中如何设置多显示器的主屏幕

蓝天居士
《人工智能从入门到进阶实战》作者
博客专家认证
2015-12-01 03:25:51
项目中有要求能够设置主屏幕(目前是1台显示器,一台自己的设备),在网上查找资料,得到的绝大多数都是C++实现的,跑例程也确实能够跑通,但是网上C#的实现例程却不能实现此功能。
目前主要问题如下:
C#中调用C++ dll中的“ChangeDisplaySettingsEx”函数实现设置主屏幕功能,但是C++中最后一次调用“ChangeDisplaySettingsEx”函数提交修改的实现为:ChangeDisplaySettingsEx (NULL, NULL, NULL, 0, NULL);
这是与msdn上的说明对应的。
ChangeDisplaySettingsEx 函数原型为:
LONG ChangeDisplaySettingsEx(
_In_ LPCTSTR lpszDeviceName,
_In_ DEVMODE *lpDevMode,
HWND hwnd,
_In_ DWORD dwflags,
_In_ LPVOID lParam
);


其中第二个参数为结构体,在C#调用时似乎无法传入null(提示无法将null转换为DEVMODE类型),而此参数如果不传null,提交修改的功能应该无法实现(已经在C++中试过)。

不知是否有人用C#实现过设置主屏幕功能,请提供帮助。非常感谢。
...全文
538 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝天居士 2015-12-02
  • 打赏
  • 举报
回复
C#中调用C++库: [DllImport("user32.dll")] public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, [In] ref DEVMODE lpDevMode, IntPtr hwnd, int dwFlags, IntPtr lParam);
Poopaye 2015-12-02
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
传IntPtr.Zero
哪有ref
Poopaye 2015-12-02
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
传IntPtr.Zero
ref
蓝天居士 2015-12-02
  • 打赏
  • 举报
回复
提示错误: 错误 CS1503: 参数 2: 无法从“ref System.IntPtr”转换为“ref Multi_Monitor.Form1.DEVMODE”
Poopaye 2015-12-01
  • 打赏
  • 举报
回复
传IntPtr.Zero

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧