我搜索事件或不存在,一种方法是知道屏幕是否关闭(电源选项 - 控制面板 - 关闭显示设置). 这些解决方案都不适合我. 所以我要么在某个地方错了,要么不合适. 在OR-ON">当屏幕/显示器关闭电源时如何获取事件? 我希望有一些轨道或解决方案. 问题是我不知道我在做什么,如果您能为我提供更多帮助,那就太酷了. 我做了这个,但它不起作用: internal static class NativeMethods { public static Guid GUID_MONITOR_POWER_ON = new Guid(0x02731015, 0x4510, 0x4526, 0x99, 0xE6, 0xE5, 0xA1, 0x7E, 0xBD, 0x1A, 0xEA); public const int DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000; public const int WM_POWERBR
以下是关于 screen 的编程技术问答
我正在尝试创建一个程序,该程序在光标下方获取窗口的句柄,显示一些有关它的数据,并在整个窗口顶部绘制一个填充的矩形(带有非常低的alpha).我正在使用C#和Winforms. 我已经成功地这样做了,但是问题在于我的抽奖方法在背景工作人员的循环中,它在窗口上或将鼠标移动到另一个窗口时,它不断地制作越来越多的矩形( - >矩形)一个仍然存在. 我尚未设法找到一种方法来清除绘制的矩形,因为它只是在屏幕上"是",并且不绑定到图形对象或任何内容. 我尝试使用某些本机方法,例如 [DllImport("User32.dll")] public static extern Int64 SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll")] public static extern bool InvalidateRect(IntPtr hWnd, In
使用.NET 3.5 winforms,我将如何使整个屏幕闪烁/眨眼之间仅一秒钟. 我有一个大屏幕,它仅是为了在受监视的设备上显示状态.当事件发生应查看的事件时,我希望它作为向用户通知. . 谢谢 解决方案 使用Tbischel所建议的内容.这是计时器的一些示例代码. Private TickCount As Integer = 0 Private Const NUMBER_OF_SECONDS As Integer = 1 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.BackColor = If(Me.BackColor = Color.White, Color.Red, Color.White) TickCount += 1 If TickCount >= NUMB
我正在开发一个应用程序,该应用程序可以记住用户对表单最后位于屏幕上的位置的偏好.在某些情况下,用户将将其放在辅助屏幕上,然后稍后将应用程序启动而无需第二个屏幕(有时在屏幕外显示表单).其他时候,用户会更改其分辨率,从而产生类似的效果. 我希望在form_shown事件处理程序中进行检查.基本上,我想确定表单是否完全不在屏幕上,以便我可以重新放置. 有建议吗? 解决方案 是否在屏幕上完全检查: public bool IsOnScreen( Form form ) { Screen[] screens = Screen.AllScreens; foreach( Screen screen in screens ) { Rectangle formRectangle = new Rectangle( form.Left, form.Top,
因此,我已经写了代码来创建一个新的Windows表单,该窗口是全屏,黑色和不透明度为80%以创建变暗效果的新窗口. 然后在上面显示另一种形式以显示进度. 代码当前看起来像这样: this.Enabled = false; frmDimScreen.BackColor = Color.Black; frmDimScreen.Opacity = .8; frmDimScreen.FormBorderStyle = FormBorderStyle.None; frmDimScreen.Size = new Size(splitContainerMain.Width - 4, splitContainerMain.Height - 2); frmDimScreen.StartPosition = FormStartPosition.Manual; frmDimScreen.ShowIcon = false; fr
我想根据屏幕及其分辨率更改形式的大小. 我想要的是跟踪这些屏幕更改以及在运行时更改屏幕分辨率的正确事件. 换句话说, 如果用户使用两个屏幕并将应用程序移动到另一个屏幕,则应跟踪并相应地更改尺寸,即如果新屏幕的分辨率低或分辨率更大,则尺寸会降低尺寸. 还要在同一屏幕上进行屏幕分辨率更改,并进行相应的更改. 我知道如何更改形式的大小,获取当前屏幕并分辨率,只需要这些事件来跟踪这些更改. 解决方案 遵循此答案,我决定改进它并添加更多信息以形成更完整的解决方案. 挑战 跟踪当前正在呈现哪个屏幕表单.如果用户将表单拖动到另一个监视器或拔下监视器的插头,则可以更改.如果用户手动将窗口拖动到另一个显示或直接更改分辨率,则该分辨率可以更改. 首先,跟踪表单位置.我们需要将表单上下文的移动事件挂钩,幸运的是,.NET框架提供了这样的事件,并将其命名为其次,我们需要挂接一个屏幕分辨率更改的事件,我们可以使用 systemevents.displayse
我试图弄清楚如何将指定的system.windows.forms.form移动到另一个主屏幕以外的另一个.我有Combobox,其中包含可用屏幕的列表,在该屏幕上选择了他喜欢的任何屏幕,我的应用程序应该将其一个窗口移至该屏幕上. 我的笔记本电脑上只有一个屏幕,没有外部监视器,因此我的计算机上的ComboBox仅提供一个选项.我认为最小化所需的窗口,将其在选定屏幕范围的中心移动左角,最大程度地将工作能够完成,对吗?我只是无法测试.这是一个好方法吗? 预先感谢! 解决方案 这是我所做的,作为一个简单的测试... 我添加了一个简单的包装器类,以便可以更改ToString Call上发生的事情(我只想看到组合框中列出的名称) private class ScreenObj { public Screen screen = null; public ScreenObj(Screen scr) { screen = scr;
通常您使用表单.可见检查是否完全可见窗口.但是有时在屏幕窗口上方在其他窗口下方,所以它确实是看不见的. 那么,如何真正可见窗口,如何检查c#Windows表单? 我想完成此操作:当我在键盘上单击ctrl+k时,我的窗口在屏幕上可见,它无能为力.但是,当它在其他窗户下面时,它会弹出到顶部(前面). 善意 解决方案 您可以致电但是,请注意,如果另一个程序处于活动状态,通常会简单地刷桌面按钮(取决于您从何处调用).这是Windows'应该不应该尝试围绕它工作. 其他解决方案 我搜索了网络的谷歌搜索,但是Coud找不到任何直接的答案来查看用户是否真正可见窗口的一部分.实际上,如果鼠标当前位于窗口的可见部分顶部,我实际上需要一种" hittest"表单.我以为我会分享花费几天才能完成的代码: public class VisibilityTester { private delegate bool CallBackPtr(int hwnd, int
如何确定我的应用程序在哪个屏幕上运行? 解决方案 这应该使您入门.在表单上获取一个按钮和列表框,然后将其放在button_click中: listBox1.Items.Clear(); foreach (var screen in Screen.AllScreens) { listBox1.Items.Add(screen); } listBox1.SelectedItem = Screen.FromControl(this); 答案在最后一行,请记住表单也是一个控制. 其他解决方案 System.Windows.Forms.screen类提供此功能. 例如: 屏幕S =屏幕.Frompoint(p); 其中p是您应用程序上某个地方的点(在屏幕坐标中). 其他解决方案 好吧,很多年已经过去了,这是公认答案的衍生产品,但这对我有用.此方法是表单类的成员. screen变量包含屏幕的属性,该屏幕的左上角是该方
我有一个C#Windows应用程序,如果用户将其移动到一个,我要确保将显示在第二监视器上.我需要保存主表单的大小,位置和窗口状态 - 我已经处理过 - 但是我还需要知道用户关闭应用程序时的屏幕. 我正在使用屏幕类来确定当前屏幕的大小,但是我找不到有关如何确定应用程序运行的屏幕的任何内容. 编辑:感谢您的回答,大家!我想确定窗口打开哪个监视器,以便我可以进行适当的范围检查,以防用户意外地将窗口放在查看区域外或更改屏幕大小以使表单不再完全可见. 解决方案 您可以获得使用此代码的一系列屏幕. Screen[] screens = Screen.AllScreens; 您还可以通过运行此代码( 是您所在的窗口) 来弄清楚自己在哪个屏幕上 Screen screen = Screen.FromControl(this); //this is the Form class 简而言之 msdn link ,不是有很多..我建议您自己在代码中弄乱. 其他解决
我需要一种将屏幕上当前窗口中心的方法. 因此,例如,如果用户按下按钮,我希望窗口在屏幕上居中. 我知道您可以使用startposition属性,但是除了启动应用程序时,我无法找到一种使用其他方法. 那么如何将表格集中在屏幕上? 解决方案 使用 form.centertoscreen(form.centertoscreen()方法. 其他解决方案 使用属性窗口 选择表单→转到属性窗口→选择"开始位置"→选择您想要的任何地方. 编程 Form form1 = new Form(); form1.StartPosition = FormStartPosition.CenterScreen; form1.ShowDialog(); 注意:不要直接从您的代码中调用form.centertoscreen().阅读在这里.. 其他解决方案 一行: this.Location = new Point((Screen.Primar
如何显示PNG,位图,JPEG文件等图像.在屏幕上没有窗口?我希望图像在没有框架周围没有框架的情况下出现,而不会在任务栏上注册为窗口.我想快速连续地将这些图像放在屏幕上.如果它与Windows XP和Windows 7兼容,我会喜欢它.我愿意下载外部模块.如果可能的话,请告诉我.谢谢! 解决方案 这将创建一个形状的窗口,并在同一文件夹中显示" image.png"的透明背景 import wx # Create a .png image with something drawn on a white background # and put the path to it here. IMAGE_PATH = 'image.png' class ShapedFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "Shaped Window",
如何在WP7上进行编程屏幕分辨率?以下是一堆在桌面WPF和Silverlight中完成相同工作的链接,但是它们都在电话SDK中. 有什么想法? 在/social.msdn.microsoft.com/forums/en-us/windowsphone7series/thread/f0639904-a368-a368-44db-9ddddddddddddd-efcaf8fc736e http://social. msdn.microsoft.com/forums/en-us/wpf/thread/6b6b832f-0dfd-428c-428c-84cd-b1b9e7f236cf 如何获得活动屏幕尺寸? 解决方案 看起来像application.current.rootvisual.rendersize将为您提供该信息. 其他解决方案 我使用此: this.ScreenWidth = System.Windows.Application.Current.
我使用以下代码打开和关闭监视器: [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); private const int WM_SYSCOMMAND = 0x0112; private const int SC_MONITORPOWER = 0xF170; private const int MonitorTurnOn = -1; private const int MonitorShutoff = 2; //Turn them off SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorShutoff); //Turn them on SendMessage(f.Handle, WM_SYSCOMMAND
我正在使用 sikuli 用于屏幕自动化.即,要根据其在屏幕上的外观单击GUI元素.这一切都可以,但是Sikuli对我来说有一个主要的劣势: 每个脚本的启动缓慢(因为每次加载了整个JVM). 以来,自去年以来,更多关于西库利的发展并不多,因此我正在寻找一种替代自动化工具.我需要的大票是屏幕意识:工具必须在屏幕上"查看"某些UI元素,而不是将鼠标移动到那里并单击. 比Sikuli更快,更维护工具的建议? 解决方案 如果您想自动化Windows下的任何内容,我会建议您start("messenger") write("my.email@domain.com", into="Email address") write("secret", into="Password") click("Sign in") 或类似地,为了输入凭据并自动登录Facebook,您需要做的就是执行以下命令: start("firefox") write("facebook.com"
我需要在屏幕或活动窗口上获得某些像素的颜色,我需要这样做 快速 .我已经尝试使用Win32GUI和CTYPES/WINDLL,但是它们太慢了.这些程序中的每一个都具有100个像素的颜色: import win32gui import time time.clock() for y in range(0, 100, 10): for x in range(0, 100, 10): color = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x , y) print(time.clock()) 和 from ctypes import windll import time time.clock() hdc = windll.user32.GetDC(0) for y in range(0, 100, 10): for x in range(0, 100, 10):
是否可以制作一个批处理文件,将鼠标/光标的位置设置为屏幕上的(x,y)坐标?如果是这样,那么是否可以单击该位置的东西?任何想法都会有所帮助!谢谢! 解决方案 否和是. 您不能将光标放在位置x,y的位置,y用纯批次,但是可以将光标替换为一行的主位置,然后您可以重写内容. 对于用批处理检测鼠标单击,您需要外部工具. 尝试查看 lingubender tan的批量工具 编辑:您 can 将光标放在纯批次上到家庭阶段,但是我需要用户的帮助,到现在为止 . 其他解决方案 否.您必须有一个分开的可执行文件才能为您执行此操作. 在vbscript中可能有可能. P.S.如果您在自动执行任务方面很有趣,我会下载类似鼠标录音机的内容,以便简单的内容.如果您要自动执行更复杂的任务,请在Autoit上进行射击.