求一个电脑控制两个显示器的小程序思路

hejialin666 2010-11-20 03:14:59
现在需要做一个窗体程序,
需求:在一个电脑上连接两个显示器A和B,A显示器在控制室,B显示器在大厅墙上挂着。
用我做的程序控制外面的B显示器播放的内容,在B播放的时候A显示器该做什么都行,等需要设置时,在A显示器上打开我的程序设置B要放的内容。
在网上看的资料是需要用到API函数SetWindowPos,这个怎么用?
有做过这方面的大虾指教一下!
...全文
261 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanqun1020 2011-10-17
  • 打赏
  • 举报
回复
楼主我也要做这个功能,请问你现在做好了吗,可以发给我吗?万分感谢
colorall 2010-11-22
  • 打赏
  • 举报
回复
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetWindowPos", SetLastError = true)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
如下面的X,Y就是控制位置的相当于location=(800,0)
SetWindowPos(hWndInsertAfter, (IntPtr)(0), 800, 0, 800, 600, 0x0040);
herty 2010-11-22
  • 打赏
  • 举报
回复

/// <summary>
/// 设置在第几个屏幕上启动。
/// </summary>
/// <param name="screen">屏幕(从0开始)</param>
/// <param name="form">要启动的程序。</param>
public void FormStartScreen(int screen, Form form)
{
if (Screen.AllScreens.Length <= 1 | Screen.AllScreens.Length < screen)
{
SetStartPosition(Screen.AllScreens[0], form);
}
else
{
SetStartPosition(Screen.AllScreens[screen], form);
}
}


private void SetStartPosition(Screen screen, Form form)
{
form.StartPosition = FormStartPosition.Manual;
form.Location = new System.Drawing.Point(screen.Bounds.X, screen.Bounds.Y);
form.Size = screen.WorkingArea.Size;
}

//窗体构造函数时调用
myPosition.FormStartScreen(1, this);

hejialin666 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 colorall 的回复:]
其实就是设置显示位置的问题
假如每个显示器的分辨率800*600,
设置窗体的location=(800,0),
就到另一个显示器上去了

然后通过窗体句柄用API SetWindowPos
控制把他拉回来,送回去。。。
[/Quote]
你说的“设置窗体的location=(800,0)”这个我理解了,
最后一句“控制把他拉回来,送回去。。。”这个不太理解。
我找到了SetWindowPos了,具体是用哪个方法或属性?有这方面的资料最好!
谢谢!
hejialin666 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 colorall 的回复:]
其实就是设置显示位置的问题
假如每个显示器的分辨率800*600,
设置窗体的location=(800,0),
就到另一个显示器上去了

然后通过窗体句柄用API SetWindowPos
控制把他拉回来,送回去。。。
[/Quote]
谢谢你,能不能说的具体一些?
hejialin666 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 herty 的回复:]
C# code

/// <summary>
/// 设置在第几个屏幕上启动。
/// </summary>
/// <param name="screen">屏幕(从0开始)</param>
/// <param name="form">要启动的程序。</param>
public vo……
[/Quote]
请问我是一个电脑插两个显卡,接两个显示器,能自动分出哪个显示器是第一个哪个是第二个吗?
hejialin666 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 colorall 的回复:]
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetWindowPos", SetLastError = true)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, ……
[/Quote]
谢谢,我现在就试一试!
colorall 2010-11-20
  • 打赏
  • 举报
回复
这个在给影院做大厅里显示的宣传片和播放计划时就这么做的
我做的是:设置B要播放的内容是从数据库里读出的
colorall 2010-11-20
  • 打赏
  • 举报
回复
其实就是设置显示位置的问题
假如每个显示器的分辨率800*600,
设置窗体的location=(800,0),
就到另一个显示器上去了

然后通过窗体句柄用API SetWindowPos
控制把他拉回来,送回去。。。

hejialin666 2010-11-20
  • 打赏
  • 举报
回复
自己顶一个!

110,538

社区成员

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

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

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